不能使用来自不同Maven模块的类 [英] Can't use classes from different Maven modules
问题描述
需要创建一个由注册模块和主项目组成的多模块maven项目。问题是不可能使用在不同模块中声明的类。
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.
例如:我的 ParentClaz
child的src / main / java目录中的父src / main / java目录和 ChildClaz
。现在,不能在 ChildClaz
中同时使用 ParentClaz
,反之亦然。
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
我的AdminPortal 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>
这是孩子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>
如何解决这个问题?
推荐答案
您的父pom包装类型 pom
,这不是 jar
。这是特殊的聚合器模块。所有java代码都应该位于 jar
模块中。
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.
包装类型为 pom的模块
无法生成像jar,war或ear这样的工件。
Module with packaging type pom
cant generate artifacts like jar, war or ear.
Maven by Example - The Simple Parent Project
父项目不像以前的项目那样创建JAR或WAR;相反,它只是一个引用其他Maven项目的POM。
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.
要使用其他模块中一个模块的类,请使用maven依赖。
To use Classes from one module in other module use maven dependency.
典型项目如下所示:
* administration project (pom)
* registration (jar)
* portal (war)
这篇关于不能使用来自不同Maven模块的类的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!