如何区分部署版本与快照

时间:2012-02-27 07:09:10

标签: maven

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

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

有人可以澄清这个吗?'

3 个答案:

答案 0 :(得分:80)

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

答案 1 :(得分:11)

您可以执行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)。

答案 2 :(得分:1)

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