【问题标题】:Gradle - subprojects exclude parent defined project dependencyGradle - 子项目排除父定义的项目依赖
【发布时间】:2014-03-13 18:18:54
【问题描述】:

如何排除父定义的compile project 依赖?

模块结构如下:

- build.gradle
- settings.gradle
- MAIN_MODULE_1
  - build.gradle
- MODULE1
  - build.gradle
- MODULE2
  - build.gradle
- MODULE3
  - build.gradle
- MODULE4
  - build.gradle

依赖模型应该是:

- MODULE1 <- MAIN_MODULE_1
- MODULE2 <- MAIN_MODULE_1
- MODULE3 <- MAIN_MODULE_1
- MODULE4 <- MAIN_MODULE_1

也就是说,拥有

// build.gradle
subprojects {
  apply plugin: 'java'
  dependencies {
    compile project('MAIN_MODULE_1')
  }
}

// settings.gradle
include ':MAIN_MODULE_1'
include ':MODULE1'
include ':MODULE2'
include ':MODULE3'
include ':MODULE4'

将创建 MAIN_MODULE_1 对其自身的循环依赖,这是错误的。

在每个模块中都有依赖项(总数不是 4 个而是 120 个)对我来说似乎是错误的。

【问题讨论】:

    标签: java gradle dependency-management


    【解决方案1】:

    仅当您不在项目MAIN_MODULE_1 中时,您才能有条件地应用依赖项:

      dependencies {
        if (!project.name.equals("MAIN_MODULE_1")) {
          compile project(':MAIN_MODULE_1')
        }
      }
    

    下面的答案是一个更清洁的解决方案。

    【讨论】:

    • 哇,真的很痛苦,但它有帮助。谢谢
    【解决方案2】:

    你可以使用配置块:

    project(':MAIN_MODULE_1') {
      apply plugin: 'java'
    }
    
    configure(subprojects - project(':MAIN_MODULE_1')) {
      apply plugin: 'java'
      dependencies {
        compile project('MAIN_MODULE_1')
      }
    }
    

    答案来自另一个问题Gradle exclude plugin in main project for specific subproject(s)

    【讨论】:

    • 请澄清这段代码的作用?那个“-”在扔我。 Java 背景。
    • 我认为这是一个算术运算,翻译为“子项目集减去子项目MAIN_MODULE_1”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-18
    • 2018-10-18
    • 2013-06-19
    • 1970-01-01
    • 2013-11-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多