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插件文檔上有說

https://docs.spring.io/spring-boot/docs/2.0.3.RELEASE/maven-plugin/usage.html

少加了個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

 

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

 

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章