2017-03-08 35 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继承 - 这样,所有子项目的属性都可见。

相关问题