Я использую Gradle, чтобы помочь автоматизировать задачи Hadoop. При вызове Hadoop мне нужно пройти путь к некоторым банкам, от которых зависит мой код, чтобы Hadoop мог отправлять эту зависимость во время фазы карты/уменьшения.
Я разобрался с чем-то, что работает, но он чувствует себя грязным, и мне интересно, есть ли какая-то функция, которую я где-то не хватает.
Это упрощенная версия моего Gradle script, которая имеет зависимость от jar solr 3.5.0 и задачи findSolrJar
, которая выполняет итерацию через все файлы jar в конфигурации, чтобы найти правильный
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'}
}
running this дает мне вывод следующим образом:
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
Есть ли лучший способ сделать это?