多项目Java构建中的动态项目依赖项

时间:2015-07-01 11:35:19

标签: java groovy gradle

我有一个使用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中切换模式的源目录,具体取决于正在编译的项目。

0 个答案:

没有答案