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

ame*_*ire 6 java module java-ee pom.xml maven

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

例如:我ParentClaz在父母的src/main/java目录和ChildClaz子目录的src/main/java目录中有一个.现在这是不可能既不使用ParentClazChildClaz也不反之亦然.

该项目的结构如下所示:

+-- AdminPortal     <- parent root
   +-- registration <- child root
       -- pom.xml   <- child pom
   -- pom.xml       <- parent pom
Run Code Online (Sandbox Code Playgroud)

我的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>
Run Code Online (Sandbox Code Playgroud)

这是孩子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>
Run Code Online (Sandbox Code Playgroud)

怎样才能解决这个问题?

Mar*_*szS 6

您的父pom有包装类型pom,但事实并非如此jar.这是特殊的聚合器模块.所有Java代码都应该位于jar模块中.

包装类型的模块pom无法生成罐子,战争或耳朵等工件.

Maven by Example - 简单父项目

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

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

典型项目如下所示:

* administration project (pom)
   * registration (jar)
   * portal (war)
Run Code Online (Sandbox Code Playgroud)