编辑:我想做的就是在maven插件中调用maven默认阶段(这种情况是它的进程类)(在这种情况下是failafe插件)
Edit2:使标题更清晰,编辑了描述
美好的一天,
在自己这么做之后,我别无选择,只能问一个问题。
基本上这会运行我的集成测试。
mvn clean package -DskipTests
mvn verify
这很有效。我只需要一种方法来配置前两个命令,以便在预集成测试时执行,这样当用户输入mvn verify时,前两个命令会自动执行:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.3.1</version>
<executions>
<execution>
<id>clean-package</id>
<phase>pre-integration-test</phase>
<goals>
<goal>exec</goal>
</goals>
<configuration>
<executable>mvn</executable>
<arguments>
<argument>clean</argument>
<arguments>package</arguments>
<arguments>-Dmaven.test.skip</arguments>
</arguments>
</configuration>
</execution>
</executions>
</plugin>
我似乎无法找到执行上述阶段的maven中的插件。
你能指出我正确的方向吗?如果答案将被解释(我将彻底阅读文件),我将不胜感激。谢谢!
答案 0 :(得分:1)
如果我理解正确,如果有人拨打mvn clean package -DskipTests
,您会自动执行mvn verify
?这是对的吗?
首先,package
是life cycle phase。第二次通话中的verify
也是一个生命周期阶段。
Maven中的生命周期是mvn verify
所有阶段的方式
validate, initialize, generate-sources, process-sources, generate-resources,
process-resources, compile, process-classes, generate-test-sources,
process-test-sources, generate-test-resources, process-test-resources,
test-compile, process-test-classes, test, prepare-package, package,
pre-integration-test, integration-test, post-integration-test, verify
一个接一个地运行,这意味着包含package
阶段。
如果您真的想通过-DskipTests
进行单元测试,可以通过以下方式完成:
mvn -DskipTests verify
我不能推荐。
正如您所提到的,工件是一个包,它应该在package
阶段打包,然后您可以在生命周期中对其进行集成测试。
答案 1 :(得分:0)
如何使用exec-maven-plugin [1]
示例:
<project>
...
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.3.1</version>
<executions>
<execution>
<id>clean-process-classes</id>
<phase>pre-integration-test</phase>
<goals>
<goal>exec</goal>
</goals>
<configuration>
<executable>maven</executable>
<arguments>
<argument>clean</argument>
<argument>process-classes</argument>
</arguments>
</configuration>
</execution>
<execution>
<id>felix-bundle</id>
<phase>pre-integration-test</phase>
<goals>
<goal>exec</goal>
</goals>
<configuration>
<executable>maven</executable>
<arguments>
<argument>org.apache.felix:maven-bundle-plugin:bundle</argument>
<argument>-DskipTests</argument>
</arguments>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
...
</project>
注意:未经测试的代码。 注2:从技术上讲,“流程类”不是一个目标。这是一个maven阶段。目标附加到maven阶段,以便在执行该阶段时,它将执行附加到该阶段的所有目标以及之前附加到阶段的所有目标。在Maven中,目标的格式类似于[groupId:] artifactId:[version:]目标。一个很好的指标是,如果你看到一个结肠,这是一个maven的目标。如果它的前缀是' - '或' - ',那么它就是一个选项。否则,这是一个maven阶段。有关maven生命周期的更多信息,请参见[2]。
[1] http://mojo.codehaus.org/exec-maven-plugin/usage.html
[2] http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html