Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Maven项目-如何读取作为依赖项添加的项目的pom文件中定义的属性_Maven_Dependencies_Maven 3_Pom.xml - Fatal编程技术网

Maven项目-如何读取作为依赖项添加的项目的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

我正在从事一个包含许多maven项目的大型项目。我们正在使用Maven 3.3.9

我想在另一个项目中使用在一个maven项目中定义的属性,但我无法访问该属性

情况是:有一个名为“ProductPackaging”的maven项目,它有一个包含一些属性的pom文件。这个maven项目只包含一个pom文件。它用于生成包含一组相互兼容的组件的包

还有另一个名为“projectX”的maven项目,它依赖于“产品包装”。在“projectX”中,我们希望使用“产品包装”中定义的属性

我想在projectX中添加xx ws-rest作为依赖项,并将版本设置为xx-ws-rest.version,这是在“产品打包”中定义的属性

“产品包装”的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
...
“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)无效。。。