Невозможно использовать классы из разных модулей Maven

необходимо создать многомодульный проект maven, который состоит из регистрационного модуля и основного проекта. Проблема в том, что невозможно использовать классы, объявленные в разных модулях.

например: у меня ParentClaz в src/main/java моего родителя иChildClaz в детском src / main / java dir. Прямо сейчас невозможно использовать ни ParentClaz на ChildClaz и наоборот.

структура проекта выглядит следующим образом:

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

мой AdminPortal Пом:

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

вот ребенок пом:

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

как можно решить эту проблему?

2 ответов


ваш родительский pom имеет тип упаковки pom, это не jar. Это специальный модуль агрегатора. Весь код java должен быть расположен в jar модули.

модуль с типом упаковки pom Не могу генерировать артефакты, такие как jar, war или ear.

Maven на примере-простой Родительский проект

Родительский проект не создает банку или войну, как наши предыдущие проекты; вместо этого это просто POM, который относится к другим проект Maven.

для использования классов из одного модуля в другом модуле используйте зависимость maven.

типичный проект выглядит так:

* administration project (pom)
   * registration (jar)
   * portal (war)

ребенок может использовать родительские зависимости, попробуйте добавить это в parent

<dependencies>
    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.14</version>
    </dependency>
</dependencies>

и сделать этот класс в детей

import org.apache.log4j.Logger;

public class Test {
    public static void main(String[] args) {
        Logger.getLogger(Test.class);
    }
}

и вы увидите, что он компилируется.