1. 程式人生 > >SpringBoot打包為可執行Jar方法。(已驗證)

SpringBoot打包為可執行Jar方法。(已驗證)

1、修改pom檔案,加入打包外掛

<properties>

   <java.version>1.8</java.version>

   <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

   <maven.compiler.source>1.8</maven.compiler.source>

   <maven.compiler.target>1.8</maven.compiler.target>

</properties>

不指明的話在開發工具裡執行沒有一點問題,如果你沒有用到java8的特性打包也沒有問題。一旦你用到了java8的特性,而且使用spring-boot-maven-plugin作為builder,一定要指明jdk版本。不然你會收到類似不識別Lambda,請使用resource8這樣的錯誤。

<build>
    <plugins>
		<plugin>
			<groupId>org.apache.maven.plugins</groupId>
			<artifactId>maven-compiler-plugin</artifactId>
			<configuration>
			<source>1.8</source>
			<target>1.8</target>
			<encoding>UTF-8</encoding>
			</configuration>
		</plugin>
			
		<plugin>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-maven-plugin</artifactId>
			<configuration>
				<fork>true</fork>
			</configuration>
		</plugin>
	</plugins>
</build>

2、pom檔案

<packaging>pom</packaging>

改為

<packaging>jar</packaging>

3、像上述這樣設定完後,執行mvn package或到eclipse執行也一樣,打包會成功,但打出來jar不包含依賴,且是不能直接執行的,

查了下maven-compiler-plugin外掛文件上有說

少加了個repackage重打包。

可以直接設定main方法入口mainClass,後面還有一大堆屬性,用不到就沒在看,

現在pom檔案如下

<build>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<configuration>
					<source>1.8</source>
					<target>1.8</target>
					<encoding>UTF-8</encoding>
				</configuration>
			</plugin>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<configuration>
					<fork>true</fork>
					<mainClass>com.sunpx.quartz_one.Application</mainClass>
					<layout>ZIP</layout>
					
				</configuration>
				<executions>
					<execution>
						<goals>
							<goal>repackage</goal>
						</goals>
						<!-- 分離出程式碼包
						<configuration>
							<classifier>exec</classifier>
						</configuration>
						 -->
					</execution>
				</executions>
			</plugin>
		</plugins>
	</build>

執行mvn package後,可打包為包含所有依賴的可執行jar.

目錄結構

再檢視文件,可執行jar的目錄結構。

然後試著執行jar ,執行java -jar  xxxxx.jar

這樣可以執行,但每次都將依賴打到包中再上傳,耗時耗力,所以想辦法將程式碼與依賴分離開。依賴只需要上傳一次即可。

嗯,待續.................................