maven nested modules

Jackie
1 min readDec 28, 2021

following up with https://lwpro2.dev/2021/12/14/microservies-in-monorepo/, there are times it needs a set up of nested modules.

where for example, module A could contain module A1, module A2 for example.

the needed changes/set up for nested maven module is similar to the multi module set up. however, now module A needs to be with

<packaging>pom</packaging>

now.

similarly, the submodule should be included in module A.

<parent> <groupId>org.xxx</groupId> <artifactId>ParentModule</artifactId> <version>1.0-SNAPSHOT</version> </parent> <artifactId>ModuelA</artifactId> <packaging>pom</packaging> <modules> <module>ACore</module> <module>A1</module> <module>A2</module> </modules>

among the submodules, if A1 needs to use the code from ACore, the dependency scope should be compile, so that it would build A1 shaded with the classes from ACore.

<artifactId>A1</artifactId> <properties> <maven.compiler.source>8</maven.compiler.source> <maven.compiler.target>8</maven.compiler.target> </properties> <dependencies> <dependency> <groupId>org.xxx</groupId> <artifactId>ACore</artifactId> <version>1.0-SNAPSHOT</version> <scope>compile</scope> </dependency> </dependencies>

this will work out within IDE. as for build or packaging, the command to build the nested jars are

mvn clean package -pl ModuleA-am -amd

-am will include upstream dependency for example module Core

where -amd will include the nested modules, for example ACore, A1 and A2.

Published

Originally published at https://lwpro2.dev on December 28, 2021.

--

--