1. 程式人生 > >《Spring Boot官方指南》(二)入門

《Spring Boot官方指南》(二)入門

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] Note
spring-boot-starter-parentPOM包含繫結到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退出應用。