2011-07-20 83 views
5

似乎無法覆蓋插件執行的目標定義。覆蓋給定執行ID的Maven插件目標定義

讓說我有碼頭的父配置,定義了

    <execution> 
         <id>start-jetty</id> 
         <phase>pre-integration-test</phase> 
         <goals> 
          <goal>run</goal> 
         </goals> 
        </execution> 

現在我在本地要對特定項目的目標運行爆炸

如果我嘗試重寫父定義與

    <execution> 
         <id>start-jetty</id> 
         <phase>pre-integration-test</phase> 
         <goals> 
          <goal>run-exploded</goal> 
         </goals> 
        </execution> 

然後我有有效的POM本地項目成爲

    <execution> 
         <id>start-jetty</id> 
         <phase>pre-integration-test</phase> 
         <goals> 
          <goal>run</goal> 
          <goal>run-exploded</goal> 
         </goals> 
        </execution> 

我很驚訝,因爲我一直認爲它會覆蓋。

這是Maven3中的新行爲嗎?

有無論如何得到重寫的行爲,而不是現在的?

回答

10

我發現的方法是禁用繼承的配置並創建一個新問題:

    <execution> 
         <id>start-jetty</id> 
         <phase>none</phase> 
        </execution> 
        <execution> 
         <id>my-start-jetty</id> 
         <phase>pre-integration-test</phase> 
         <goals> 
          <goal>run-exploded</goal> 
         </goals> 
        </execution> 
2

那麼這是繼承按照設計的方式工作。您應該考慮從父pom中刪除您的jetty配置並將其放入配置文件中,或者嘗試使用值爲false的<inherited>元素,然後查看它是否適用於您。

+0

好了解遺傳,但與碼頭插件一個奇怪的行爲,再說,那根本不是我想要的,我需要繼承。 – nodje

+0

如果你在全球範圍內解釋這個問題,那更多的是關於兒童poms中的插件重寫而不是關於運行Jetty本身。 –