在好久很好久之前,咱們部署web程序的方式是怎麼樣的呢?配置好服務器,將本身寫的應用程序打包成war包,扔進服務器中指定的目錄裏面。固然免不了要配置一些負責的xml和自定義一些servlet。java
如今有了spring boot,一切都變了,咱們能夠將web應用程序打包成fat jar包,直接運行就好了。git
本文將會關注於怎麼使用Spring Boot建立一個fat jar包。github
全部你須要作的就是添加以下依賴:web
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build>
有了上面的配置,只須要使用spring
mvn clean install
就能夠生成相應的jar包了。 shell
若是要運行它,使用:tomcat
java -jar <artifact-name>
便可。很是簡潔。springboot
若是你要在服務器上面永久運行該服務,即便登陸的用戶退出服務器,則可使用nohup命令:ruby
nohup java -jar <artifact-name>
在上面的例子中,全部的依賴jar包都會被打包進入這一個fat jar中,若是你使用了tomcat,那麼tomcat也會被打包進去。服務器
但有時候咱們仍是須要打包成war包,部署在服務器中,這種狀況只須要將pom.xml中的packaging屬性修改成war便可。
大多狀況下,咱們不須要額外的配置,若是咱們有多個main class,咱們須要指定具體的哪一個類:
<properties> <start-class>com.flydean.FatJarApp</start-class> </properties>
若是你沒有從spring-boot-starter-parent繼承,那麼你須要將main class添加到maven plugin中:
<plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <mainClass>com.flydean.FatJarApp</mainClass> <layout>ZIP</layout> </configuration> </plugin> </plugins>
有些狀況下,你須要告訴maven來unpack一些依賴:
<plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <requiresUnpack> <dependency> <groupId>org.jruby</groupId> <artifactId>jruby-complete</artifactId> </dependency> </requiresUnpack> </configuration> </plugin>
本文的代碼請參考https://github.com/ddean2009/learn-springboot2/tree/master/springboot-fatjar
更多教程請參考 flydean的博客