gradle 父工程下,有两个子工程,A 和 B,A 依赖于 B,A 中的 build.gradle 文件中有:
dependencies {
compile(project("B"))
}
使用命令 gradle :A:installDist 将 A 打包,lib 目录下会有 B.lar 文件,然而 B 工程的配置文件并没有打包到 A 的目录下或者 B.jar 的压缩包中.
于是有两个关于打包的问题:
1.如何在打包 A 时,将B 中的 *.properties 文件如何打包到 B.jar 中
2.如何在打包 A 时,直接将 B 中的 *.properties 文件打包到 A 的 conf 目录下
第 1 个问题,由于父工程下 build.gradle 中对于所有的 subprojects 都有如下配置
jar {
exclude('**/*.properties')
exclude('**/static')
exclude('**/templates')
}
故所有工程打包时,jar 里面都不会含有配置文件。
一般来讲,所有的配置文件都不应该包含在 jar 中,让它可配置。
第 2 个问题,可以这样解决,在 A 打包时,将 B 的配置文件一起打包, build.gradle 中写入:
applicationDistribution.from('../B/src/main/resources/') {
into 'conf'
}
另外还要处理好 B 中的配置文件与 A 中 conf 配置重名的问题
一般来讲,所有被依赖的工程(一般是公共的工程)的配置文件都应该放在使用工程中去,不应该放在被依赖工程中,一旦某个使用工程配置要改变,不会影响其它使用工程的行为。