2017-03-08 36 views
0

我正在處理包含許多Maven項目的大型項目。我們正在使用Maven 3.3.9。Maven項目 - 如何讀取作爲依賴項添加的項目的pom文件中定義的屬性

我想使用在另一個項目中的一個maven項目中定義的屬性,但我無法訪問該屬性。

現在的情況是:有一個稱爲「產品包裝」的maven項目,它有一個包含一些屬性的pom文件。這個maven項目只包含一個pom文件。它用於生成包含一組相互兼容的組件的包。

還有另一個名爲「projectX」的maven項目,它依賴於「產品包裝」。在「projectX」中,我們想要使用在「產品包裝」中定義的屬性。

我要添加XX-WS-其餘部分在projectX創建的依賴,我想設置的版本XX-WS-rest.version,這是在「產品包裝」

定義的一個屬性

「產品包裝」 的POM樣子:

<project ...> 
... 
    <properties> 
     <xx-ws-rest.version>1.6.0</xx-ws-rest.version> 
    </properties> 
... 
</project> 

「projectX創建」 的POM樣子:

<project ...> 
    ... 
    <properties> 
     <product-packaging.version>1.6.0</product-packaging.version> 
    </properties> 
    ... 
    <dependencyManagement> 
     <dependencies> 
      <dependency> 
       <groupId>com.company.product</groupId> 
       <artifactId>product-packaging</artifactId> 
       <version>${product-packaging.version}</version> 
       <type>pom</type> 
       <scope>import</scope> 
      </dependency> 
      <dependency> 
       <groupId>com.company.product.xx</groupId> 
       <artifactId>xx-ws-rest</artifactId> 
       <version>${xx-ws-rest.version}</version> 
      </dependency> 
     </dependencies> 
    </dependencyManagement> 

    <dependencies> 
     <dependency> 
      <groupId>com.company.product.xx</groupId> 
      <artifactId>xx-ws-rest</artifactId> 
      <type>war</type> 
     </dependency> 
     .... 
    </dependencies> 
</project> 
+0

如果我正確地看到你似乎誤解了導入範圍的概念。這將導入給定pom的dependencyManagement部分,該部分定義了您的依賴關係的不同版本。之後,您不需要再次在依賴項管理中定義版本。你可以簡單地通過定義依賴關係來使用它們。所以最後如果你在導入的pom中定義了依賴關係com.company.product.xx:xx-ws-rest,你不應該再次用屬性定義依賴關係。這將使您的導入範圍POM(BOM)無用... – khmarbaise

回答

0

AFAIK這是不可能的。爲不同項目定義公共屬性的常用方法是使用父POM。在那裏,您可以定義屬性並讓不同的項目從該父POM繼承 - 這樣,所有子項目的屬性都可見。

相關問題