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

Eri*_* Wu 15 java intellij-idea gradle

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

project/
  sub-project-1
    /main/resources
  sub-project-2
    /main/resources
  data
    /main/resources
    /test/resources
Run Code Online (Sandbox Code Playgroud)

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

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

非常感谢!

Pet*_*ser 10

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

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


小智 9

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

sourceSets {
    main {
        resources {
            srcDirs += [
                project(':data').sourceSets.main.resources
            ]
        }
    }
}
Run Code Online (Sandbox Code Playgroud)


nuc*_*tus 5

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

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