指定根目錄有兩種方式
1:直接將打的war包名稱定義為ROOT
2:利用docBase
比如筆者war包名為xibu.war,將該war包丟到/Users/archerlj/Library/apache-tomcat-8.5.8/webapps
目錄下即可。
為了訪問方便,我修改了tomcat安裝目錄下的conf文件下的server.xml文件:
<!-- path留空代表訪問域名后面不需要帶項目的名稱 --> <Context path="" docBase="xibu" reloadable="false" />
參考: Spring Boot 打war包
- 將SpringBoot的項目的打包方式設置為war
<groupId>com.example</groupId> <artifactId>demo</artifactId> <version>1.0.0</version> <packaging>war</packaging>
- 移除內嵌的tomcat模塊,但是為了我們在本機測試方便,我們還需要引入它,所以配置如下
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> </dependency>
- 添加tomcat-servelt-api依賴
<dependency> <groupId>org.apache.tomcat</groupId> <artifactId>tomcat-servlet-api</artifactId> <!--此處跟隨服務器tomcat版本--> <version>7.0.42</version> <scope>provided</scope> </dependency>
- 修改入口方法 繼承一個SpringBootServletInitializer類,並且覆蓋configure方法
package com.example; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.web.support.SpringBootServletInitializer; import org.springframework.cache.annotation.EnableCaching; @SpringBootApplication @EnableCaching public class SpringDataJpaExampleApplication extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(SpringDataJpaExampleApplication.class); } public static void main(String[] args) { SpringApplication.run(SpringDataJpaExampleApplication.class, args); } }
- 添加war插件,用來自定義打包以后的war包的名稱
<build> <finalName>springboot</finalName> <!-- 打包項目 mvn clean package --> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <warSourceExcludes>src/main/resources/**</warSourceExcludes> <warName>springboot</warName> </configuration> </plugin> </build>
引入上面這個插件,是避免maven打包的時候為我們默認的一個帶有版本號的war包名稱,因為我們部署到tomcat以后,在訪問項目的時候,需要用到這個war包的名稱
6.部署至tomcat服務器
大部分情況下,在進行工程開發的時候,沒有配置server.servlet.context-path
此時有兩種辦法:1.直接打包為ROOT.war
2.更改docBase
關於Tomcat虛擬主機(appBase,docBase)的配置問題
比如筆者war包名為xibu.war,將該war包丟到
/Users/archerlj/Library/apache-tomcat-8.5.8/webapps
目錄下即可。
為了訪問方便,我修改了tomcat安裝目錄下的conf文件下的server.xml文件:在該文件最后的Host節點添加如下: <!-- path留空代表訪問域名后面不需要帶項目的名稱 --> <Context path="" docBase="xibu" reloadable="false" /> path是虛擬目錄。 docBase是真實目錄,可以是相對路徑或者絕對路徑,這里因為xibu.war放在webapp下面,所以直接用了相對路徑。
這樣,啟動tomcat之后就可以直接通過訪問
http://localhost:8080
來訪問你的項目了。好了,cd到tomcat的bin目錄下
sudo sh startup.sh
啟動tomcat就可以了,這時候訪問http://localhost:8080
就能訪問部署的項目了(筆者修改了端口:8081)