Sto usando Gradle per automatizzare le attività di Hadoop. Quando chiami Hadoop, devo essere in grado di passare il percorso ad alcuni vasi da cui dipende il mio codice, in modo che Hadoop possa inviare tale dipendenza durante la fase di mappa/riduzione.Modo più pulito in Gradle per ottenere il percorso di un file jar nella cache delle dipendenze gradle
Ho capito qualcosa che funziona, ma mi sembra complicato e mi chiedo se c'è una funzionalità che mi manca da qualche parte.
Questa è una versione semplificata del mio script Gradle che ha una dipendenza sul vaso solr 3.5.0, e un compito findSolrJar
che consente di scorrere tutti i file jar nella configurazione per trovare quella giusta:
apply plugin: 'groovy'
repositories {
mavenCentral()
}
dependencies {
compile 'org.apache.solr:solr-solrj:3.5.0'
}
task findSolrJar() {
println project.configurations.compile*.toURI().find { URI uri -> new File(uri).name == 'solr-solrj-3.5.0.jar'}
}
l'esecuzione di questo mi dà output come questo:
gradle findSolrJar
file:/Users/tnaleid/.gradle/caches/artifacts-8/filestore/org.apache.solr/solr-solrj/3.5.0/jar/74cd28347239b64fcfc8c67c540d7a7179c926de/solr-solrj-3.5.0.jar
:findSolrJar UP-TO-DATE
BUILD SUCCESSFUL
Total time: 2.248 secs
c'è un modo migliore per fare questo?
":" non funziona su Windows. L'uso di 'File.pathSeparator' può risolverlo. – Chilloutman
@Chilloutman Sono d'accordo. Non codificare il separatore del percorso. –