首页 > 解决方案 > Maven - 发布多个子模块/工件

问题描述

我有一个像这样组织的 Kotlin 项目:

project-name
    > project-name-core
    > project-name-domain

我的 gradle 发布脚本是这样设置的:

publishing {
    repositories {
        mavenLocal()
    }
    publications.all {
        pom.withXml(configureMavenCentralMetadata)
    }
    publications {
        mavenPublication(MavenPublication) {
            from components.java
            groupId 'com.project'
            artifactId 'project-name'
            artifact sourcesJar
            artifact javadocJar
        }
    }
}

当我运行时,./gradlew publishToMavenLocal我可以project-name在本地存储库缓存中看到,但看不到project-name-coreor project-name-domain

如何配置 gradle 以将我的子模块发布到 maven 本地存储库缓存?

标签: mavengradle

解决方案


最好的猜测是您只将发布插件应用于项目而不是子项目。

如果您打算src/在子项目之外发布根项目 ( ),那么您应该将配置移动到allprojects块中:

allprojects {
    publishing {
        publications.all {
            pom.withXml(configureMavenCentralMetadata)
        }
        publications {
            mavenPublication(MavenPublication) {
                from components.java
                groupId 'com.project'
                artifactId 'project-name'
                artifact sourcesJar
                artifact javadocJar
            }
        }
    }
}

否则,如果您只想发布子项目,则替换allprojectssubprojects

此外,您不需要使用 .config 添加配置存储库mavenLocal()


推荐阅读