当前位置: 首页 > 知识库问答 >
问题:

具有n级依赖关系的多模块maven Spring Boot项目

袁轶
2023-03-14

我正在玩maven多模块spring boot(V2.1)项目,我想我会非常聪明,在其他模块中嵌套模块。这个项目的目的是运行不同的报表,在数据部分中,为了便于管理,我希望按类型拆分报表,也为了共享wike writer和基类的一些功能,因为它们将在每个报表中使用

    <packaging>pom</packaging>
<modules>
    <module>adhoc-web</module>
    <module>adhoc-data</module>
</modules>
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.4.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>

父pom的子级是web项目和数据项目。数据pom如下所示(跳过依赖项和构建部分):

    <parent>
    <artifactId>ad-hoc-parent</artifactId>
    <groupId>com.recondo.reporting</groupId>
    <version>0.0.1-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>

<artifactId>adhoc-data</artifactId>
<packaging>pom</packaging>
<modules>
    <module>adhoc-data-base-models</module>
</modules>

<properties>
    <java.version>1.8</java.version>
    <spring.boot.repackage.skip>true</spring.boot.repackage.skip>
</properties>

<dependencies>
    <dependency>
        <groupId>com.recondo.reporting</groupId>
        <artifactId>adhoc-data-base-models</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </dependency>
</dependencies>

<properties>
    <java.version>1.8</java.version>
    <spring.boot.repackage.skip>true</spring.boot.repackage.skip>
</properties>

在数据模块下,我想做的是创建子模块来组织代码。下面是我创建的一个模块示例,该模块用于存储每个报表都可以从其扩展的基本模型:

    <parent>
    <artifactId>adhoc-data</artifactId>
    <groupId>com.recondo.reporting</groupId>
    <version>0.0.1-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>

<artifactId>adhoc-data-base-models</artifactId>

<properties>
    <java.version>1.8</java.version>
    <spring.boot.repackage.skip>true</spring.boot.repackage.skip>
</properties>

[ERROR]无法在项目ad-hoc-web上执行目标:无法解析项目com.recondo的依赖项。reporting:ad-hoc-web:jar:0.0.1-snapshot:无法找到工件com.recondo.reporting:adhoc-data:jar:0.0.1-snapshot->[help1]这可能是有意义的...我将数据模块打包为pom,因为这就是父模块与子模块打包的方式....

我应该如何解决这个问题/构造多模块maven项目来处理不止一个级别的依赖关系?

共有1个答案

景高杰
2023-03-14

我在您的图片中看到的第一个错误是您的adhoc-data模块,它包含一个src文件夹。adhoc-data模块是它的子模块的父模块,子模块具有 pom ,这意味着这样的模块中从来没有编码,这意味着它中根本不应该有文件夹src

循环依赖关系产生于adhoc-data的pom将依赖关系定义为:

<dependencies>
    <dependency>
        <groupId>com.recondo.reporting</groupId>
        <artifactId>adhoc-data-base-models</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </dependency>
</dependencies>

也是给定模块的父级。这根本不对。第一步是从adhoc-datapom文件中删除上述依赖项。

 类似资料:
  • 我有一个多模块Maven项目,其中包含子模块ModuleA和ModuleB等。ModuleA将ModuleB列为依赖项。但是,当仅构建模块A时,Maven不会解决模块B的依赖关系-导致。我想避免构建整个父级以使构建更快。目前我发现让它工作的唯一方法是使用exec插件和脚本,将父项目称为“ModuleB, ModuleA”,这意味着我必须在每次依赖项更改时更改脚本(例如添加ModuleC)。 是否有

  • 我如何在PP3的build.gradle文件中将PP1声明为编译依赖项? 我正在运行Gradle V1.2

  • 我有一个多模块Maven项目,有模块“app”和“域”。应用依赖于域。域模块有公共和私有代码。公共代码在包中。 在Domain模块的pom中,我添加了maven jar插件的执行,该插件使用分类器“api”(仅包含公共类)生成一个额外的项目工件。 在应用程序模块中,我在域模块上添加了一个“运行时”范围的依赖项(因此所有类都存在于运行时),并在分类的“API”上添加了编译时范围的依赖。这是为了确保应

  • 使用IntelliJ 2016.2. 使用Gradle 2.14.1 我尝试为Intellij中的添加一个模块依赖项到。没有骰子。我试着添加一个jar引用,没有骰子。 我认为我需要在build.gradle文件中添加一个依赖项,但不知道如何添加。我尝试了等。

  • 在使用Maven一段时间后,我对Maven在构建体系结构中带来的许多特性感到兴奋,尤其是依赖项管理。然而,我一次又一次地遇到了一个问题--Maven如何解决多模块项目之间的依赖关系。我想知道这是否是当前Maven实现的大缺陷和/或是否有任何令人满意的解决方案。 假设我有一个多模块的Maven项目。父pom包含三个模块--moduleA(jar)、moduleB(jar)和moduleC(war)。

  • 当运行命令(如 或 Maven无法解决我的一个模块对另一个模块的依赖关系。 [错误]无法在项目分析器上执行目标-app:无法解析项目的依赖项project_group:a:jar:0.1-snapshot:找不到项目project_group:b:jar:0.1-snapshot 项目结构如下:

  • 我有一个具有多个模块的库项目,因此我将其依赖项集中在项目级build.gradle中,如下所示 我在模块中使用它作为 在我的示例应用程序(同一项目中的另一个模块)中,我将库模块作为 我试着像这样包含依赖关系 和 和 我已经试过了 如何在aar库中指定依赖项? AAR可以包括传递依赖项吗? 如果我错过了任何信息,请发表评论 提前致谢

  • 我是和的新手。我正在尝试在远程计算机上运行hdfs MapReduce作业。我没有写入/编辑依赖项文件的权限。我想知道是否可以将我的Maven项目传递给我的MapReduce作业。这样,我就不需要SSH进入远程机器并更改maven项目的依赖关系。我将使用包含远程计算机上未包含的所有所需依赖项的JAR来运行我的MapReduce作业。