如何在maven中包含插件以仅用于测试构建?

时间:2017-07-28 07:40:01

标签: maven testing

我想在maven项目中添加插件。我希望只有在构建用于测试目的的项目时才将其添加到构建中。

我发现<scope>可用于依赖,如下所示

<dependency>
  <groupId>ch.qos.logback</groupId>
  <artifactId>logback</artifactId>
  <version>0.5</version>
  <scope>test</scope>
</dependency>

正如您在此处所见,<scope>test</scope>已被使用。

我想要插件类似的东西。例如,这是我的插件代码snipplet

   <build>
        <plugins>
            <plugin>
                <groupId>org.jibx</groupId>
                <artifactId>jibx-maven-plugin</artifactId>
                <version>1.2.4</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>bind</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

2 个答案:

答案 0 :(得分:1)

您可以创建在测试版本中激活的配置文件:

<profiles>
    <profile>
        <id>testing</id>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.jibx</groupId>
                    <artifactId>jibx-maven-plugin</artifactId>
                    <version>1.2.4</version>
                    <executions>
                        <execution>
                            <goals>
                                <goal>bind</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>
   </profile>
</profile>

然后使用参数-P testing调用mvn来激活您的个人资料:

mvn test -P testing

除了手动激活配置文件外,还可以根据环境变量或特定文件的存在等条件自动激活配置文件。您可以在Maven introduction on profiles

中找到有关此内容的更多信息

答案 1 :(得分:1)

您可以通过执行将插件绑定到阶段:

<build>
  <plugins>
    <plugin>
      <groupId>org.jibx</groupId>
      <artifactId>jibx-maven-plugin</artifactId>
      <version>1.2.4</version>
      <executions>
        <execution>
          <phase>test</phase>
          <goals>
            <goal>bind</goal>
          </goals>
        </execution>
      </executions>
    </plugin>
  </plugins>
</build>

问题我在process-classes阶段看到usually this plugin runs这是由插件作者故意完成的。所以我不会仅在测试阶段使用它。 ..