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