Gradle:多个java项目的公共资源依赖项

我正在使用gradle / intellij-idea开发一个多模块项目,这是我的项目主页的结构:

project/ sub-project-1 /main/resources sub-project-2 /main/resources data /main/resources /test/resources 

正如您所看到的,我有多个子项目(所有java),如何让它们依赖于一些公共资源(“数据”项目,它不包含代码而只包含资源),以及它们各自独立的资源?

另外,intellij-idea最好能自动地使用JetGradle获取这些依赖项(JetGradle可以很好地获取每个子项目中的默认gradle java项目依赖项)。

非常感谢!

一种解决方案是将Java插件也应用于data项目,然后使用常规项目依赖项(例如dependencies { runtime project(":data") } )。 但是,这需要一些努力来防止运送测试资源。

另一个解决方案是不将data作为Gradle项目,而是在其他两个项目中直接包含其资源目录( sourceSets.main.resources.srcDir "../date/main/resources"; sourceSets.test.resources.srcDir "../data/test/resources" )。

好的,我明白了。 它实际上非常简单。 只需将“data”文件夹视为另一个项目,并将依赖性声明添加到子项目就可以了。 例如:

 dependencies { compile project (':data') testCompile project (':data') } 

我采用的方法是使用项目参考

 sourceSets { main { resources { srcDirs += [ project(':data').sourceSets.main.resources ] } } } 

您需要选择保存资源的项目。 需要这些资源的所有其他项目都会将它们添加到sourceSets的resources组件中。

 sourceSets { data { resources { srcDir "${project(':data').projectDir}/src/main/resources" include "your_pattern_here**" } } main { resources { srcDirs += [ data.resources ] } } }