1

I have set-up a modular project in Maven with a parent project having more than one child projects.

The pom.xml of parent looks as follows -

<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>

The pom.xml of child projects looks as follows -

<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>

Now, I need to use one of the child projects as a lib in a separate unrelated project. The pom of the new project looks like below.

<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>

I keep getting the below error 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

The reason seems that I am inheriting the version attribute in child-model from prent-app.

Is there a way to overcome this issue? OR do I need to provide the version for each child module in respective pom.xml and cannot inherit from common parent.

Thanks in advance.

Ujjwal
  • 603
  • 12
  • 23

1 Answers1

0

There is a way to overcome this issue with relativePath but I would not recommend it (take a look at this answer)... You should always provide version for parent module. To update all versions of all modules (parent+children) you can use maven-version-plugin or maven-release-plugin.

Community
  • 1
  • 1
Arek
  • 3,106
  • 3
  • 23
  • 32