分离 jar 包,也就是把工程源码打包到 *.jar,而把工程依赖的所有 lib 单独生成,这样打包的好处是,在依赖包没有修改的情况下,部署时只需要上传一次依赖包,每次部署的项目 jar 包很小,在服务器网络不太好的情况下,这样做是非常有必要的,因为上传 20M 和 上传 20K 的时间还是有很大差别的。
在修改配置前,有几个小配置需要提前修改一下,这是前面的遗留问题。
一、修改配置,添加 jdk 版本指定。
在前面测试的过程中,大家有没有发现,加入自己配置的 jdk 环境是 jdk8,当【选中项目-》右键 -》Maven -》Update Project】时,项目的 jdk 配置会默认变为 jdk7,有时候还导致项目本身报错,不得不手动再修改为 8。所以要修改的第一个配置是如下:
<build>
<plugins>
<!-- 配置编译的JDK版本及编码 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF8</encoding>
</configuration>
</plugin>
<!-- 这是Spring Boot Devtools Plugin的配置 -->
<!-- 。。。这里省略其它配置。。。 -->
</plugins>
</build>
在原来配置的基础上添加 jdk 编译环境版本的配置,以后 update 项目,就不会回到 7 了。
二、分离 jar 包配置。
好,言归正传,如何修改配置才能打包分离的 jar 包呢?配置如下:
- <build>
- <plugins>
- <!-- 配置编译的JDK版本及编码 -->
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-compiler-plugin</artifactId>
- <configuration>
- <source>1.8</source>
- <target>1.8</target>
- <encoding>UTF8</encoding>
- </configuration>
- </plugin>
- <!-- 这是Spring Boot Devtools Plugin的配置 -->
- <!-- <plugin>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-maven-plugin</artifactId>
- <version>1.4.0.RELEASE</version>
- <configuration>
- 如果没有fork配置,可能devtools不会起作用,即不会restart
- <fork>true</fork>
- <mainClass>com.menglanglang.test.springboot.App</mainClass>
- </configuration>
- <executions>
- <execution>
- <goals>
- <goal>repackage</goal>
- </goals>
- </execution>
- </executions>
- </plugin> -->
- <!-- 将所依赖的三方jar包打入target下的lib目录下 -->
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-dependency-plugin</artifactId>
- <executions>
- <execution>
- <id>copy-dependencies</id>
- <phase>package</phase>
- <goals>
- <goal>copy-dependencies</goal>
- </goals>
- <configuration>
- <outputDirectory>${basedir}/target/lib</outputDirectory>
- </configuration>
- </execution>
- </executions>
- </plugin>
- <!-- 打jar包的main方法配置 -->
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-jar-plugin</artifactId>
- <configuration>
- <archive>
- <manifest>
- <addClasspath>true</addClasspath>
- <classpathPrefix>lib/</classpathPrefix>
- <mainClass>com.menglanglang.test.springboot.App</mainClass>
- </manifest>
- </archive>
- </configuration>
- </plugin>
- </plugins>
- <!-- 。。。省略n行。。。 -->
- </build>
打包后,可以看到 target 下生成了单独的 lib 文件夹,里面放的是所有的依赖库。需要把 lib 目录及 test-springboot-1.0.jar 都上传到服务器,可以看到 test-springboot-1.0.jar 只有不到 20K。

启动程序,进行测试,可以看到和完整 jar 包一样,所有页面也都可访问。

Good Luck!
截止目前,最新代码包下载:https://pan.baidu.com/s/1MsFiZI0fW3a6eor_2WZtMw