SpringBoot打包為可執行Jar方法。(已驗證)
阿新 • • 發佈:2019-02-10
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
這樣可以執行,但每次都將依賴打到包中再上傳,耗時耗力,所以想辦法將程式碼與依賴分離開。依賴只需要上傳一次即可。
嗯,待續.................................