需要创建一个由注册模块和主项目组成的多模块maven项目。问题是不可能使用在不同模块中声明的类。
例如:我父母的src / main / java目录中有一个ParentClaz
,而孩子的src / main / java目录中有一个ChildClaz
。目前,ParentClaz
无法使用ChildClaz
,反之亦然。
项目的结构如下:
+-- AdminPortal <- parent root
+-- registration <- child root
-- pom.xml <- child pom
-- pom.xml <- parent pom
我的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>
这是孩子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>
如何解决这个问题?
答案 0 :(得分:6)
您的父pom包装类型为pom
,而不是jar
。这是特殊的聚合器模块。所有Java代码都应位于jar
模块中。
包装类型为pom
的模块无法生成jar,war或ear等文物。
Maven by Example - The Simple Parent Project
父项目不像以前的项目那样创建JAR或WAR;相反,它只是一个引用其他Maven项目的POM。
要使用其他模块中一个模块的类,请使用maven依赖。
典型项目如下所示:
* administration project (pom)
* registration (jar)
* portal (war)
答案 1 :(得分:0)
Child可以使用父依赖项,尝试将其添加到父
<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);
}
}
你将看到它编译。</ p>