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

我有以下Maven项目结构:

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

以下简化的POMS:

parent_project.pom

   [Spring Boot dependencies]   main_application domain_models_and_repository module_1 module_2 module_3     org.springframework.boot spring-boot-maven-plugin     

main_application

   parent_project    domain_models_and_repository   module_1   module_2   module_3    

module_1

   parent_project    domain_models_and_repository    

module_2

   parent_project    domain_models_and_repository    

module_3

   parent_project    domain_models_and_repository   module_1   module_2    

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

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

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

模块1模块2包含所有父依赖项,本地声明的依赖项以及domain_models_and_repository项目表示的所有依赖项以及模块本身。

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

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

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