子模块可以在 Maven 中使用反应器作为父模块吗?

Can the submodules use the reactor as parent in Maven?

你好 Whosebug 社区,

我最近开始使用 maven,看看有什么可能或更好,看看是否更容易拥有依赖管理器或包含所有内容。

基本信息

存储库

https://github.com/JXCoding/MavenTests

反应堆

<groupId>de.jxson.maven</groupId>
<artifactId>MavenTests</artifactId>
<packaging>pom</packaging>
<version>1.0.0-SNAPSHOT</version>

<modules>
    <module>API</module>
    <module>v1_18_R1</module>
</modules>

子模块API

<parent>
  <artifactId>MavenTests</artifactId>
  <groupId>de.jxson.maven</groupId>
  <version>1.0.0-SNAPSHOT</version>
</parent>

<artifactId>API</artifactId>

<dependencies>
...
</dependencies>

这取决于反应器作为父

子模块v1_18_R1

<parent>
    <artifactId>MavenTests</artifactId>
    <groupId>de.jxson.maven</groupId>
    <version>1.0.0-SNAPSHOT</version>
</parent>
<artifactId>v1_18_R1</artifactId>

<dependencies>
  <dependency>
      <groupId>de.jxson.maven</groupId>
      <artifactId>API</artifactId>
      <version>1.0.0-SNAPSHOT</version>
      <scope>compile</scope>
  </dependency>
</dependencies>

这取决于 API 和 reactor 作为父级

我的问题是:

当我使用 mvn clean package 构建时,我的模块 v1_18_R1 出现错误,其中未找到来自 API 的 class。

问题:

如果已经添加了所需的依赖项,为什么找不到 class?

通常 maven reactor用于:

  • 收集所有可用模块进行构建
  • 将项目排序为正确的构建顺序
  • 按顺序构建选定的项目

并且不作为其他项目的父级。如果您需要集中库、版本等,请使用 <packaging>pom</packaging>.

创建一个额外的项目

解决方案

  • 从您的子模块中移除 parent
  • 将此添加到所有需要 spigot jars 的子模块中
<repositories>
    <repository>
      <id>elmakers-repo</id>
      <url>https://maven.elmakers.com/repository/</url>
    </repository>
</repositories>

通过这些修复,我能够使用 mvn clean package

构建您的 git 存储库

龙头注释