Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Can't use classes from different Maven modules

Need to create a multi module maven project which consist of a registration module and main project. The problem is that it's impossible to use classes declared in different modules.

e.g.: I have a ParentClaz in my parent's src/main/java dir and ChildClaz in child's src/main/java dir. Right now it's not possible to use neither ParentClaz in ChildClaz nor vice versa.

The project's structure looks like this:

+-- AdminPortal     <- parent root
   +-- registration <- child root
       -- pom.xml   <- child pom
   -- pom.xml       <- parent pom

my AdminPortal POM:

<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>AdminPortal</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
<name>AdminPortal</name>
<url>http://maven.apache.org</url>

<modules>
    <module>registration</module>
</modules>

Here's child POM:

<modelVersion>4.0.0</modelVersion>

<parent>
    <groupId>com.example</groupId>
    <artifactId>AdminPortal</artifactId>
    <version>1.0-SNAPSHOT</version>
</parent>

<groupId>com.example.AdminPortal</groupId>
<artifactId>registration</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
<name>registration</name>
<url>http://maven.apache.org</url>

How can this problem be solved?

like image 609
amenoire Avatar asked Jan 08 '14 21:01

amenoire


1 Answers

Your parent pom has packaging type pom, this is not jar. This is special aggregator module. All java code should be located in jar modules.

Module with packaging type pom cant generate artifacts like jar, war or ear.

Maven by Example - The Simple Parent Project

The parent project doesn’t create a JAR or a WAR like our previous projects; instead, it is simply a POM that refers to other Maven projects.

To use Classes from one module in other module use maven dependency.

Typical project looks like this:

* administration project (pom)
   * registration (jar)
   * portal (war)
like image 145
MariuszS Avatar answered Oct 13 '22 17:10

MariuszS