【问题标题】:Maven failsafe does not run tests in submoduleMaven 故障安全不在子模块中运行测试
【发布时间】:2017-11-26 01:32:52
【问题描述】:

我有一个项目,其父目录在其pom.xml 中包含以下内容:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-failsafe-plugin</artifactId>
  <version>2.20.1</version>
  <executions>
    <execution>
      <goals>
        <goal>integration-test</goal>
        <goal>verify</goal>
      </goals>
    </execution>
  </executions>
</plugin>

<modules>
  <module>submodule</module>
</modules>

子模块子目录再次包含一个 pom.xml 并引用其父工件。如果我将故障安全插件移动到子模块的pom.xml 中,然后从父目录调用mvn verify,子目录还包含许多集成测试,这些测试运行良好,但这不适用于当前(首选)设置(没有错误,测试根本不执行)。

我尝试在故障安全插件的配置中将子模块工件添加到dependenciesToScan,但这并没有解决问题。我是否需要将子模块添加为父 pom.xml 中的依赖项?因为这会导致在处理 pom.xml 时出现“依赖项正在引用自身”错误。

我们将不胜感激。

编辑:我已经弄清楚了,从事该项目的其他人已将 build 部分包装在 profile 部分中,起初我没有意识到这一点,因为整个文件相当大且笨拙,而我有忽略了相应的 git commit。通过撤消该更改并按照 Gerald Broser 发布的链接中的说明,我设法解决了我的问题(我想只执行相应的配置文件也可以解决问题,但无论如何都不需要更改)。

【问题讨论】:

  • 你在哪里定义了这个插件,在pluginManagement部分还是直接在build部分?
  • 根据 Gerold Broser 发布的链接,在父 pom 中的 pluginManagement 部分和子 pom 中的 plugins 部分中。
  • 通过“一个 pom.xml 并引用其父工件”您指的是 &lt;parent&gt; 部分,而不是 &lt;dependency&gt; 部分,对吗?请从第二层(第一层是&lt;project&gt;)向下提供所有POM的相关部分。

标签: java maven maven-failsafe-plugin


【解决方案1】:

Maven Failsafe Plugin / Usage / Usage in multi-module projects:

当您在父 pom 中定义故障安全插件的共享定义时,定义执行 ID 以允许子项目覆盖配置被认为是最佳实践。

【讨论】:

  • 你是对的,该链接清楚地说明了如何设置它,但即使在调整了我的 pom 之后,集成测试也永远不会运行。
【解决方案2】:

试着打电话

mvn clean verify -P <module>

【讨论】:

  • 这只会导致警告:The requested profile "submodule" could not be activated because it does not exist.
  • -P 选项用于指定与构建一起运行的配置文件,而不是运行的模块。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-11-12
  • 2016-02-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-30
  • 2014-04-03
相关资源
最近更新 更多