【问题标题】:Invoke default phase on maven plugin execution在 Maven 插件执行时调用默认阶段
【发布时间】:2014-06-16 13:57:36
【问题描述】:

编辑:我要做的就是在 maven 插件(在这种情况下为故障安全插件)中调用 maven 默认阶段(在这种情况下是它的进程类)

Edit2:使标题更清晰,编辑描述

早安,

在做完这件事后,我别无选择,只能问一个问题。

基本上这可以很好地运行我的集成测试。

mvn clean package -DskipTests
mvn verify

这很好用。我只需要一种方法来配置前两个命令在 pre-integration-test 上执行,这样当用户输入 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 中找到执行上述阶段的插件。

你能给我指出正确的方向吗?如果能解释答案,我将不胜感激(我会仔细阅读文档)

谢谢!

【问题讨论】:

  • 首先你已经写到你的集成测试正在运行,但没有问如何使用mave-failsafe-plugin来做到这一点?您提到了与集成测试或 maven-failsafe-plugin 无关的事情,您能否详细说明您已经做了什么,您希望实现什么,以及哪些不符合您的预期。
  • 我只需要在运行集成测试之前打包捆绑包:)。我使用 pax 考试进行集成测试,但是现在这无关紧要。这也是为了将来参考如何在某些插件 TLDR 上调用 maven 默认目标;在预集成测试阶段调用流程类。谢谢

标签: maven maven-3 integration-testing maven-plugin


【解决方案1】:

如果我理解正确,如果有人调用mvn verify,您想自动执行mvn clean package -DskipTests?这是正确的吗?

第一件事是packagelife 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 阶段打包,然后您可以在其生命周期中对其运行集成测试。

【讨论】:

    【解决方案2】:

    如何使用 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:]goal。一个很好的指标是,如果你看到一个冒号,它就是一个 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

    【讨论】:

    • 尝试通过上面的编辑配置进行操作,但不起作用。
    猜你喜欢
    • 2015-04-23
    • 1970-01-01
    • 1970-01-01
    • 2011-04-14
    • 2011-12-09
    • 2014-11-17
    • 2014-03-29
    • 2015-11-05
    • 2012-10-26
    相关资源
    最近更新 更多