2014-10-29 207 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 [...]