如果您希望在父pom中抑制的執行被標記爲id
,則Ryan Stewart的答案有效。但是,如果父pom不用id
標記執行(當然,您不能編輯該父pom),那麼我發現執行以下操作會抑制父pom的操作。
- 首先設置執行到
none
- 階段創建另一個執行,給它一個
id
和做它,你需要它做什麼。
- 運行
mvn help:effective-pom
以確認它已正確地抑制了您需要從父pom中抑制的內容。
下面是一個例子: 這是我的父POM怎麼看起來像:
<plugin>
<artifactId>maven-source-plugin</artifactId>
<version>2.1.2</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
<inherited>true</inherited>
</plugin>
我需要的目標更改爲jar-no-fork
。請注意,父pom中的執行沒有id
,我可以用它來禁用它。因此,這裏就是添加到我的孩子POM:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<executions>
<execution>
<phase>none</phase>
</execution>
<execution>
<id>attach-sources</id>
<goals>
<goal>jar-no-fork</goal>
</goals>
</execution>
</executions>
</plugin>
因此,這是有效的,聚甲醛的樣子:
<plugin>
<artifactId>maven-source-plugin</artifactId>
<version>2.2.1</version>
<executions>
<execution>
<phase>none</phase>
<goals>
<goal>jar</goal>
</goals>
<configuration>
<archive>
<compress>false</compress>
</archive>
</configuration>
</execution>
<execution>
<id>attach-sources</id>
<goals>
<goal>jar-no-fork</goal>
</goals>
<configuration>
<archive>
<compress>false</compress>
</archive>
</configuration>
</execution>
</executions>
<inherited>true</inherited>
<configuration>
<archive>
<compress>false</compress>
</archive>
</configuration>
</plugin>
這確保了目標jar
從來沒有運行,只有目標jar-no-fork
執行 - 這是我想要達到的。
太棒了,我知道它會是這樣的,但我仍然是一個黃帶(如果你沒有從我最近的歷史中的Maven問題的蹤跡中猜到)。我無法將項目移動到不同的父母,因爲[this](http://stackoverflow.com/questions/7589931/how-should-i-share-maven-depdendencymanagement-from-multiple-sources),但我會取消綁定報告插件。謝謝! – Coderer
如果沒有爲父模塊中的插件指定'',則此方法不起作用。 –
EvgeniySharapov
@evgeniysharapov在這種情況下,您仍然可以在子模塊中使用'無 ',請參閱[本答案](http://stackoverflow.com/a/14653088/1155724)。 –