Maven Central 跳过上传子模块

问题描述 投票:0回答:1

在 Maven 多模块项目中,

   Parent
         Module A
         Module B

我想将父级和模块 A 工件上传到 Maven Central,但不上传模块 B 工件。

我正在使用 nexus-staging-maven-plugin。我在模块 B 中为 maven-deploy-plugin 和 nexus-staging-maven-plugin 添加了 Skip 参数,但构建仍在将模块 B 上传到 mavencentral。

有什么办法可以跳过模块B上传。

upload maven-plugin nexus staging maven-central
1个回答
0
投票

经过一番努力,我找到了阻止某些模块发布到 Maven Central (OSSRH) 的方法。 maven-deploy-plugin 将工件上传/部署到 OSSRH,然后 nexus-staging-maven-plugin 暂存并发布它。诀窍是仅将 Nexus 插件添加到我们要发布的模块中。我将以下内容添加到父级和 moduleA pom,但没有添加到 moduleB pom。

<build>
    <plugins>
        <plugin>
            <groupId>org.sonatype.plugins</groupId>
            <artifactId>nexus-staging-maven-plugin</artifactId>
            <version>${nexus-staging-maven-plugin.version}</version>
            <extensions>true</extensions>
            <configuration>
                <serverId>ossrh</serverId>
                <nexusUrl>https://s01.oss.sonatype.org/</nexusUrl>
                <autoReleaseAfterClose>true</autoReleaseAfterClose>
            </configuration>
        </plugin>
        ...

通过此设置,deploy-plugin 上传父级、moduleA 和 moduleB 工件,但 nexus-staging-maven-plugin 仅暂存并发布父级和 moduleA。由于 moduleB pom.xml 中没有 Nexus 插件配置,因此其工件不会发布到 OSSRH。

但是,如果 moduleB pom.xml 中没有 nexus-staging 插件,如果您运行

mvn nexus-staging:release
mvn nexus-staging:drop
mvn nexus-staging:rc-list
等 nexus-staging 目标,您将收到“missing nexusUrl”错误,如果您想要运行 nexus-staging 的目标,然后临时将 nexus-staging 插件片段添加到 moduleB;运行这些命令并在工作完成后从 moduleB 中删除插件。

我们还可以使用此解决方法来上传单个模块。例如,我错误地上传了没有parent-1.0工件的moduleA-1.0。当我再次尝试上传 Parent-1.0 和 moduleA-1.0 工件时,它失败了,因为 OSSRH 不允许覆盖工件。由于父母失踪,该版本被破坏。为了仅上传parent-1.0,我将nexus-staging插件保留在parent中,将其从moduleA中删除,并且能够仅上传parent-1.0。

© www.soinside.com 2019 - 2024. All rights reserved.