如果是 Spring Boot 项目结构是通过父子工程来管理,就可能有多个层级结构,工程之前存在依赖关系,如果所依赖的包被打包 spring boot 的可执行 jar,则该工程中启动时就会报找不到类的异常。
此时需要将所依赖的包打包普通 jar 包,就不要执行 spring-boot.repackage 操作。如下操作:
mvn clean package -Dspring-boot.repackage.skip=true
或在 pom.xml 文件中配置将是否打成执行 jar 包配置为参数项,默认为 false(即插件默认的打可执行 jar),外部执行 mvn package 传入该参数值。如下示例:
- <project>
- <properties>
- <provider.package>falseprovider.package>
- properties>
-
- <build>
- <plugins>
- <plugin>
- <groupId>org.springframework.bootgroupId>
- <artifactId>spring-boot-maven-pluginartifactId>
- <configuration>
- <skip>${provider.package}skip>
- configuration>
- plugin>
- plugins>
- build>
-
- project>
执行 mvn 命令,并传入 provider.package 参数
mvn clean package file-server -Dprovider.package=true
上面配置等同于:
- <project>
- <properties>
- <provider.package>falseprovider.package>
- properties>
- <build>
- <plugins>
- <plugin>
- <groupId>org.springframework.bootgroupId>
- <artifactId>spring-boot-maven-pluginartifactId>
- <executions>
- <execution>
- <goals>
- <goal>repackagegoal>
- goals>
- <configuration>
- <skip>${provider.package}skip>
- configuration>
- execution>
- executions>
- plugin>
- plugins>
- build>
- project>