默认情况下,Spring Boot将您的JAR重新打包为可执行的JAR,并通过将您所有的类放入其中
BOOT-INF/classes,并将所有相关库放入其中来实现
BOOT-INF/lib。创建此胖JAR的结果是您不能再将其用作其他项目的依赖项。
从自定义重新包装分类器:
默认情况下,
repackage目标将用重新包装的目标替换原始工件。对于代表应用程序的模块来说,这是理智的行为,但是如果您的模块用作另一个模块的依赖项,则需要为重新包装的模块提供分类器。这样做的原因是,应用程序类被打包在其中,
BOOT-INF/classes以便从属模块无法加载重新打包的jar的类。
如果要保留原始的主要工件以将其用作依赖项,则可以
classifier在
repackage目标配置中添加一个:
<plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>1.4.1.RELEASE</version> <executions> <execution> <goals> <goal>repackage</goal> </goals> <configuration> <classifier>exec</classifier> </configuration> </execution> </executions></plugin>
通过这种配置,Spring Boot Maven插件将创建2个JAR:主要的将与通常的Maven项目相同,而第二个将附加分类器并成为可执行的JAR。



