我有一个正在构建的多模块 gradle 项目。
现在我想实现一个任务,该任务将实际准备所有已构建模块的可交付包以及它们的所有依赖项以及从 module-1.jar 运行主类所需的所有其他内容
为了实现这一点,我想将所有运行时依赖项与一些特定于环境的配置文件(属性、XML)一起复制到一个文件夹中,然后将它们打包到一个存档文件中。
假设我有这个结构:
Root Project
/ \
module-1 module-2
并且 module-1 依赖于 module-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
}
在复制调用结束时,所有第三方依赖项都被很好地复制到我需要它们的地方。然而 module-2.jar 不是并且想知道为什么。当然,我可以重复自己并从 module-2 的构建文件夹中手动复制 module-2.jar,但对我来说,这看起来不是正确的方法。它必须是一个很好的 gradle 解决方案。
预先感谢您的意见。
最佳答案
你所描述的听起来和 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
关于Gradle 如何复制所有运行时库,包括依赖项目中的 jars,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31109537/