【问题标题】:Maven projects - how to read a property that is defined in the pom file of a project that is added as a dependencyMaven 项目 - 如何读取作为依赖项添加的项目的 pom 文件中定义的属性
【发布时间】: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


【解决方案1】:

AFAIK 这是不可能的。为不同项目定义公共属性的常用方法是使用父 POM。在那里,您可以定义属性并让不同的项目从该父 POM 继承 - 这样,所有子项目的属性都是可见的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-04
    • 1970-01-01
    • 1970-01-01
    • 2012-10-22
    • 2011-01-28
    相关资源
    最近更新 更多