Maven项目-如何读取作为依赖项添加的项目的pom文件中定义的属性
我正在从事一个包含许多maven项目的大型项目。我们正在使用Maven 3.3.9 我想在另一个项目中使用在一个maven项目中定义的属性,但我无法访问该属性 情况是:有一个名为“ProductPackaging”的maven项目,它有一个包含一些属性的pom文件。这个maven项目只包含一个pom文件。它用于生成包含一组相互兼容的组件的包 还有另一个名为“projectX”的maven项目,它依赖于“产品包装”。在“projectX”中,我们希望使用“产品包装”中定义的属性 我想在projectX中添加xx ws-rest作为依赖项,并将版本设置为xx-ws-rest.version,这是在“产品打包”中定义的属性 “产品包装”的pom如下所示:Maven项目-如何读取作为依赖项添加的项目的pom文件中定义的属性,maven,dependencies,maven-3,pom.xml,Maven,Dependencies,Maven 3,Pom.xml,我正在从事一个包含许多maven项目的大型项目。我们正在使用Maven 3.3.9 我想在另一个项目中使用在一个maven项目中定义的属性,但我无法访问该属性 情况是:有一个名为“ProductPackaging”的maven项目,它有一个包含一些属性的pom文件。这个maven项目只包含一个pom文件。它用于生成包含一组相互兼容的组件的包 还有另一个名为“projectX”的maven项目,它依赖于“产品包装”。在“projectX”中,我们希望使用“产品包装”中定义的属性 我想在projec
<project ...>
...
<properties>
<xx-ws-rest.version>1.6.0</xx-ws-rest.version>
</properties>
...
</project>
<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>
...
1.6.0
...
“projectX”的pom如下所示:
<project ...>
...
<properties>
<xx-ws-rest.version>1.6.0</xx-ws-rest.version>
</properties>
...
</project>
<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>
...
1.6.0
...
公司产品
产品包装
${product packaging.version}
聚甲醛
进口
com.company.product.xx
xx ws rest
${xx ws-rest.version}
com.company.product.xx
xx ws rest
战争
....
AFAIK这是不可能的。为不同项目定义公共属性的常用方法是使用父POM。在那里,您可以定义属性并让不同的项目从父POM继承-这样,所有子项目的属性都是可见的。如果我没记错的话,您似乎误解了导入范围的概念。这将导入给定pom的dependencyManagement部分,该部分定义了依赖项的不同版本。之后,无需在依赖关系管理中再次定义版本。您可以简单地通过定义依赖项来使用它们,就像您已经做的那样。因此,如果最终在导入的pom中定义了依赖项com.company.product.xx:xx ws-rest,则不应再次使用属性定义依赖项。这将使您的导入范围pom(BOM)无效。。。