Gradle如何从依赖项目复制所有运行库库,包括JAR
我有一个多模块的gradle项目,正在建设中。 现在我想实现一个任务,它将实际准备一个可交付的包,其中包含所有构建模块及其所有依赖项,以及从module-1.jar运行主类所需的所有其他内容 为了实现这一点,我希望将所有运行时依赖项与一些特定于环境的配置文件(属性、XML)一起复制到一个文件夹中,然后将它们打包到一个归档文件中 假设我有这样的结构:Gradle如何从依赖项目复制所有运行库库,包括JAR,gradle,Gradle,我有一个多模块的gradle项目,正在建设中。 现在我想实现一个任务,它将实际准备一个可交付的包,其中包含所有构建模块及其所有依赖项,以及从module-1.jar运行主类所需的所有其他内容 为了实现这一点,我希望将所有运行时依赖项与一些特定于环境的配置文件(属性、XML)一起复制到一个文件夹中,然后将它们打包到一个归档文件中 假设我有这样的结构: Root Project / \ module-1 module-2 模块1依赖于模块2 module-1.g
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
}
module-1.gradle:
任务runModule1您所描述的内容与所提供的内容完全相同。它将为您处理所有依赖项复制等
假设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
但是module-2.jar不是(…)?为什么不使用application
plugin?谢谢Opal。我解决了jar名称问题。我将问题稍作修改,以更好地反映我正在努力实现的目标。起初我说我想运行module-1.jar,这让你提出了应用程序插件,但我的问题仍然站得住脚。为什么module-2.jar没有被复制,因为它是一个有效的运行时依赖项?我刚刚意识到应用程序插件包括一个分发插件,可以配置它来完成额外的环境准备工作,然后将特定文件与jar放在一起。是的,你的回答帮助我解决了问题。非常感谢你。至于结节-2.jar,在我看来没有被复制就像一个bug。