【问题标题】:Do not install gradle sub-project as external dependency不要将 gradle 子项目安装为外部依赖项
【发布时间】:2019-10-03 04:46:30
【问题描述】:

我有以下 gradle 多项目结构。

root-project
   -A
     build.gradle
   -B
     build.gradle
 build.gradle
 settings.gradle

A 有一些纯 java 代码和几个外部依赖项。 B 已将 A 包含为 compile(':A')B 也有一个应用为 apply plugin: 'maven' 的 maven 插件。

现在我的问题是每当我做./gradlew installB 包括A 作为外部maven 依赖项。使用B 的人无法编译,因为它没有找到A。如何跳过将 maven 插件应用到 A 并将其所有代码包含在 B 中?

【问题讨论】:

    标签: java maven gradle maven-plugin


    【解决方案1】:

    要么:

    1. 将工件发布到外部或内部存储库
    2. 直接依赖项目库如下图。

    -

    // Project B
    dependencies {
        implementation(project(":a"))
    }
    

    参考:

    【讨论】:

    • 您好,感谢您的回复。我已经在这样做了。但我不想在外部或内部发布 A。
    • 那么选项(2)就是你所需要的。在project b 中声明对project a 的依赖。
    • 这就是我正在做的。但是当我发布B 时,它会自动发布A,版本为unknown。我在问题中也提到了这一点。抱歉,如果不清楚。
    【解决方案2】:

    如果项目B 正在生成一个jar,我们有很多选择,但就我而言,它应该是第三方使用的maven 依赖项。我找不到直接的解决方案。所以我最终将 A 的源添加到 B 中。在 B 的 build.gradle 中是这样的:

     sourceSets {
        main {
            java {
                srcDir 'src/main/java'
                srcDir '../A/src/main/java'
            }
        }
    }
    

    唯一的缺点是我必须在B 中包含A 的依赖项。如果有人有更优雅的方法,我很乐意接受。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-01-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-03
      • 2016-04-19
      • 1970-01-01
      相关资源
      最近更新 更多