有以下 gradle 打包脚本版本:
subprojects {
applicationDistribution.from('/src/main/resources/') {
into 'conf'
}
}
这段的意思是,将当前父工程的各个子工程下面的 src/main/resources/ 这个目录下所有文件放到各个子工程打包的 conf 目录下。
在 windows 下可以正常工作,打包正常。但是在 linux 下,发现 resouces 目录下的文件并没有拷贝到 conf 下。
猜测可能是 linux 将 /src/main/resouces 当成了系统的绝对路径了,而不是基于各个子工程目录的 src/main/resources。
为验证猜想,在脚本中增加以下命令打印其绝对路径 :
File configFile = file('/src/main/resources/')
println configFile.absolutePath
println configFile.absolutePath
发现确实是系统的绝对路径。
为了通用性,最后的解决方法是将上面的 src 前面的斜杠去掉,即
subprojects {
applicationDistribution.from('src/main/resources/') {
into 'conf'
}
}