不能使用来自不同Maven模块的类 [英] Can't use classes from different Maven modules

查看:113
本文介绍了不能使用来自不同Maven模块的类的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

需要创建一个由注册模块和主项目组成的多模块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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆