我有一个多模块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解决方案。
提前感谢您的投入。
答案 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