2014-10-29 45 views
6

默认情况下,在我的项目POM中,exec-maven-plugin, rpm-maven-plugin将被执行, 在本地编译/构建中不需要。从Maven中的命令行参数跳过exec-maven-plugin

我想跳过这些插件执行通过传递命令行参数 我试过下面的命令跳过他们像正常的插件,但没有工作,但!

MVN安装-Dmaven.test.skip =真-Dmaven.exec.skip =真 -Dmaven.rpm.skip =真

回答

13

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> 
+0

感谢。不知何故,我错过了。你能告诉我一下rpm-maven-plugin吗?我已经看到他们的项目页面,找不到任何东西:( – Reddy 2014-10-30 03:12:01

+0

rpm-maven-plugin没有跳过属性,这就是为什么你找不到它。AFAIK rpm是结束/包结果,所以我想知道恕我直言,大多数情况下,如果你需要跳过某些东西,这表明你的进程或你的POM结构/层次结构是不正确的。 – 2014-10-30 20:32:52

+1

它在本地Macbook中不起作用。有mac os的问题,我只是想跳过本地生成 – Reddy 2014-10-31 08:03:51

0

使用配置文件(尽可能少)和执行阶段,你可以实现你想要什么,不插件处理跳过属性:

插件配置:

<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 [...]