2013-01-08 70 views
1

我在自己的配置文件運行wsgen,因爲我不希望它運行每次我建立產品的時間。但我發現了一個錯誤關於丟失的版本,當我運行它:Maven:如何獲得配置文件以從父pom繼承dependencyManagement標記?

$ MVN包-P WSGEN [INFO]掃描的項目... [錯誤] 構建無法讀取1個項目 - > [幫助1] [錯誤] [錯誤] project project-ejb:2.3.15-SNAPSHOT (C:\ Projects \ MyProject \ pom.xml)有1個錯誤 [錯誤]
'build.plugins.plugin [org.jvnet.jax -WS-公地:JAXWS-行家-插件] .dependencies.dependency.version」 爲org.glassfish:javax.javaee:罐子已丟失。 @線167,柱41 [錯誤] [ERROR]要查看錯誤的完整堆棧跟蹤,重新運行 的Maven用-e開關。 [錯誤]使用-X開關重新運行Maven至 可啓用完整的調試日誌記錄。 [錯誤] [錯誤]更多有關 錯誤和可能的解決方案,請仔細閱讀以下條款: [錯誤] [說明1] http://cwiki.apache.org/confluence/display/MAVEN/ProjectBuildingException

這是孩子POM的片段(聚甲醛與配置文件):

<packaging>ejb</packaging> 
<parent> 
    <artifactId>MyProject</artifactId> 
    <groupId>project</groupId> 
    <version>2.3.15-SNAPSHOT</version> 
</parent> 
<profiles> 
    <profile> 
     <id>wsgen</id> 
      <build> 
       <plugins> 
        <plugin> 
         <groupId>org.jvnet.jax-ws-commons</groupId> 
         <artifactId>jaxws-maven-plugin</artifactId> 
         <version>2.1</version> 
         <executions> 
... 
       </executions> 
       <dependencies> 
        <dependency> 
         <groupId>org.glassfish</groupId> 
         <artifactId>javax.javaee</artifactId> 
        </dependency> 
       </dependencies> 
      </plugin> 
     </plugins> 
    </build> 
</profile> 

但是,在父POM我定義dependencyManagement標籤下其版本的依賴。

我覺得發生了什麼是個人資料,因此認爲缺少依賴的版本號不繼承父的dependencyManagement標籤。有沒有辦法讓配置文件繼承父級?

回答

3

dependencyManagement適用於dependenciesPOM和兒童勁歌。它不會在插件適用於dependencies(至少,這就是我在幾個插件,像Maven的依賴關係的插件注意到)。

一種可能的解決方案是在父POM定義一個屬性(javax.javaee.version),並且在dependencyManagement並在JAXWS-行家-plugin插件使用它。

+0

所以你說這有什麼好做的輪廓? –

+0

我不這麼認爲。 – asgoth

+0

我認爲你是對的,因爲當我直接在配置文件下定義dependencyManagement標記時,錯誤沒有改變。謝謝您的幫助。 –

2

您可以使用<pluginManagement>標記在父pom中配置插件,讓它成爲其版本號,階段,目標或其他配置。

只要你在子poms中聲明瞭相同的<groupId><artifactId>,所有繼承poms的配置將與父pom具有相同的配置。

+0

但是,如果@asgoth說的是真的,我仍然會使用該版本的變量,對吧? –

+0

@DanielKaplan你可以,但這不是必需的。看看上面鏈接中的例子。可以看出,子pom中的maven-jar-plugin沒有''標記(既不是硬編碼值也不是maven屬性)。 – matsev

+0

孩子避免版本,但父母需要版本。父pom的和''會使用相同的依賴關係,我最終會使用一個變量來避免DRY違規。至少據我所知。 –