Springboot 進行war包部署,以及踩坑歷險8省8岱伞肺樟!

使用springboot也很長時間了,一直都是使用內置Tomcat運行項目褥傍,最近由于公司架構需要將項目以war包形式發(fā)布封裝組件儡嘶,又不想把自己多天的成功重新用spring造一遍喇聊,遂有了將springboot打成war包的想法恍风。參考網上各種方法,自己也在坑里掙扎了許久誓篱。脫坑后總結一下朋贬,供大家參考,也給自己提醒窜骄。
首先需要一個能成功運行的springboot項目锦募,這里不在重新搭建,直接用已知項目作為更改邻遏。

啟動文件修改

springboot默認是使用內部Tomcat啟動糠亩,如果使用外部Tomcat的話同樣存在一個入口的問題,這里我們只需要將啟動類繼承SpringBootServletInitialize告訴外部Tomcat在這個類下啟動(注解并不需要這么多准验,這里只是為了學習和記錄赎线,大家可以參考參考)。

@EnableTransactionManagement // springboot 開啟事務的注解
@EnableCaching // 使能緩存
@EnableAsync   //為了使@Async注解能夠生效糊饱,還需要在Spring Boot的主程序中配置@EnableAsync
@SpringBootApplication
public class RestdemoApplication extends SpringBootServletInitializer {
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        return builder.sources(RestdemoApplication.class);
    }

    public static void main(String[] args) {
        ConfigurableApplicationContext run = SpringApplication.run(RestdemoApplication.class, args);
    }
}

pom文件的修改

首先我們需要將springboot打包方式更改為war

<packaging>war</packaging>

springboot 內置了Tomcat垂寥,為了防止Java包沖突我們需要排除springboot默認Tomcat依賴,然而Tomcat啟動有需要一些sevlet或者el等類去編譯另锋,因此還需要依賴spring-boot-starter-tomcat滞项,當然這里的作用域需要設置為provided

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <!-- 去除內部Tomcat依賴 -->
            <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>

接著是添加maven插件


    <build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <version>1.4.2.RELEASE</version>
            <configuration>
                <fork>true</fork>
                                  <!--  這里是啟動類App的位置 -->
                <mainClass>com.example.restdemo.RestdemoApplication</mainClass>
            </configuration>
            <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <configuration>
                <!-- 沒有web.xml 配置的話, 配置為false-->
                <failOnMissingWebXml>false</failOnMissingWebXml>
            </configuration>
        </plugin>
    </plugins>

    </build>

pom文件修改就到這里夭坪。

IDEA 配置Tomcat啟動

此處省略Tomcat啟動....或者直接使用maven命令打包(跳過測試過程)
maven clean package  -Dmaven.test.skip=true 

不知道你們是否正常啟動文判,如果有問題繼續(xù)看看我踩的坑

踩坑記錄

1.啟動后無法正常訪問
在cmd里面查看我springboot配置的端口8084,使用netstat -ano|findstr "8084",沒有找到相關進程室梅。
同樣查看Tomcat配置的端口8087律杠,使用
netstat -ano|findstr "8084",看到端口以及被監(jiān)聽竞惋,根據(jù)進程號可以查看和kill端口柜去。
注意:在application.properties里面配置的端口是springboot內部端口,同外部Tomcat啟動的話端口并不是 application.properties的配置端口拆宛,而是外部Tomcat所配置的端口嗓奢。
2.端口問題解決后還是沒法訪問,于是若若的看了一下Tomcat日志浑厚,報錯了股耽。根盒。。堆棧日志我就不貼了物蝙,告訴大家出現(xiàn)這樣的報錯
Caused by: java.lang.NoClassDefFoundError: javax/el/ELManager 炎滞。什么?我不是已經加入spring-boot-starter-tomcat 相關依賴了嗎诬乞?這個問題我苦苦在坑里待好幾天册赛,終于在網上找到了答案。原因是我的tomcat7提供的el-api 和項目里面的el-api.jar沖突震嫉,解決辦法也很簡單森瘪,就是將你IDE(IDEA 或eclipse)安裝目錄下的el-api.jar 替換Tomcat的lib目錄下的el-api.jar 或者使用Tomcat8 即可解決問題。
暫時就這么多票堵,終于可以helloword了扼睬,如果大家還有什么坑可以貼出來一起交流交流。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末悴势,一起剝皮案震驚了整個濱河市窗宇,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌特纤,老刑警劉巖军俊,帶你破解...
    沈念sama閱讀 221,198評論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異叫潦,居然都是意外死亡蝇完,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評論 3 398
  • 文/潘曉璐 我一進店門矗蕊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來短蜕,“玉大人,你說我怎么就攤上這事傻咖∨竽В” “怎么了?”我有些...
    開封第一講書人閱讀 167,643評論 0 360
  • 文/不壞的土叔 我叫張陵卿操,是天一觀的道長警检。 經常有香客問我,道長害淤,這世上最難降的妖魔是什么扇雕? 我笑而不...
    開封第一講書人閱讀 59,495評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮窥摄,結果婚禮上镶奉,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好哨苛,可當我...
    茶點故事閱讀 68,502評論 6 397
  • 文/花漫 我一把揭開白布鸽凶。 她就那樣靜靜地躺著,像睡著了一般建峭。 火紅的嫁衣襯著肌膚如雪玻侥。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,156評論 1 308
  • 那天亿蒸,我揣著相機與錄音凑兰,去河邊找鬼。 笑死祝懂,一個胖子當著我的面吹牛票摇,可吹牛的內容都是我干的拘鞋。 我是一名探鬼主播砚蓬,決...
    沈念sama閱讀 40,743評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼盆色!你這毒婦竟也來了灰蛙?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,659評論 0 276
  • 序言:老撾萬榮一對情侶失蹤隔躲,失蹤者是張志新(化名)和其女友劉穎摩梧,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體宣旱,經...
    沈念sama閱讀 46,200評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡仅父,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,282評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了浑吟。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片笙纤。...
    茶點故事閱讀 40,424評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖组力,靈堂內的尸體忽然破棺而出省容,到底是詐尸還是另有隱情,我是刑警寧澤燎字,帶...
    沈念sama閱讀 36,107評論 5 349
  • 正文 年R本政府宣布腥椒,位于F島的核電站,受9級特大地震影響候衍,放射性物質發(fā)生泄漏笼蛛。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,789評論 3 333
  • 文/蒙蒙 一蛉鹿、第九天 我趴在偏房一處隱蔽的房頂上張望滨砍。 院中可真熱鬧,春花似錦、人聲如沸惨好。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽日川。三九已至蔓腐,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間龄句,已是汗流浹背回论。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評論 1 271
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留分歇,地道東北人傀蓉。 一個月前我還...
    沈念sama閱讀 48,798評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像职抡,于是被迫代替她去往敵國和親葬燎。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,435評論 2 359

推薦閱讀更多精彩內容

  • 航哥你終于開學了缚甩,我綿軟的躺在沙發(fā)上自言自語谱净,航哥突然說,你是不是不喜歡我了擅威?我的天壕探,老媽怎么會不喜歡你呢^_^ ...
    兔子微閱讀 238評論 0 0
  • 1、香檳色玫瑰 2郊丛、橙色康乃馨 3李请、香檳色桔梗 準備花泥:將整塊花泥去除1/3后泡好,用朔料紙將底部包裹并用膠帶紙...
    杜芮寧閱讀 305評論 0 0
  • ?老板準備做一個慈善活動厉熟,把一些家庭貧困的小孩子請到五星級酒店里导盅,安排他們體驗五星級的美食,五星級的服務庆猫,五星級的...
    Miss_Mia閱讀 168評論 0 0
  • 現(xiàn)在大學二年級了认轨,我還是對自己的未來一片迷茫。周圍的人有的開始了研究課題月培,有的開始了考研努力嘁字,可是唯有我還在渾渾噩...
    Darkloveness閱讀 236評論 0 0
  • 不知道為什么這么好的一本書起了一個看上去像家常劇一樣的名字,但看了內容真的感覺受益匪淺杉畜,作者在兩個不同價值觀以及思...
    取個帥氣的匿名吧閱讀 239評論 0 1