1

我在 Maven 中建立了一个模块化项目,其父项目有多个子项目。

pom.xml父母看起来如下-

<project ...>
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.company</groupId>
    <artifactId>parent-app</artifactId>
    <version>${parent-application.version}</version>
    <packaging>pom</packaging>

    <dependencies>...</dependencies>

    <properties>
        <parent-application.version>1.0</parent-application.version>
    </properties>

    <modules>
        <module>parent-model</module>
        <module>parent-masters</module>
        <module>parent-web</module>
    </modules>
</project>

pom.xml子项目如下所示-

<project ...>
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>com.company</groupId>
        <artifactId>parent-app</artifactId>
        <version>${parent-application.version}</version>
    </parent>

    <packaging>jar</packaging>
    <artifactId>child-model</artifactId>

    <dependencies>...</dependencies>
</project>

现在,我需要在一个单独的不相关项目中使用其中一个子项目作为库。新项目的 pom 如下所示。

<project ...>
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.company</groupId>
    <artifactId>unrelated-app</artifactId>
    <version>1.0</version>

    <dependencies>
        <dependency>
            <groupId>com.company</groupId>
            <artifactId>child-model</artifactId>
            <version>1.0</version>
        </dependency>
    </dependencies>
</project>

我不断收到以下错误 Illegal character in path at index 57: http://repo.maven.apache.org/maven2/com/company/parent-app/${parent-application.version}/parent-app-${parent-application.version}.pom

原因似乎是我从 prent-app 继承了 child-model 中的 version 属性。

有没有办法克服这个问题?或者我是否需要在各自的 pom.xml 中为每个子模块提供版本,并且不能从公共父级继承。

提前致谢。

4

1 回答 1

0

有一种方法可以解决这个问题,relativePath但我不推荐它(看看这个答案)......你应该总是为父模块提供版本。要更新所有模块(父+子)的所有版本,您可以使用maven-version-pluginmaven-release-plugin

于 2015-04-28T11:08:20.540 回答