Я использую Gradle для автоматизации задач Hadoop. При вызове Hadoop мне нужно пройти путь к некоторым баночкам, от которых зависит мой код, чтобы Hadoop мог отправить эту зависимость во время фазы map/reduce.Самый чистый путь в Gradle, чтобы получить путь к файлу jar в кэше зависимостей gradle
Я понял что-то, что работает, но он чувствует себя грязным, и мне интересно, есть ли какая-то особенность, которую я где-то не хватает.
Это упрощенная версия моего Gradle сценария, который имеет зависимость от Solr 3.5.0 баночку и findSolrJar
задача, которая перебирает все файлы фляги в конфигурации, чтобы найти правильный один:
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
есть ли лучший способ сделать это?
Между прочим, ':' не работает на Windows. Использование 'File.pathSeparator' может исправить это. – Chilloutman
@Chilloutman Я согласен. Не переустанавливайте разделитель пути. –