《Spring Boot官方指南》(二)入門
阿新 • • 發佈:2018-12-23
4.5 建立可執行jar檔案
就像生產一個真正的軟體產品,我們建立一個完整自足的可執行jar檔案,把我們的第一個例項完成。可執行的jar檔案(有時候我們也叫“富jar檔案”)是一個歸檔檔案,包含了編譯好的類檔案與我們執行程式所需要的所有jar依賴項。
可執行jar檔案與Java
Java並沒有提供任何載入內嵌jar檔案的標準方法(也就是jar檔案還包含jar檔案)。所以,如果您想釋出一個完整的應用程式,將會很困難。
為了解決這個問題,許多開發者使用“uber” jars。 一個uber jar檔案把所有的類,包括第三方jar包的類,都歸檔到一個檔案。這也帶來了問題,這將難以辨認哪些庫是您的應用程式真正採用的。還有,如果多個jar檔案裡面採用了相同的檔名(但是內容不同),也會引起問題。
Spring Boot採用了一種不同的方式來讓您直接載入內嵌的jar包。
為了建立可執行jar檔案,我們把spring-boot-maven-plugin
新增到pom.xml
。把下面的程式碼新增到dependencies
部分下面:
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId></plugin> </plugins> </build>
Note | |
---|---|
spring-boot-starter-parent POM包含繫結到repackage 目標的<executions> 配置。如果不使用parentPOM,你需要自己宣告該配置,具體參考外掛文件。 |
儲存pom.xml
,並從命令列執行mvn package
:
$ mvn package [INFO] Scanning for projects... [INFO] [INFO] ------------------------------------------------------------------------ [INFO] Building myproject 0.0.1-SNAPSHOT [INFO] ------------------------------------------------------------------------ [INFO] .... .. [INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ myproject --- [INFO] Building jar: /Users/developer/example/spring-boot-example/target/myproject-0.0.1-SNAPSHOT.jar [INFO] [INFO] --- spring-boot-maven-plugin:1.4.1.BUILD-SNAPSHOT:repackage (default) @ myproject --- [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------
如果檢視target
目錄,你應該可以看到myproject-0.0.1-SNAPSHOT.jar
,該檔案大概有10Mb。想檢視內部結構,可以執行jar tvf
:
$ jar tvf target/myproject-0.0.1-SNAPSHOT.jar
在該目錄下,你應該還能看到一個很小的名為myproject-0.0.1-SNAPSHOT.jar.original
的檔案, 這是在Spring Boot重新打包前,Maven建立的原始jar檔案。
使用java -jar
命令執行該程式:
$ java -jar target/myproject-0.0.1-SNAPSHOT.jar . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v1.4.1.BUILD-SNAPSHOT) ....... . . . ....... . . . (log output here) ....... . . . ........ Started Example in 2.536 seconds (JVM running for 2.864)
正如剛才一樣,敲擊ctrl-c退出應用。