如何在Gradle任务中仅列出项目依赖项JAR

如何在Gradle任务中仅列出项目依赖项JAR,gradle,jar,Gradle,Jar,在我的例子中,我有多个子项目和子/子项目的多项目构建 然后,我希望能够从不同的子项目调用此任务,以生成不同的JAR集(基于项目依赖关系)。这样,我就能够为不同的子项目创建单独的分布 我已经到了可以用一种丑陋的方式列出所有项目DEP JAR的阶段: task showJars { doLast { if( configurations && configurations.getByName('compile') ) { configu

在我的例子中,我有多个子项目和子/子项目的多项目构建

然后,我希望能够从不同的子项目调用此任务,以生成不同的JAR集(基于项目依赖关系)。这样,我就能够为不同的子项目创建单独的分布

我已经到了可以用一种丑陋的方式列出所有项目DEP JAR的阶段:

task showJars {
    doLast {
        if( configurations && configurations.getByName('compile') ) {
            configurations.compile.collect {
                if( !it.toString().contains('.gradle') )
                    println(it)
            }
        }
    }
}
我正在完成一项任务,将所有项目JAR收集到一个目录中,为应用程序创建分发版。有没有干净的方法来实现这一点


谢谢

根据您的项目和配置,您可能需要调整下面的代码段,但这应该能让您大致了解:

task copyProjectDependencies << {
    file("build/project-dependencies").deleteDir()
    subprojects.findAll().each { project ->
        copy {
            from project.jar
            from project.configurations.runtime
            into "build/project-dependencies/jars"
        }
    }
}
从文档中:

应用程序插件有助于创建可执行的JVM应用程序。它使得在开发过程中本地启动应用程序变得容易,并且可以将应用程序打包为TAR和/或ZIP,包括特定于操作系统的启动脚本


它将把它打包成一个包含所有依赖项的存档。

您能澄清这个问题吗?期望的输出是什么?我有多个项目构建。作为
gradle jar
任务的结果,此构建中的每个子项目都输出一个jar。子项目之间也存在依赖关系。我想定义一个任务,它将创建一个JAR项目,然后将它们复制到一个目录中。第一部分是在根或子项目中调用
gradle jar
,第二部分是收集项目jar并将它们复制到一个位置。感谢您的尝试。不幸的是,这不完全是我的情况。我想从调用任务的项目的依赖项目中获取JAR。我会更新我的问题。谢谢:)
apply plugin: 'application'