我正试图在构建中创建一个任务,该任务将在构建项目之前列出所有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)
}