You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Maven Release Plugin发布时能否保留构建产物的SNAPSHOT后缀?

无需自定义脚本即可实现需求

通过Maven Profile结合maven-release-plugin的参数配置,就能分别控制生产环境和低级别环境的发布行为:

1. 在pom.xml中定义环境专属Profile

<profiles>
    <!-- 生产环境:默认移除SNAPSHOT,发布到Release仓库 -->
    <profile>
        <id>prod-release</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <distributionManagement>
            <repository>
                <id>artifactory-prod-release</id>
                <url>http://你的Artifactory地址/libs-release-local</url>
            </repository>
        </distributionManagement>
    </profile>

    <!-- 低级别环境:保留SNAPSHOT,发布到Snapshots仓库 -->
    <profile>
        <id>dev-snapshot</id>
        <distributionManagement>
            <snapshotRepository>
                <id>artifactory-dev-snapshot</id>
                <url>http://你的Artifactory地址/libs-snapshot-local</url>
            </snapshotRepository>
        </distributionManagement>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-release-plugin</artifactId>
                    <version>3.0.1</version>
                    <configuration>
                        <!-- 禁止插件修改版本号,保留SNAPSHOT后缀 -->
                        <updateVersion>false</updateVersion>
                        <updateWorkingCopyVersions>false</updateVersion>
                        <!-- 发布版本和后续开发版本都使用当前项目版本 -->
                        <releaseVersion>${project.version}</releaseVersion>
                        <developmentVersion>${project.version}</developmentVersion>
                        <!-- 可选:跳过Git标签(快照版本通常不需要打标签) -->
                        <skipTag>true</skipTag>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    </profile>
</profiles>

2. 配置settings.xml中的Artifactory认证

确保settings.xml里对应仓库ID的账号密码已配置:

<servers>
    <server>
        <id>artifactory-prod-release</id>
        <username>你的账号</username>
        <password>你的密码</password>
    </server>
    <server>
        <id>artifactory-dev-snapshot</id>
        <username>你的账号</username>
        <password>你的密码</password>
    </server>
</servers>

3. 批处理发布命令

  • 发布到生产环境(自动移除SNAPSHOT,推送到Release仓库):
mvn release:clean release:prepare release:perform -Pprod-release
  • 发布到低级别环境(保留SNAPSHOT后缀,推送到Snapshots仓库):
mvn release:clean release:prepare release:perform -Pdev-snapshot

关键配置说明

  • updateVersion和updateWorkingCopyVersions设为false,直接阻止插件修改pom文件中的版本号,原SNAPSHOT版本会被完整保留
  • releaseVersion和developmentVersion绑定${project.version},确保发布过程中不会生成新的非快照版本
  • skipTag开启后,不会为快照版本创建Git标签,避免冗余的版本标签

内容的提问来源于stack exchange,提问作者Aneeb Khawar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 08:43:17