- 问题描述:spring boot 使用 maven 的 package 命令打出来的包,不是可执行 jar 包,因为包含依赖的 ja r包。
- 问题原因:打包时使用了 maven 默认的 maven-jar-plugin 插件,而不是 spring-boot-maven-plugin 插件。
解决方法1:pom 中必须配置 spring-boot-maven-plugin 插件,而且必须指定需要执行的目标构建
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.1</version> <configuration> <source>1.7</source> <target>1.7</target> </configuration> </plugin> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>${spring.boot.version}</version> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin> </plugins> </build>
|
解决方法2. 使用 spring 的 parent 来进行依赖管理,则不用指定执行构建的目标
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.3.6.RELEASE</version> </parent>
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.1</version> <configuration> <source>1.7</source> <target>1.7</target> </configuration> </plugin> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>${spring.boot.version}</version> </plugin> </plugins> </build>
|
Note: 请避免直接使用 mvn repackage
命令,因为 repackage 依赖原生 maven 的 package 命令,直接执行 repackage 无法获取依赖,会导致打包失败。
参考连接