不能使用来自不同Maven模块的类

需要创建一个由注册模块和主项目组成的多模块maven项目。 问题是不可能使用在不同模块中声明的类。

例如:我在父母的src / main / java目录中有一个ParentClazParentClaz的src / main / java目录中有一个ChildClaz 。 现在,不可能在ChildClaz既不使用ParentClaz也不反之亦然。

该项目的结构如下所示:

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

我的AdminPortal POM:

 4.0.0 com.example AdminPortal pom 1.0-SNAPSHOT AdminPortal http://maven.apache.org  registration  

这是孩子POM:

 4.0.0  com.example AdminPortal 1.0-SNAPSHOT  com.example.AdminPortal registration 1.0-SNAPSHOT war registration http://maven.apache.org 

怎样才能解决这个问题?

您的父pom有包装类型pom ,这不是jar 。 这是特殊的聚合器模块。 所有java代码都应该位于jar模块中。

包装类型的模块不能生成jar子,战争或耳朵等工件。

Maven by Example – 简单父项目

父项目不像以前的项目那样创建JAR或WAR; 相反,它只是一个引用其他Maven项目的POM。

要在其他模块中使用来自一个模块的类,请使用maven依赖项。

典型项目如下所示:

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

子可以使用父依赖项,尝试将其添加到父级

   log4j log4j 1.2.14   

在小孩子里做这个class

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

你会看到它编译。