Spring Boot 初级入门教程(十一) —— 打分离 jar 包、部署和测试(附源码)
2018年07月26日 18:26:50 SpringBoot ⁄ 共 3337字 暂无评论 ⁄ 被围观 2,804次

分离 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 包呢?配置如下:

  1. <build>  
  2.     <plugins>  
  3.         <!-- 配置编译的JDK版本及编码 -->  
  4.         <plugin>  
  5.             <groupId>org.apache.maven.plugins</groupId>  
  6.             <artifactId>maven-compiler-plugin</artifactId>  
  7.             <configuration>  
  8.                 <source>1.8</source>  
  9.                 <target>1.8</target>  
  10.                 <encoding>UTF8</encoding>  
  11.             </configuration>  
  12.         </plugin>  
  13.   
  14.         <!-- 这是Spring Boot Devtools Plugin的配置 -->  
  15.         <!-- <plugin>  
  16.             <groupId>org.springframework.boot</groupId>  
  17.             <artifactId>spring-boot-maven-plugin</artifactId>  
  18.             <version>1.4.0.RELEASE</version>  
  19.             <configuration>  
  20.                 如果没有fork配置,可能devtools不会起作用,即不会restart  
  21.                 <fork>true</fork>  
  22.                 <mainClass>com.menglanglang.test.springboot.App</mainClass>  
  23.             </configuration>  
  24.             <executions>  
  25.                 <execution>  
  26.                     <goals>  
  27.                         <goal>repackage</goal>  
  28.                     </goals>  
  29.                 </execution>  
  30.             </executions>  
  31.         </plugin> -->  
  32.   
  33.         <!-- 将所依赖的三方jar包打入target下的lib目录下 -->  
  34.         <plugin>  
  35.             <groupId>org.apache.maven.plugins</groupId>  
  36.             <artifactId>maven-dependency-plugin</artifactId>  
  37.             <executions>  
  38.                 <execution>  
  39.                     <id>copy-dependencies</id>  
  40.                     <phase>package</phase>  
  41.                     <goals>  
  42.                         <goal>copy-dependencies</goal>  
  43.                     </goals>  
  44.                     <configuration>  
  45.                         <outputDirectory>${basedir}/target/lib</outputDirectory>  
  46.                     </configuration>  
  47.                 </execution>  
  48.             </executions>  
  49.         </plugin>  
  50.   
  51.         <!-- 打jar包的main方法配置 -->  
  52.         <plugin>  
  53.             <groupId>org.apache.maven.plugins</groupId>  
  54.             <artifactId>maven-jar-plugin</artifactId>  
  55.             <configuration>  
  56.                 <archive>  
  57.                     <manifest>  
  58.                         <addClasspath>true</addClasspath>  
  59.                         <classpathPrefix>lib/</classpathPrefix>  
  60.                         <mainClass>com.menglanglang.test.springboot.App</mainClass>  
  61.                     </manifest>  
  62.                 </archive>  
  63.             </configuration>  
  64.         </plugin>  
  65.     </plugins>  
  66.     <!-- 。。。省略n行。。。 -->  
  67. </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

给我留言

留言无头像?