網(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模塊)

其中模塊的身份有三個(gè),“被引用”、“實(shí)際運(yùn)行”、“作為父模塊”。
被引用的模塊
先看utils、dao、service,它們?nèi)齻€(gè)的身份是“被引用”的,所以它們的打包方式必須是
<packaging>jar</packaging>
然后作為被引用的模塊,自身帶有支撐自身運(yùn)行的依賴包,如果單純打包的話,jar包大小會(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)類
加上便是


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

拷貝到webapps下,啟動(dòng)tomcat,就可以運(yùn)行啦
留個(gè)作業(yè),如何用intellij里配置的tomcat啟動(dòng)web項(xiàng)目?