Maven:如何在同版本下以相同文件名部署
解决Maven Deploy时SNAPSHOT版本自动添加时间戳的问题
这问题我之前折腾过好几次,Maven默认给SNAPSHOT版本构件加上时间戳后缀,是为了区分每次快照构建的差异,但如果咱们想要固定部署app-0.0.1-SNAPSHOT.jar或者直接app.jar(后者需额外配置),可以试试这两种方法:
方法一:修改快照仓库的版本唯一性配置
在你的pom.xml里找到distributionManagement节点,给snapshotRepository添加uniqueVersion=false属性,告诉Maven不要生成带时间戳的唯一版本:
<distributionManagement> <snapshotRepository> <id>your-snapshot-repo-id</id> <url>http://your-artifactory-snapshots-url</url> <uniqueVersion>false</uniqueVersion> </snapshotRepository> </distributionManagement>
配置后再执行mvn deploy,就会直接部署app-0.0.1-SNAPSHOT.jar,后续同版本部署会覆盖之前的构件。
方法二:通过Maven Deploy插件强制关闭时间戳
如果不想修改仓库配置,也可以直接在maven-deploy-plugin里设置参数:
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-deploy-plugin</artifactId> <version>3.1.1</version> <!-- 建议使用最新稳定版本 --> <configuration> <uniqueVersion>false</uniqueVersion> </configuration> </plugin> </plugins> </build>
额外说明
如果你的Artifactory仓库本身配置了“强制快照版本唯一”,可能需要先去仓库设置里调整一下,但大多数情况下,Maven端的配置就能覆盖这个行为。要是想直接部署成不带SNAPSHOT的app.jar,还可以额外配置maven-jar-plugin的finalName参数:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>3.3.0</version> <configuration> <finalName>app</finalName> </configuration> </plugin>
这样打包和部署出来的就是纯app.jar啦。
内容的提问来源于stack exchange,提问作者user1608260
相关产品推荐
相关产品推荐

