网站建设模板是什么,企业推广怎么写,惠州做网站乐云seo轻松上线,网站开发公司按时交付cargo maven在项目生命周期中#xff0c;非常普遍的需求是设置集成测试。 幸运的是#xff0c;Maven在默认构建生命周期的以下阶段#xff08;来自Maven 文档 #xff09;具有对这一确切方案的内置支持#xff1a; 集成前测试 #xff1a; 执行集成测试之前所需的操作。… cargo maven 在项目生命周期中非常普遍的需求是设置集成测试。 幸运的是Maven在默认构建生命周期的以下阶段来自Maven 文档 具有对这一确切方案的内置支持 集成前测试 执行集成测试之前所需的操作。 这可能涉及诸如设置所需环境的事情。 集成测试 如有必要将程序包处理并部署到可以运行集成测试的环境中。 集成测试后 执行集成测试后执行所需的操作。 这可能包括清理环境。 首先配置了maven-surefire-plugin 以便从标准构建生命周期中排除集成测试 plugingroupIdorg.apache.maven.pluginsgroupIdartifactIdmaven-surefire-pluginartifactIdversion2.10versionconfigurationexcludesexclude***IntegrationTest.javaexcludeexcludesconfigurationplugin 排除是通过蚂蚁风格的路径表达式完成的因此所有集成测试都必须遵循此模式并以“ IntegrationTest.java ”结尾。 接下来使用cargo-maven2-plugin 因为Cargo提供了对嵌入式Web服务器的顶级支持。 当然如果服务器环境需要特定的配置货运也知道如何从已归档的软件包中构造服务器以及如何部署到外部服务器。 plugingroupIdorg.codehaus.cargogroupIdartifactIdcargo-maven2-pluginartifactIdversion1.1.3versionconfigurationwaittruewaitcontainercontainerIdjetty7xcontainerIdtypeembeddedtypecontainerconfigurationpropertiescargo.servlet.port8080cargo.servlet.portpropertiesconfigurationconfigurationplugin 定义了一个嵌入式Jetty 7 Web服务器侦听端口8080。请注意将等待标记设置为true –这是因为对于较新版本的货物1.1.0以上该标记的默认值已从更改为由于此错误 从true到false 。 我们希望能够通过简单地运行mvn cargostart来启动项目尤其是在开发阶段因此该标志应该处于活动状态。 但是在运行集成测试时我们希望服务器启动先运行测试再停止这就是为什么该标志以后会被覆盖的原因。 为了使包 maven阶段生成可部署的war文件项目的打包必须为 packaging war / packaging 。 接下来 将创建一个新的集成 Maven配置文件 以仅在该配置文件处于活动状态时才允许运行集成测试而不是将其作为标准构建生命周期的一部分。 profilesprofileidintegrationidbuildplugins...pluginsbuildprofileprofiles 该配置文件将包含所有其余配置。 现在Jetty服务器已配置为在集成前测试阶段启动 并在集成后 测试阶段停止 。 plugingroupIdorg.codehaus.cargogroupIdartifactIdcargo-maven2-pluginartifactIdconfigurationwaitfalsewaitconfigurationexecutionsexecutionidstart-serveridphasepre-integration-testphasegoalsgoalstartgoalgoalsexecutionexecutionidstop-serveridphasepost-integration-testphasegoalsgoalstopgoalgoalsexecutionexecutionsplugin 这样可以确保在集成测试阶段之前和之后都执行cargostart目标和cargostop目标。 请注意因为有两个单独的执行定义所以id元素必须在两个元素中都存在并且不相同以便Maven可以接受配置。 接下来需要在集成配置文件中覆盖maven-surefire-plugin配置以便现在将包含并运行默认生命周期中排除的集成测试 pluginsplugingroupIdorg.apache.maven.pluginsgroupIdartifactIdmaven-surefire-pluginartifactIdexecutionsexecutionphaseintegration-testphasegoalsgoaltestgoalgoalsconfigurationexcludesexcludenoneexcludeexcludesincludesinclude***IntegrationTest.javaincludeincludesconfigurationexecutionexecutionspluginplugins 有几件事值得注意 1. Maven-surefire-plugin的测试目标是在集成测试阶段执行的 至此Jetty已经开始部署项目因此集成测试应该没有问题。 2.现在集成测试包含在执行中。 为了实现这一点排除项也被覆盖-这是因为Maven处理配置文件中的覆盖插件配置的方式。 基本配置没有被完全覆盖而是在配置文件中增加了新的配置元素。 因此最初排除集成测试的原始excludes配置仍然存在于配置文件中并且需要被覆盖否则它将与includes配置冲突并且测试仍然不会跑。 3.请注意由于只有一个execution元素因此不需要定义id 。 现在整个过程可以运行 mvn clean install -Pintegration 结论 Maven的分步配置涵盖了整个集成过程的设置过程该集成过程是项目生命周期的一部分。 通常将其设置为在持续集成环境中运行最好在每次提交之后运行。 如果CI服务器已经有运行和使用端口的服务器那么货物配置将必须处理该情况我将在以后的文章中介绍。 参考 如何在baeldung博客上使用我们的JCG合作伙伴 Eugen Paraschiv 的Maven Cargo插件设置集成测试 。 翻译自: https://www.javacodegeeks.com/2012/09/maven-cargo-plugin-for-integration.htmlcargo maven