获取跨项目资源的位置
Getting location of cross-project resources
我看了很多类似的问题,回答是项目结构不理想,所以我的问题基于以下几点:
我有一个主项目 (ProjA),它需要包含第二个项目 (ProjB),它不是子项目。 ProjB有各种资源文件需要在ProjA的分发中复制。
ProjAbuild.gradle
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.) 这是正确的方法吗,因为我已经阅读了很多关于跨项目属性不理想的信息 - 或者我应该做一些完全不同的事情吗?
不知道是否有帮助,但似乎最好的方法是按以下方式进行:
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 的完整示例。
我看了很多类似的问题,回答是项目结构不理想,所以我的问题基于以下几点:
我有一个主项目 (ProjA),它需要包含第二个项目 (ProjB),它不是子项目。 ProjB有各种资源文件需要在ProjA的分发中复制。
ProjAbuild.gradle
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.) 这是正确的方法吗,因为我已经阅读了很多关于跨项目属性不理想的信息 - 或者我应该做一些完全不同的事情吗?
不知道是否有帮助,但似乎最好的方法是按以下方式进行:
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 的完整示例。