Невозможно использовать классы из разных модулей 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);
}
}
и вы увидите, что он компилируется.