子模块可以在 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 存储库
龙头注释
你好 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