使用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
相关产品推荐
相关产品推荐

