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
這樣可以運行,但每次都將依賴打到包中再上傳,耗時耗力,所以想辦法將代碼與依賴分離開。依賴只需要上傳一次即可。
嗯,待續.................................