Gradle如何从依赖项目中复制所有运行时库,包括jar

时间:2015-06-29 06:58:14

标签: gradle

我有一个多模块gradle项目正在构建好。 现在我想实现一个任务,它将实际准备所有构建模块的可交付包及其所有依赖项以及从module-1.jar运行主类所需的所有其他内容

为了实现这一点,我想将所有运行时依赖项与一些特定于环境的配置文件(属性,XML)一起复制到一个文件夹中,然后将它们打包到一个存档文件中。

说我有这种结构:

    Root Project
      /      \
 module-1   module-2

模块1依赖于模块-2

module-1.gradle:

task runModule1 << {
    // Invoke some methods to prepare the module-1 run
    // such as setting module-1 runLocation
    copy {from configurations.runtime into runLocation}
}

dependencies {
    compile project(':module-2')
    //... Other thirds party dependencies
}

在上面的副本调用结束时,所有第三方依赖项都会在我需要的地方非常好地复制。然而,模块2.jar不是,并想知道为什么。当然,我可以重复自己并手动从module-2的build文件夹中复制module-2.jar,但对我来说这看起来不是正确的方法。它必须是一个很好的gradle解决方案。

提前感谢您的投入。

1 个答案:

答案 0 :(得分:0)

您描述的内容与Application plugin提供的内容完全相同。它将为您处理所有依赖项复制等。

假设module-1包含您的主类,请将以下内容添加到module-1配置中:

apply plugin: 'application'
mainClassName = "org.stackoverflow.example.MyApp"

由于module-1已正确声明对module-2的依赖,因此您现在可以像这样运行它:

gradle module-1:run
:module-2:compileJava
:module-2:processResources UP-TO-DATE
:module-2:classes
:module-1:compileJava
:module-1:processResources UP-TO-DATE
:module-1:classes
:module-1:run