我看过很多类似的问题,答案是项目结构不理想所以我的问题基于以下内容:
我有一个主项目(ProjA)需要包含第二个项目(ProjB),它不是子项目。 ProjB有各种资源文件需要在ProjA的分发中复制。
build.gradle
ProjA
dependencies {
compile project(":ProjB")
}
distributions {
main {
baseName = "Something"
contents {
into('bin') { from jar.archivePath }
into('lib') { from configurations.runtime }
into('etc') {
from ('../../projb/src/main/webapp') // Fix me!
}
}
}
}
1。)理想情况下,ProjB应该通过ProjA使用的属性公开资源文件的位置,如何做到这一点?
2。)这是否是正确的方法,因为我已经阅读了很多关于不合理的跨项目属性 - 或者我应该做一些完全不同的事情?
答案 0 :(得分:1)
不知道它是否有帮助,但似乎最好的方法是以下列方式进行:
distributions {
main {
baseName = "Something"
contents {
into('bin') { from jar.archivePath }
into('lib') { from configurations.runtime }
into('etc') {
from project(':projB').file('src/main/webapp')
}
}
}
}
在这种情况下,路径必须是硬编码的。
第二个选项可能是指定项目属性 - 通常不是一个好主意 - 并且在另一个项目中使用 - 还必须定义评估顺序。
在 projB
中ext.resourcesDir = project.file('src/main/webapp2')
和 projA
evaluationDependsOn(':projB')
和
distributions {
main {
baseName = "Something"
contents {
into('bin') { from jar.archivePath }
into('lib') { from configurations.runtime }
into('etc') {
from project(':projB').file('src/main/webapp')
from project(':projB').resourcesDir
}
}
}
}
Here的完整示例。