如何访问maven多模块父java类?

How to access maven multi-module parent java classes?

在一个多模块的Maven项目中,父项目可以在其中实现java 类吗?如果是,那么我们如何在子项目中使用那些类(因为父项目被打包为pom)?

是的,可以。但是它们不会被构建(默认情况下),因为 <packaging>pom 创建一个 .pom 文件,没有 .jar.war

此外,这是 Maven 项目的一种绝对不寻常的方式 structure/configuration。我强烈建议在任何情况下都避免这种情况,因为这是针对 Maven 而不是与它一起工作。

还请记住,multi-module/aggregator 项目不是(必然)其子模块的父项目。如果其他模块将项目声明为 <parent>,则该项目是父项目。这样的父级可以是一个聚合器,通常它实际上是一个,但不一定是一个。

另见 POM Reference, Inheritance v. Aggregation:

[...] You often see projects that are both parents and aggregators. [...] However, an aggregator project and a parent project are both POM projects, they are not one and the same and should not be confused. A POM project may be inherited from - but does not necessarily have - any modules that it aggregates. Conversely, a POM project may aggregate projects that do not inherit from it.

长话短说,有以下关系:

  • Aggregator¹ (<packaging>pom) → (sub-)modules ... for, well, aggregate of (sub-)modules
  • 父项目(<packaging>pom¹|jar|war|...)←子项目...继承(从父到子的POM配置)

多模块项目中的父项目不应包含任何源代码。

源代码属于模块。

如果您需要共享源代码,请编写一个 common 模块并将其用作其他模块的依赖项。