Java 获取跨项目资源的位置

Java 获取跨项目资源的位置,java,scala,gradle,Java,Scala,Gradle,我已经阅读了许多类似的问题,其中回答是项目结构不理想,因此我的问题基于以下内容: 我有一个主项目(ProjA),它需要包括一个不是子项目的第二个项目(ProjB)。ProjB有各种资源文件,需要在ProjA分发版中复制这些文件 ProjA的build.gradle dependencies { compile project(":ProjB") } distributions { main { baseName = "Something"

我已经阅读了许多类似的问题,其中回答是项目结构不理想,因此我的问题基于以下内容:

我有一个主项目(ProjA),它需要包括一个不是子项目的第二个项目(ProjB)。ProjB有各种资源文件,需要在ProjA分发版中复制这些文件

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服务器项目中重复使用。为澄清起见,不使用子项目的原因是,公共资源是跨部门使用的,其特定资源有单独的存储库。确定。我询问了
战争
,因为它公开了这样的属性。我有两个想法,但只有一点时间来回答。我今晚就做。