按說這是個很簡單的問題,不就是一個war包,cp到服務器就完事嗎?呵呵,我楞是試了好幾個小時,最后發現,竟然如此簡單...記錄一下,讓大家少走彎路吧。
一切從這一篇官方文章開始。覺得是spring.io的教程么,應該沒有錯。照著走了一遍沒成功,大致如下:
- 修改主入口文件,改成這個鬼樣子:
@SpringBootApplication
public class Application extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(applicationClass, args);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(applicationClass);
}
private static Class<Application> applicationClass = Application.class;
}
基本上就是繼承一個SpringBootServletInitializer
,重寫configure
方法。
- 修改pom.xml。主要有以下這么幾個地方:
<!--package改成war-->
<packaging>war</packaging>
<!--修改spring-boot-starter-web依賴-->
<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>
<!--注釋掉內嵌tomcat,注意finalname就是你最終打包的包名-->
<build>
<finalName>mytestwar</finalName>
<plugins>
<!--<plugin>-->
<!--<groupId>org.springframework.boot</groupId>-->
<!--<artifactId>spring-boot-maven-plugin</artifactId>-->
<!--</plugin>-->
</plugins>
</build>
- 進入項目目錄控制臺,執行
mvn clean package
就會在target下生成一個war包,當然前提是本機安裝了maven...。然后你就可以歡快的拿著你剛做好的war包丟到服務器tom貓的webapps底下去了,按理說,訪問你的服務器名/你的war包名
就能出來,但是我試了很多次,都不行,一直報404
404是如此孤獨和郁悶的一個數字
idea 雖然啟動慢了一點,但確實是一個可靠的工具
經過一番倒持,發現用idea發布spring boot非常簡單,而且不用改變任何配置。記錄如下:
- 本機安裝tomcat,最好安裝一下,很方便。
- idea中設置tomcat,見我另一篇一起學SpringMVC之一:使用maven起項目,這里不再多說。注意一點,如果你裝的tomcat正在運行的話,把默認的8080端口號改一下,比如:
要是不改端口號會和現有tomcat 8080端口沖突
比較奇怪的還有,必須在項目的依賴庫中添加如下的tomcat依賴,否則就報錯,我也不知為什么,(lll¬ω¬)
Paste_Image.png - 點擊這個按鈕,工程將會跑在你設置的8888端口,訪問
localhost:8888/helloworld
應該就可以了。并且在項目的target目錄下將會生成war包,直接拿到服務器tomcat/webapps/下就能跑(注意訪問路徑要變成serverip:port/mytestwar/helloworld
,也即是要加上你的war包名才可以),不用改任何設置,不要問我為什么,我也不知道,反正很方便!
Paste_Image.png
回憶起以前做.net開發,vs里點擊運行按鈕,也會啟動一個內嵌的iis,端口號是比較高的隨機值,開發完成,publish,直接丟到服務器完事。比較一下,微軟確實更關心程序員。不說別的,visual studio開發體驗是idea沒法比的,eclipse。。。還是算了吧
以上,記錄一下。