jar - Gradle 中获取 gradle 依赖项缓存中 jar 文件路径的最简洁方法

标签 jar hadoop dependencies gradle

我正在使用 Gradle 来帮助自动化 Hadoop 任务。调用 Hadoop 时,我需要能够将它传递到我的代码所依赖的一些 jar 的路径,以便 Hadoop 可以在 map/reduce 阶段发送该依赖项。

我找到了一些可行的方法,但感觉很乱,我想知道是否有什么地方缺少某个功能。

这是我的 gradle 脚本的简化版本,它依赖于 solr 3.5.0 jar,以及一个 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

有更好的方法吗?

最佳答案

您的代码可以稍微简化,例如 project.configurations.compile.find { it.name.startsWith("solr-solrj-") }

关于jar - Gradle 中获取 gradle 依赖项缓存中 jar 文件路径的最简洁方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9577929/

相关文章:

java - Maven maven- assembly-plugin jar-with-dependencies 从最终 jar 中排除 LICENSE.txt

java - 使用 hadoop mapreduce 进行矩阵计算

hadoop - 无法连接到 sparkSQL

android - 即时应用程序低于 4mb 困难。如何减小 apk 大小

maven - mvnrepository.com 中的用法是什么意思

java - jar 资源在测试中加载,但不在应用程序中加载

java - 使用类路径参数运行 jar

java - 将二进制文件复制到 jar 之外

java - 使用Hbase RowCounter时找不到方法

algorithm - 如何找到不会造成循环依赖的子包