【发布时间】:2019-10-06 12:45:47
【问题描述】:
我看过这个帖子Gradle multi project distribution,但还是有些疑惑。
我想创建以下项目布局
您可能已经猜到了,我希望 dist 模块使用 libjava.jar、sprintbootapp.jar、3pp-a.tar、3pp-b.tar 构建 myapp-dist.tar.gz。
myapp-dist.tar.gz libjava.jar sprintbootapp.jar 3pp-a.tar 3pp-b.tar。3pp-a-module 和 3pp-b-module 只包含一些配置文件和启动脚本。没有java或任何编译代码。如何将它们单独打包成 tar 文件(无压缩)?
如何定义 dist-module 中对其他模块的依赖关系?从 dist-module 触发构建时是否可以构建其他模块?
更新:
我根据@marco-r 的回答设置了我的测试项目,除了打包war 文件外,它可以正常工作。从 github https://github.com/KiranMohan/study-spring-boot 签出测试项目。
这是感兴趣的项目设置。
include ':sb-2.1-multi-package', ':sb-2.1-multi-package:hello-rest-lib',
':sb-2.1-multi-package:hello-rest-standalone-jar',
':sb-2.1-multi-package:hello-rest-war'
include 'sb-2.1-3pp-resources'
include 'sb-2.1-build'
但是将 hello-rest-war 添加到 sb-2.1-build.tar.gz 失败。
而不是 war 文件,它是被打包的依赖项。
dependencies {
archivesDeps project(path: ':sb-2.1-3pp-resources', configuration: 'archives')
javaDeps project(":sb-2.1-multi-package:hello-rest-war")
}
...
task copyJavaDeps(type: Copy) {
inputs.files(configurations.javaDeps)
from configurations.javaDeps
into "${ARCHIVE_DIRECTORY}/lib"
}
...
// create distribution bundle
distributions {
main {
contents {
from ARCHIVE_DIRECTORY
into "/springapp/multimodule"
}
}
}
包的内容
springapp/multimodule/lib/classmate-1.4.0.jar
springapp/multimodule/lib/hello-rest-lib-0.0.1-SNAPSHOT.jar
springapp/multimodule/lib/hibernate-validator-6.0.16.Final.jar
...
springapp/multimodule/lib/tomcat-embed-websocket-9.0.17.jar
springapp/multimodule/lib/validation-api-2.0.1.Final.jar
springapp/multimodule/sb-2.1-3pp-resources/config/3pp.json
如何打包war文件(hello-rest-war模块)并且没有所有传递依赖?
【问题讨论】:
标签: java spring-boot gradle groovy compilation