Jar*_*red 13 deployment unit-testing maven
问题:执行'mvn deploy'的最佳解决方案是什么,以便部署部分仅在所有单元测试成功并且没有重复处理步骤后运行?
我希望简单的答案是:执行maven命令'x'(或使用标志),这样可以在不调用默认生命周期中的先前目标的情况下运行部署.
可悲的是,这似乎没有一个简单的答案.我已经在我到目前为止的路径中包含了详细信息.
我们有以下三个要求:
我们从简单的"mvn clean deploy"开始,但是我们注意到了几个问题:
这导致"损坏"状态,其中远程存储库可能仅具有部分部署(如果在构建中稍后存在具有故障的模块).
我们看了3种不同的解决方案:
我向社群提出了这个问题,并提供了我提供的背景细节,以确定是否有更好的方法或强烈的意见(可能)提出以下请求之一:
开箱即用,绝对违反当前的惯例:
笔记:
2013年8月20日更新
我测试了延迟部署插件并确定该工具按预期工作,但是很长时间.
对于我们的代码库:
除了延迟部署之后,部署跳过测试的干净程序包运行得更快,并且在测试成功之后实现了延迟部署的愿望.
部署生命周期执行时并且退出前面的每个目标(进程,编译,测试,包等)似乎有一点时间.然而,唯一的选择是破解非标准执行,只能节省10秒.
Hil*_*kus 31
现在有一个新的答案.从maven部署插件的2.8版开始,有一种方法可以"本地"执行此操作.有关详细信息,请参阅jira问题.
基本上你需要强制至少v2.8的插件
<plugin>
   <groupId>org.apache.maven.plugins</groupId>
   <artifactId>maven-deploy-plugin</artifactId>
   <version>2.8</version>
</plugin>
并使用新参数deployAtEnd.更多信息在这里.此设置通常与installAtEndmaven-install-plugin一起使用