如何在构建过程中仅列出Gradle中runtimeClasspath解析的依赖项



我正试图在构建中创建一个任务,该任务将在构建项目之前列出所有runtimeClasspath依赖项。因此,基本上,它应该相当于以下命令,但适用于所有子项目:

gradle dependencies --configuration runtimeClasspath

到目前为止,我已经设法想出了一个列出所有依赖项的任务:

subprojects {
task listDependencies(type: DependencyReportTask) {}
complileJava.dependsOn listDependencies
}

它的工作原理很好,因为它列出了所有子项目的所有依赖项,但如上所述,它还列出了很多我不需要看到的东西。

如何将上述任务的输出限制为runtimeClasspath?

谢谢!

由于要定义类型为DependencyReportTask的任务,因此可以配置其配置属性,该属性相当于CLI上的--configuration标志。

所以类似于:

subprojects {
def listDeps = tasks.register("listDependencies", DependencyReportTask) {
setConfiguration("runtimeClasspath")
}
tasks.withType(JavaCompile).configureEach {
dependsOn(listDeps)
}
}

然而,请注意,在执行compileJava之前打印runtimeClasspath有点奇怪。编译任务使用的类路径将是compileClasspath

编辑为使用懒惰任务API,因为插件应用程序存在订购问题

上述公认答案的Kotlin版本:

val listDeps = tasks.register<DependencyReportTask>("listDependencies") {
setConfiguration("compileClasspath")
}
tasks.withType<JavaCompile> {
dependsOn(listDeps)
}

相关内容

  • 没有找到相关文章

最新更新