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

 

这样可以运行,但每次都将依赖打到包中再上传,耗时耗力,所以想办法将代码与依赖分离开。依赖只需要上传一次即可。

 

嗯,待续.................................

 

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