【发布时间】:2017-07-28 21:13:04
【问题描述】:
我正在处理一个包含许多 Maven 项目的大型项目。我们正在使用 Maven 3.3.9。
我想在另一个项目中使用一个 maven 项目中定义的属性,但我无法访问该属性。
情况是:有一个名为“product-packaging”的maven项目,它有一个包含一些属性的pom文件。这个 maven 项目只包含一个 pom 文件。它用于生成包含一组相互兼容的组件的包。
还有一个名为“projectX”的 maven 项目依赖于“product-packaging”。在“projectX”中,我们想使用在“product-packaging”中定义的属性。
我想将 xx-ws-rest 添加为 projectX 中的依赖项,并且我想将版本设置为 xx-ws-rest.version,这是在“product-packaging”中定义的属性
“产品包装”的 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>
【问题讨论】:
-
如果我没看错,您似乎误解了导入范围的概念。这将导入定义不同版本依赖项的给定 pom 的 dependencyManagement 部分。之后,您不需要在依赖管理中再次定义版本。您可以像以前那样定义依赖项来简单地使用它们。因此,最后如果您在导入的 pom 中定义了依赖项 com.company.product.xx:xx-ws-rest ,则不应再次使用属性定义依赖项。这将使您的导入范围 pom (BOM) 无用...
标签: maven dependencies maven-3 pom.xml