如何区分部署版本与快照

Sam*_*vin 56 maven

我可能会遗漏一些非常明显的东西,但无论如何我都需要澄清一些.我即将开始使用maven和archiva进行开发.我将两个服务器+设置添加到settings.xml,并将distributionManagement标签添加到我要部署的maven POM中.

我在POM中引用了我的内部快照存储库和内部发布存储库.是否有一个特定的maven命令或选项,它指定部署为SNAPSHOT,而不是两个repos?或者,如果我进行部署,是否会自动将一个副本推送到每个仓库?

有人可以澄清这个吗?

And*_*nov 87

如果您project.version包含SNAPSHOT(fe,1.2-SNAPSHOT)并执行mvn deploy,则工件将部署到您的快照存储库中.如果没有(fe,1.2) - 它们将被部署到您的发布存储库中.

  • 为了更准确,$ {project.version}必须以SNAPSHOT结束才能部署到快照存储库.(即3.5-SNAPSHOT将部署到快照存储库,而3.5-SNAPSHOT-TEST将进入发布存储库) (5认同)
  • 我强烈建议使用maven-release-plugin,因为它还会为你创建一个标签并完成所有繁琐的重复性操作 (3认同)
  • 您可以手动执行此操作或使用[maven-release-plugin](http://maven.apache.org/plugins/maven-release-plugin/)。 (2认同)
  • @AndrewLogvinov 很抱歉在 2 年后重新启用它,但是您是否有关于您指定的行为的文档?我试图找到一个。 (2认同)

小智 16

你可以执行mvn deploy.

如果您的POM版本包含SNAPSHOT后缀,它将部署到配置下的存储库中distributionManagement.snapshotRepository.

如果您的POM不包含SNAPSHOT后缀,它将部署到配置下的存储库中distributionManagement.repository.

但是,我建议您使用它maven-release-plugin来管理版本控制和部署.通过运行mvn -B release:clean release:prepare release:perform,在简历中:

  • SNAPSHOT从版本中删除后缀(例如2.1-SNAPSHOT- > 2.1);
  • 构建应用程序以生成JAR文件;
  • 代码提交到您的代码存储库(例如git)并标记(例如2.1);
  • JAR部署到您的发布存储库(不是快照存储库);
  • 版本增加并SNAPSHOT添加后缀(例如2.2-SNAPSHOT).


小智 6

对我来说,添加后缀:SNAPSHOTin${project.version}还不够。我必须在它前面加一个破折号:-SNAPSHOT以便 Maven 将其部署到本地快照存储库中。