把spring-boot項目按照平常的web項目一樣釋出到tomcat容器下,當然不可能永遠都在你的編輯器運作了,在編輯中運作是因為Spring boot 內建了Tomcat,下面我們要釋出我們自己的Tomcat
一、在pom.xml裡設定
1
<code><packaging>war</packaging></code>
二、移除嵌入式tomcat插件,在pom.xml裡找到spring-boot-starter-web依賴節點,在其中添加如下代碼
注:如果第三步使用第三種方式,則不需要第二步驟
2
3
4
5
6
7
8
9
10
11
<code><dependency></code>
<code> </code> <code><groupId>org.springframework.boot</groupId></code>
<code> </code> <code><artifactId>spring-boot-starter-web</artifactId></code>
<code> </code> <code><!-- 移除嵌入式tomcat插件 --></code>
<code> </code> <code><exclusions></code>
<code> </code> <code><exclusion></code>
<code> </code> <code><groupId>org.springframework.boot</groupId></code>
<code> </code> <code><artifactId>spring-boot-starter-tomcat</artifactId></code>
<code> </code> <code></exclusion></code>
<code> </code> <code></exclusions></code>
<code></dependency></code>
三、添加servlet-api的依賴,下面三種方式都可以,任選其一種,本用文的第三種
<code> </code> <code><groupId>javax.servlet</groupId></code>
<code> </code> <code><artifactId>javax.servlet-api</artifactId></code>
<code> </code> <code><version>3.1.0</version></code>
<code> </code> <code><scope>provided</scope></code>
<code> </code> <code><groupId>org.apache.tomcat</groupId></code>
<code> </code> <code><artifactId>tomcat-servlet-api</artifactId></code>
<code> </code> <code><version>8.0.36</version></code>
<code><!--Springboot內建的tomcat來提供api--></code>
<code><groupId>org.springframework.boot</groupId></code>
<code><artifactId>spring-boot-starter-tomcat</artifactId></code>
<code><scope>provided</scope></code>
在這裡将scope屬性設定為provided,這樣在最終形成的WAR中不會包含這個JAR包,因為Tomcat或Jetty等伺服器在運作時将 會提供相關的API類。
四、修改啟動類,并重寫初始化方法,main方法啟動的方式,都有一個App的啟動類,代碼如下:
<code>@SpringBootApplication</code>
<code>public</code> <code>class</code> <code>Application {</code>
<code> </code> <code>public</code> <code>static</code> <code>void main(String[] args) {</code>
<code> </code> <code>SpringApplication.run(Application.</code> <code>class</code> <code>, args);</code>
<code> </code> <code>}</code>
<code>}</code>
改為:
12
13
14
15
16
<code>public</code> <code>class</code> <code>SpinggirlApplication </code> <code>extends</code> <code>SpringBootServletInitializer {</code>
<code> </code> <code>/**</code>
<code> </code> <code>* 如果要釋出到自己的Tomcat中的時候,需要繼承SpringBootServletInitializer類,并且增加如下的configure方法。</code>
<code> </code> <code>* 如果不釋出到自己的Tomcat中的時候,就無需上述的步驟</code>
<code> </code> <code>*/</code>
<code> </code> <code>@Override</code>
<code> </code> <code>protected</code> <code>SpringApplicationBuilder configure(SpringApplicationBuilder builder) {</code>
<code> </code> <code>// 注意這裡要指向原先用main方法執行的Application啟動類</code>
<code> </code> <code>return</code> <code>builder.sources(Application.</code> <code>class</code> <code>);</code>
或者啟動類不做改變,重新建立一個類,如下:
<code>import org.springframework.boot.builder.SpringApplicationBuilder;</code>
<code>import org.springframework.boot.web.support.SpringBootServletInitializer;</code>
<code>public</code> <code>class</code> <code>ServletInitializer </code> <code>extends</code> <code>SpringBootServletInitializer {</code>
<code> </code> <code>return</code> <code>builder.sources(SpinggirlApplication.</code> <code>class</code> <code>);</code>
<code> </code>
五、打包部署
通過指令行進入項目根目錄下(即包含pom.xml的目錄),在指令行裡輸入:
mvn clean package即可, 等待打包完成。
出現[INFO] BUILD SUCCESS即為打包成功。
然後把target目錄下的war包放到tomcat的webapps目錄下,啟動tomcat,即可自動解壓部署。
最後在浏覽器中輸入
http://localhost:[端口号]/[打包項目名]/