微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Gradle子子项目的构建配置

如何解决Gradle子子项目的构建配置

我正在尝试编写具有3个模块(A,B,C)的gradle构建。 A取决于B,B取决于C(A-> B-> C)。所有模块都位于同一父目录中。

所有模块都可以存在于工作区中,这就是为什么我的设置 B .gradle如下所示:

if(new File("../C").exists()){
  include 'C'
  project(":C").projectDir = file("../C")
}

在依赖项中,我执行相同的检查:

    dependencies {
      if(new File("../C").exists()) {
        compile project(':C')
      }else {
        compile "com.mycompany.C:0.0.14"
      }

此设置可以完美运行,但不适用于顶级模块A。如果我将B添加到A,则与上述相同,在构建项目A时会出错:

构建文件'C:\ projects \ A \ build.gradle'行:44 评估项目':B'时发生问题。 在项目':B'中找不到路径为':C'的项目。

解决此问题的唯一方法是将模块C添加到项目A的settings.gradle。

还有其他解决方法吗?

提前谢谢

解决方法

解决方案是堆肥(https://docs.gradle.org/current/userguide/composite_builds.html

settingsA.gradle

includeBuild('../B') {
  dependencySubstitution {
    substitute module('com.mycompany:B') with project(':')
  }
}

settingsB.gradle

includeBuild('../C') {
  dependencySubstitution {
    substitute module('com.mycompany:C') with project(':')
  }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。