私はGradleを使ってHadoopタスクを自動化しています。 Hadoopを呼び出すときは、コードが依存するいくつかのjarファイルへのパスを渡す必要があります。そのため、Hadoopはmap/reduceフェーズでその依存関係を送信できます。Gradleでもっともきれいな方法でgradle依存キャッシュのjarファイルへのパスを取得する
私はうまくいくものを見つけましたが、それは面倒な気がしています。どこかで見つからない機能があるかどうかは疑問です。
これは、構成内のjarファイルのすべてを反復処理が正しいものを見つけるために、というのが私のGradleのSolr 3.5.0 jarファイルに依存しているスクリプト、および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私は同意します。パス区切りをハードコードしないでください。 –