从Maven的Command Line Argument中跳过exec-maven-plugin

时间:2014-10-29 17:55:13

标签: maven plugins execution skip

默认情况下,在我的项目POM中,exec-maven-plugin, rpm-maven-plugin将被执行, 这在本地编译/构建中不是必需的。

我想通过传递命令行参数来跳过这些插件执行 我尝试下面的命令跳过它们像普通的插件一样,但是没有工作!

  

mvn install -Dmaven.test.skip = true -Dmaven.exec.skip = true   -Dmaven.rpm.skip =真

3 个答案:

答案 0 :(得分:18)

这个page应该告诉你cmdline传递的参数的名称(即用户属性)被称为skip,这是一个选择不当的名字。要解决此问题,请执行以下操作:

<properties>
  <maven.exec.skip>false</maven.exec.skip> <!-- default -->
</properties>
...
<plugin>
  <groupId>org.codehaus.mojo</groupId>
  <artifactId>exec-maven-plugin</artifactId>
  <version>1.3.2</version>
  <configuration>
    <skip>${maven.exec.skip}</skip>
  </configuration>
</plugin>

答案 1 :(得分:5)

答案 2 :(得分:1)

使用配置文件(尽可能少)和执行阶段,您可以实现无法处理skip属性的插件所需的内容:

插件配置:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>rpm-maven-plugin</artifactId>
    <executions>
        <execution>
            <phase>${rpmPackagePhase}</phase>
            <id>generate-rpm</id>
            <goals>
                <goal>rpm</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
    ...
    </configuration>
</plugin>

配置文件配置:

<profiles>
    <profile>
        <id>default</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <properties>
            <rpmPackagePhase>none</rpmPackagePhase>
        </properties>
    </profile>
    <profile>
        <id>rpmPackage</id>
        <activation>
            <property>
                <name>rpm.package</name>
                <value>true</value>
            </property>
        </activation>
        <properties>
            <rpmPackagePhase>package</rpmPackagePhase>
        </properties>
    </profile>
</profiles>

调用:

mvn package -Drpm.package=true [...]