运行 独立于 mvn clean package 的 maven 多模块故障安全任务
Running maven multi-module failsafe tasks independently from mvn clean package
我有一个多模块项目a
。子模块 x
包括一个简单的集成测试,它还需要对子模块 y
的依赖。
我希望能够将编译和打包阶段与 运行测试分开。当我运行以下命令时,集成测试运行成功
mvn clean verify
当我运行以下命令时,它失败了
mvn clean package && mvn failsafe:integration-test failsafe:verify
[ERROR] Failed to execute goal on project x: Could not resolve dependencies for project a:x:jar:1.0-SNAPSHOT: Could not find artifact a:y:jar:1.0-SNAPSHOT -> [Help 1]
根本原因是我想在编译完成后 运行 在单独的 jenkins 任务中分别进行单元测试和各种集成测试(无需再次 运行ning 编译和打包阶段) .可重现的代码在这里 https://github.com/itaifrenkel/failsafe-test。使用 Maven 版本 3.2.1.
澄清:我无法在 jenkins 机器上安装 mvn,因为我有不同 git 版本的并发构建(具有相同的 maven 版本)。
执行mvn clean verify
时,构建成功:Maven解析了y
依赖,因为它在同一个project reactor and y
was packaged successfully into a jar
inside this reactor. If you take a look at the log, you will notice that this command triggered the maven-jar-plugin
, which is expected since this plugin is bound to the package
phase and verify
phase comes after it in the build lifecycle.
命令mvn clean package && mvn failsafe:integration-test failsafe:verify
实际上执行了2条命令。首先,mvn clean package
会成功并打包应用(同理:y
在reactor中,被打包成一个jar
)。
然而,对于第二个构建,mvn failsafe:integration-test failsafe:verify
,由于y
没有被打包到reactor中的jar
,Maven不能直接解析依赖,所以它需要在存储库中查找它。由于此工件从未安装在存储库中(并且显然在 Maven Central 中不可用),因此无法解决依赖关系,因此出现错误消息
因此,您有 2 种可能的解决方案:
使用 mvn install
:
将 y
依赖项安装到本地存储库
mvn clean install && mvn failsafe:integration-test failsafe:verify
运行 jar:jar
在集成测试之前,以便 Maven 可以解析 y
依赖项。这不会重建项目:它通过简单地要求 maven-jar-plugin
从先前构建的结果中生成 jar
来假设该项目之前已经构建。
mvn clean package && mvn jar:jar failsafe:integration-test failsafe:verify
我有一个多模块项目a
。子模块 x
包括一个简单的集成测试,它还需要对子模块 y
的依赖。
我希望能够将编译和打包阶段与 运行测试分开。当我运行以下命令时,集成测试运行成功
mvn clean verify
当我运行以下命令时,它失败了
mvn clean package && mvn failsafe:integration-test failsafe:verify
[ERROR] Failed to execute goal on project x: Could not resolve dependencies for project a:x:jar:1.0-SNAPSHOT: Could not find artifact a:y:jar:1.0-SNAPSHOT -> [Help 1]
根本原因是我想在编译完成后 运行 在单独的 jenkins 任务中分别进行单元测试和各种集成测试(无需再次 运行ning 编译和打包阶段) .可重现的代码在这里 https://github.com/itaifrenkel/failsafe-test。使用 Maven 版本 3.2.1.
澄清:我无法在 jenkins 机器上安装 mvn,因为我有不同 git 版本的并发构建(具有相同的 maven 版本)。
执行mvn clean verify
时,构建成功:Maven解析了y
依赖,因为它在同一个project reactor and y
was packaged successfully into a jar
inside this reactor. If you take a look at the log, you will notice that this command triggered the maven-jar-plugin
, which is expected since this plugin is bound to the package
phase and verify
phase comes after it in the build lifecycle.
命令mvn clean package && mvn failsafe:integration-test failsafe:verify
实际上执行了2条命令。首先,mvn clean package
会成功并打包应用(同理:y
在reactor中,被打包成一个jar
)。
然而,对于第二个构建,mvn failsafe:integration-test failsafe:verify
,由于y
没有被打包到reactor中的jar
,Maven不能直接解析依赖,所以它需要在存储库中查找它。由于此工件从未安装在存储库中(并且显然在 Maven Central 中不可用),因此无法解决依赖关系,因此出现错误消息
因此,您有 2 种可能的解决方案:
使用
将mvn install
:y
依赖项安装到本地存储库mvn clean install && mvn failsafe:integration-test failsafe:verify
运行
jar:jar
在集成测试之前,以便 Maven 可以解析y
依赖项。这不会重建项目:它通过简单地要求maven-jar-plugin
从先前构建的结果中生成jar
来假设该项目之前已经构建。mvn clean package && mvn jar:jar failsafe:integration-test failsafe:verify