飞行的蜗牛

一个正在觉醒的无名氏修行者,略懂编程,略懂音乐。

spring boot maven 打包不生成可执行 jar 文件

  • 问题描述: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 无法获取依赖,会导致打包失败。

参考连接