首页 > 解决方案 > 使用 Gradle maven-publish 插件将具有子项目依赖项的项目发布到 maven

问题描述

我有一个具有以下结构的 gradle 多项目:

root
│
├── core-library
│   └── build.gradle
│
├── additional-feature-library
│   │
│   ├── entities
│   │   └── build.gradle
│   │
│   └── build.gradle
│
├── sample-android-app
│   └── build.gradle
│
├── build.gradle
└── settings.gradle

设置.gradle:

include(":core-library")
include(":additional-feature-library")
include(":additional-feature-library:entities")
include(":sample-android-app")

附加功能库/build.gradle:

plugins {
    id("java-library")
    id("kotlin")
    id("maven-publish")
}

dependencies {
    implementation(project(":additional-feature-library:entities"))
    implementation(project(":core-library"))

    // ... other dependencies from maven
}

publishing {
    publications {
        maven(MavenPublication) {
            groupId = "com.example"
            artifactId = "additional-feature-library"
            version = "1.0.0"

            from components.java
        }
    }
}

当我执行任务附加功能库/publishToMavenLocal 时,它会生成 *.jar 文件,其中包含来自附加功能库和 POM 的类,具有以下依赖项:

  <dependencies>
    <dependency>
      <groupId>root.additional-feature-library</groupId>
      <artifactId>entities</artifactId>
      <version>unspecified</version>
      <scope>runtime</scope>
    </dependency>
    <dependency>
      <groupId>root</groupId>
      <artifactId>core-library</artifactId>
      <version>1.0.2</version>
      <scope>runtime</scope>
    </dependency>

问题是这些依赖项不存在(实际上 core-library 将发布到 maven)。我想删除子项目附加功能库/实体产生的依赖关系,并将该子项目中的类包含到 *.jar 文件中。可能吗?

标签: javaandroidgradlemulti-modulemaven-publish

解决方案


推荐阅读