我有一个使用Gradle的多项目Java构建,其结构类似于:
:project:a :project:b
\ /
\ /
\ /
▼ ▼
:core
/ | \
/ | \
/ | \
▼ | ▼
:schema:a | :schema:b
|
▼
:schema:c
这些节点中的每一个都是本地Java Gradle子项目,其中:project:a和:project:b具有项目依赖关系:core。 :schema:a,:schema:b和:schema:c是包含数据库模式类/模型的Java Gradle项目,它们应该由:core使用,但一次只能使用一个模式。
现在我想做以下事情:如果我构建:项目:a,:核心应该使用:schema:a as dependency。如果我构建:project:b,:core应该使用:schema:b作为依赖项。如果我自己构建:core,它应该使用:schema:c as fallback。
我使用configurations进行了很多实验,但这似乎没有用,因为compileJava任务正在使用" compile"配置所以它看起来不像使用配置这是正确的方法。我得到了依赖逻辑工作,并且:项目:a:依赖项,:项目:b:依赖项和:项目:核心:依赖项显示了具有正确逻辑的所需图形,但是构建没有考虑到这一点,因为compileJava任务就像我说的那样,只考虑"编译"配置。
然后我尝试使用"排除"就像Excluding transitive dependencies中记载的一样,但这似乎不适用于项目,只有外部依赖项。
我想知道使用模式的项目是否正确。也许我应该使用sourceSets,然后在:core中切换模式的源目录,具体取决于正在编译的项目。