1. 程式人生 > >Spring Boot 初級入門教程(十一) —— 打分離 jar 包、部署和測試(附原始碼)

Spring Boot 初級入門教程(十一) —— 打分離 jar 包、部署和測試(附原始碼)

分離 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