Maven:在一个阶段将一个插件的多个执行与其他插件执行交错

标签 maven

我需要在预集成测试阶段执行以下操作:

  • sql-maven-plugin: 执行
  • jetty-maven-plugin:部署 war
  • sql-maven-plugin: 执行

  • 步骤 1 和 3 具有不同的配置。我尝试将 1 和 3 定义为单独的插件元素,但我相信 Maven 只是将它们合并到一个插件定义中,导致执行顺序为 1、3、2。

    我需要一些方法来按照上面定义的顺序执行这些。

    最佳答案

    关于 Maven 构建过程的简短通知:

  • 您只能在 pom.xml 中描述每个插件一次,重复的描述是一种不好的做法(容易出错)。
  • 您可以为每个插件描述多个单独的执行。
  • 单个插件(绑定(bind)到单个阶段)的执行将按顺序运行,而与其他插件定义无关。
  • 不同插件(绑定(bind)到单阶段)的执行将按照 pom.xml 中描述的顺序运行。

  • 想想你有的这些陈述一个简单的方法 - 将 (1) 和 (3) 绑定(bind)到不同的阶段。

    建议你绑定(bind)
  • (1) 和 (2) 到“预集成测试”阶段,以及
  • (3) 到“集成测试”阶段

  • 它将解决序列问题。另请参阅 maven docs 中的完整阶段列表为您的案例找到合适的阶段。

    你有另一种方式 ,如果您仅从 CI 服务器运行此方案。您可以通过 pom.xml 中的单独配置文件为显式多步骤构建配置构建作业:
  • 构建二进制文件
  • 迁移方案
  • 部署应用
  • 负载测试数据

  • 它更复杂且容易出错,所以我更喜欢第一种方式。

    关于Maven:在一个阶段将一个插件的多个执行与其他插件执行交错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17137505/

    相关文章:

    java - IntelliJ - 将 Java 项目/模块转换为 Maven 项目/模块

    java - Eclipse 不使用分类器将正确的 jar 复制到服务器部署文件夹

    java - 如何在 Maven 中跳过某个子模块的安装?

    使用 Maven 的 JavaFX 11 抛出异常 : "WindowsNativeRunloopThread"

    maven - 无法在 Spring Boot 应用程序(Tomcat 服务器)中运行本地主机

    java - 如何使用 onejar Maven 插件在 list 中设置额外的类路径条目?

    java - 使用 powermockito 验证 jacoco 覆盖率测试,无需 mvn 命令

    java - "Failed to execute goal org.apache.maven.plugins:maven-clean-plugin:2.4.1:clean (default-clean) on project"怎么解决?

    eclipse - 不完全支持对类型为test-jar的foo项目的依赖。

    java - 包 org.hamcrest 不存在