问题:执行“mvn部署”的最佳解决方案是什么?这样,部署部分只能在所有单元测试成功且没有重复处理步骤后运行?
我希望简单的答案是:执行maven命令'x'(或使用标志),这样部署就可以在默认生命周期中不调用先前的目标而运行。
遗憾的是,这似乎没有一个简单的答案。我已经在下面列出了我一直遵循的路径的细节。
我们有以下三个要求:
我们从简单的“mvn清洁部署”开始,但我们注意到了几个问题:
这将导致损坏状态,其中远程存储库可能只有部分部署(如果在构建的后期有失败的模块)。
我们研究了3种不同的解决方案:
我向社区提出了这个问题,并提供了背景细节,以确定是否有更好的方法或对(可能)提出以下请求之一的强烈意见:
还有一点是开箱即用的,而且绝对不符合当前的惯例:
笔记:
更新8/20/2013
我测试了延迟部署插件,并确定该工具按预期工作,但花了很长时间。
对于我们的代码库:
干净的包,然后是跳过测试的部署,比延迟部署运行得更快,实现了我们将部署延迟到测试成功之后的愿望。
当部署生命周期执行并退出前面的每个目标(流程、编译、测试、包等)时,时间似乎受到了较小的影响。然而,唯一的替代方法是破解非标准执行,这只会节省10秒。
两件事。
在“构建后操作”中
将工件部署到Maven存储库。与标准的mvn部署相比,此功能允许您在整个构建被确认成功后部署工件。这避免了Maven中的一个典型问题,即在以后发现关键故障之前部署一些模块,从而导致存储库状态不一致。请注意,无论这种配置如何,您都可以在事后手动html" target="_blank">返回Jenkins并将过去的任何工件部署到您选择的任何存储库中。要使用此功能,不应停用自动工件归档。
我从来没有用过这个所以我不能确认它是否工作我只知道它是有这个特定的用例
作为替代,我也发现了这一点http://code.google.com/p/maven-deferred-deploy-plugin/
一个maven插件,它遍历一个reactor中的所有项目,并对每个项目分别执行部署。可以通过将工件部署推迟到安装阶段完成,来为Reactor生成近似原子的构建。
听起来很像你想要的。我仍然认为我的另一个答案更容易实现,因为你使用jenkins,只需选中一个复选框
现在有了新的答案。自maven部署插件的2.8版本以来,有一种方法可以“本机”实现这一点。有关详细信息,请参阅jira问题。
基本上,你需要强制至少v2。插件的第8部分
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8</version>
</plugin>
并使用新的参数部署Atend
。此设置通常与maven-Instet-plugin的InstAtend
一起使用
公用 模型 存储库 服务 网站 我们搜索了一下,没有找到一个解决方案,当项目具有这种结构时,如何制作一个可执行的jar。 下面是父pom.xml: 有人使用Spring Boot、Maven插件和Maven模块项目结构创建了可执行的fat jar吗?
对于集成测试,它更棘手,我们使用failsafe和集成测试生成文件,该文件由Sonar扫描。我的问题是,集成测试位于中,它只显示了对控制器内部的类的集成测试的测试覆盖范围,而不显示对另一个模块(如service module)中的类的集成测试的测试覆盖范围。因此,集成测试的总体测试覆盖率增加到21%,而不是35%+。 如果集成测试在中,那么是否可以配置sonar和jacoco来测量所有类的集成测试
我有maven surefire插件pom.xml: 现在我希望maven只在部署目标上执行测试,因此: 当执行mvn部署测试应该运行 当执行mvn包或mvn安装时,测试不应该运行,因为目标在部署之前
我刚刚使用Maven,我需要从一个Ant项目上传一些库。为了开发这个任务,我有一个文件夹,其中包含许多“pom.xml”文件,这些文件引用了我希望使用Maven在Eclipse中添加到我的项目中的jar,还有另一个xml文件,即Ant项目本身。 欢迎所有想法。谢谢
我希望通过在所有模块构建和单元测试完成后从所有模块运行集成测试来加快对“简单”构建失败(编译错误和单元测试失败)的反馈。 你能提出一个实现这一点的好方法吗?
我有一个父pom和两个子pom,用于jar和war文件。war文件将jar文件作为pom中的依赖项。因此,构建顺序定义如下 家长 儿童罐 儿童战争 在父pom中,模块如下所示。 要部署到Jboss的最后一个工件位于父/工作区/子war/目标/项目文件夹下。战争 当我从父工作区文件夹调用maven目标时,部署失败。 mvn清理编译安装jboss为:deploy-Dmaven。测验跳过=真 我尝试在父