spring boot 多模塊在tomcat上運(yùn)行

網(wǎng)上大多數(shù) spring boot 教程都是以單模塊項(xiàng)目來介紹的,本文采用多模塊(一個(gè)父模塊,多個(gè)子模塊之間有依賴)的項(xiàng)目來講解 spring boot 的配置。

模塊之間的關(guān)系

我們項(xiàng)目一般有dao層,service層,controller層,復(fù)雜一點(diǎn)的項(xiàng)目有前臺系統(tǒng)controller和后臺系統(tǒng)controller,如果把它們?nèi)闯墒悄K的話,模塊之間的關(guān)系如圖顯示。(示例項(xiàng)目為演示方便,省略了service模塊


其中utils是自己的工具包

其中模塊的身份有三個(gè),“被引用”、“實(shí)際運(yùn)行”、“作為父模塊”。

被引用的模塊

先看utils、dao、service,它們?nèi)齻€(gè)的身份是“被引用”的,所以它們的打包方式必須是

<packaging>jar</packaging>

然后作為被引用的模塊,自身帶有支撐自身運(yùn)行的依賴包,如果單純打包的話,jar包大小會(huì)非常大


同時(shí)還會(huì)有個(gè)問題,模塊生成的包之間的依賴還會(huì)丟失

所以我們得加上

<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<!--可以生成不含依賴包的不可執(zhí)行Jar包-->
<configuration><classifier>exec</classifier></configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>

實(shí)際運(yùn)行的模塊

以web模塊為例,在pom.xml中,我們依賴了dao包,那還需要依賴utils包嗎?不需要,因?yàn)閐ao包里面已經(jīng)依賴了utils包了,會(huì)有傳遞。

打包方式必須是war

<packaging>war</packagin>

因?yàn)橐虬趖omcat中運(yùn)行,所以這里對WebApplication.java和網(wǎng)上一樣的配置,就不贅述了


作為父模塊

這里沒什么特殊要配置的,只需要注意tomcat默認(rèn)版本是8.5,做好自己的本地/服務(wù)器的tomcat適配就好

開始運(yùn)行

好了,準(zhǔn)備就緒,就開始執(zhí)行maven的package命令打包成war


兩種方式都可以

但是這個(gè)時(shí)候出現(xiàn)問題!

Failed to execute goal org.springframework.boot:spring-boot-maven-plugin:1.5.7.RELEASE:repackage (default) on project demo-utils: Execution default of goal org.springframework.boot:spring-boot-maven-plugin:1.5.7.RELEASE:repackage failed: Unable to find main class -> [Help 1]

原來是沒有主函數(shù)作為啟動(dòng)類

加上便是

最普通的主函數(shù)就可以

再次運(yùn)行packge,找到web的war包

拷貝到webapps下,啟動(dòng)tomcat,就可以運(yùn)行啦


留個(gè)作業(yè),如何用intellij里配置的tomcat啟動(dòng)web項(xiàng)目?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容