Java 获取跨项目资源的位置
我已经阅读了许多类似的问题,其中回答是项目结构不理想,因此我的问题基于以下内容: 我有一个主项目(ProjA),它需要包括一个不是子项目的第二个项目(ProjB)。ProjB有各种资源文件,需要在ProjA分发版中复制这些文件Java 获取跨项目资源的位置,java,scala,gradle,Java,Scala,Gradle,我已经阅读了许多类似的问题,其中回答是项目结构不理想,因此我的问题基于以下内容: 我有一个主项目(ProjA),它需要包括一个不是子项目的第二个项目(ProjB)。ProjB有各种资源文件,需要在ProjA分发版中复制这些文件 ProjA的build.gradle dependencies { compile project(":ProjB") } distributions { main { baseName = "Something"
ProjA的build.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!
}
}
}
}
evaluationDependsOn(':projB')
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')
}
}
}
}
在这种情况下,必须对路径进行硬编码
第二种选择可能是指定一个项目属性(通常不是一个好主意)并在另一个项目中使用,还必须定义评估顺序
在项目中
ext.resourcesDir = project.file('src/main/webapp2')
在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!
}
}
}
}
evaluationDependsOn(':projB')
以及:
的完整示例。第二个项目中是否使用了
war
插件?请告诉我您的项目是否在线托管。不使用war。它是嵌入式jetty中的scala应用程序。与web相关的资源/框架在ProjB中定义,可在多个web服务器项目中重复使用。为澄清起见,不使用子项目的原因是,公共资源是跨部门使用的,其特定资源有单独的存储库。确定。我询问了战争
,因为它公开了这样的属性。我有两个想法,但只有一点时间来回答。我今晚就做。