gpt4 book ai didi

java - 为什么 Maven + Spring Boot 会创建巨大的 jar 文件?

转载 作者:行者123 更新时间:2023-11-29 09:43:26 24 4
gpt4 key购买 nike

我有以下 Maven 项目结构:

parent_project
+--main_application
+--domain_models_and_repository
+--module_1
+--module_2
+--module_3

以及以下简化的 POMS:

parent_project.pom

<project>
<dependencies>
[Spring Boot dependencies]
</dependencies>

<modules>
<module>main_application</module>
<module>domain_models_and_repository</module>
<module>module_1</module>
<module>module_2</module>
<module>module_3</module>
</modules>

<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>

主应用程序

<project>
<parent>
<artifactId>parent_project</artifactId>
</parent>

<dependencies>
<dependency>
<artifactId>domain_models_and_repository</artifactId>
</dependency>
<dependency>
<artifactId>module_1</artifactId>
</dependency>
<dependency>
<artifactId>module_2</artifactId>
</dependency>
<dependency>
<artifactId>module_3</artifactId>
</dependency>
</dependencies>
</project>

module_1

<project>
<parent>
<artifactId>parent_project</artifactId>
</parent>

<dependencies>
<dependency>
<artifactId>domain_models_and_repository</artifactId>
</dependency>
</dependencies>
</project>

module_2

<project>
<parent>
<artifactId>parent_project</artifactId>
</parent>

<dependencies>
<dependency>
<artifactId>domain_models_and_repository</artifactId>
</dependency>
</dependencies>
</project>

module_3

<project>
<parent>
<artifactId>parent_project</artifactId>
</parent>

<dependencies>
<dependency>
<artifactId>domain_models_and_repository</artifactId>
</dependency>
<dependency>
<artifactId>module_1</artifactId>
</dependency>
<dependency>
<artifactId>module_2</artifactId>
</dependency>
</dependencies>
</project>

实际上我有更多的模块,其中更多的是其他人的依赖。当我运行 mvn install我得到一个 1.2GB 的主应用程序文件。我注意到所有模块的所有依赖项都已组装进入模块。因此,许多 jar 文件被多次组装到文件中。我怎样才能避免这种情况?

最佳答案

你已经在你的父 pom 中声明了 spring-boot-maven-plugin。因此,每个创建的 Artifact 都是一个可执行的 jar 文件,所有这些可执行的 jar 文件都包含 jar 所需的依赖项。

domain_models_and_repository 包含父级中声明的所有依赖项及其自身的依赖项。

module 1module 2 包含所有的父依赖、本地声明的依赖和所有由domain_models_and_repository 项目表达的依赖以及模块本身。

模块 3 包含所有父依赖项、它自己在本地声明的依赖项以及来自 domain_models_and_repository模块 1 和所有其他尚未可用的依赖项模块 2 以及这些模块本身。

主应用程序 包含父依赖项、它自己在本地声明的依赖项以及来自 domain_models_and_repositorymodule 1 的所有其他尚未可用的依赖项>模块 2 以及这些模块本身。

要修复,请从父应用程序中删除 spring-boot-maven-plugin 并仅将其添加到主应用程序的 pom 中。这样只有您的主应用程序是可执行 jar,所有其他模块都只是普通的 jar 文件。

关于java - 为什么 Maven + Spring Boot 会创建巨大的 jar 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31026664/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com