1

The simplified setup of my project is as follows:

root |--parent |--service-1 |--service-2 |--service-aggregator

I need to assemble the 'service-1' & 'service-2' modules in 'service-aggregator'. I am using maven-assembly-plugin for the same and it works fine, however I foresee a maintenance issue wherein whenever the version of either of service-1 or service-2 will change, I will need to update the service-aggregator pom.xml also.

Hence, I am looking for a way to prevent writing the version of the service-1 / -2 in the service-aggregator pom.xml i.e. I just need service-aggregator to simply pick the latest version of service-1 / -2.

I have gone through the examples provided in maven-assembly-plugin documentation but those contain the version being mentioned in the assembly module (service-aggregator in my example).

Please let me know if any detail is missing & I will add it.

Here is the key contents of service-aggregator pom.xml:

<modelVersion>4.0.0</modelVersion>
<parent>
    <groupId>com.company.project</groupId>
    <artifactId>parent</artifactId>
    <version>0.0.1</version>
</parent>
<groupId>com.company.project.parent</groupId>
<artifactId>service-aggregator</artifactId>

<name>service-aggregator</name>
<dependencies>
    <dependency>
        <groupId>com.company.project.parent</groupId>
        <artifactId>service-1</artifactId>
        <version>0.0.1</version> <!-- this is the line troubling me -->
    </dependency>
    <dependency>
        <groupId>com.company.project.parent</groupId>
        <artifactId>service-2</artifactId>
        <version>0.0.1</version> <!-- this is the line troubling me -->
    </dependency>
</dependencies>

<build>
    <plugins>
        <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
            <version>2.6</version>
            <configuration>
                <descriptorRefs>
                    <descriptorRef>jar-with-dependencies</descriptorRef>
                </descriptorRefs>
                <skipAssembly>${skip.assembly}</skipAssembly>
            </configuration>
            <executions>
                <execution>
                    <id>make-assembly</id>
                    <phase>package</phase>
                    <goals>
                        <goal>single</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>
<properties>
    <skip.assembly>false</skip.assembly>
</properties>

Sachin Lala
  • 715
  • 1
  • 8
  • 18
  • 1
    This might help https://stackoverflow.com/questions/30571/how-do-i-tell-maven-to-use-the-latest-version-of-a-dependency – Rohan Aug 17 '17 at 18:07

1 Answers1

1

The best thing is to use properties like this:

<modelVersion>4.0.0</modelVersion>
<parent>
    <groupId>com.company.project</groupId>
    <artifactId>parent</artifactId>
    <version>0.0.1</version>
</parent>
<groupId>com.company.project.parent</groupId>
<artifactId>service-aggregator</artifactId>

<name>service-aggregator</name>
<dependencies>
    <dependency>
        <groupId>com.company.project.parent</groupId>
        <artifactId>service-1</artifactId>
        <version>${project.version}</version> 
    </dependency>
    <dependency>
        <groupId>com.company.project.parent</groupId>
        <artifactId>service-2</artifactId>
        <version>${project.version}</version> 
    </dependency>
</dependencies>

<build>
    <plugins>
        <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
            <version>2.6</version>
            <configuration>
                <descriptorRefs>
                    <descriptorRef>jar-with-dependencies</descriptorRef>
                </descriptorRefs>
                <skipAssembly>${skip.assembly}</skipAssembly>
            </configuration>
            <executions>
                <execution>
                    <id>make-assembly</id>
                    <phase>package</phase>
                    <goals>
                        <goal>single</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>
khmarbaise
  • 92,914
  • 28
  • 189
  • 235