這種錯誤有許多可能的錯誤之處,我的是因為:
我的項目結構目錄(有三級):
|---父項目
|---子模塊
|---子子模塊
當我在創建子模塊下的某個子子模塊時,第一次創建就照常右擊子模塊,選擇新建模塊,寫好新建的子子模塊的名字后點擊確定,發現剛創建的這個子子模塊和子模塊同目錄(也就是它也在父項目下,和子模塊同一等級)就像這樣:
|---父項目
|---子模塊
|---子模塊
這肯定不行啊,這哪是創建子子模塊,很明顯我這是又創建了一個子模塊,事與願違,於是我就刪了這個剛創建失敗的模塊,想重新在子模塊下創建一個子子模塊。於是就再右擊子模塊選擇新建模塊,可創建完后發現還是和子模塊在同一層級下:
|---父項目
|---子模塊
|---子模塊
后來經過詢問后發現:
原來是在新建一個model時,Location寫的不對,沒有分層(當時創建的時候不知道為什么不是這種分級路徑,可能是idea沒反應過來吧):
看到了嗎,parent是父項目、service是子模塊、“子子門模塊”就是我們要創建第三級模塊也就是子子模塊。
按照這種層級創建層能成功創建出三級模塊:
|---父項目
|---子模塊
|---子子模塊
但是
當我運行測試代碼的時候項目打包出錯:(由於報的錯沒有詳細記錄) 其中有這個提示:
[ERROR] Failed to execute goal org.springframework.boot:spring-boot-maven-plugin:...
repackage failed: Unable to find main
class
控制台就兩個紅色單詞:
Process terminated;
怎么解決?
還記得之前創建的那個子子目錄嗎?
要知道,每次創建模塊,它都會在他的上一級的pom文件中自動生成這個東西,來標識該模塊:
<modules>
<module>service</module>
<module>子子模塊</module>
</modules>
由於我創建失敗的子子模塊不在子模塊下,而是在父項目下,與子模塊同級,所以它會在父項目的pom文件中出現上面的那個標識:<module>子子模塊</module>
我們把這個模塊去掉就行了,讓父項目下只有子模塊的module標識就行了:
<modules>
<module>service</module>
</modules>
不是吧!!!
上面的東西改好后,我運行test測試里面的程序還是報錯:
spring-boot-maven-plugin:2.5.3:repackage failed: Unable to find main class
沒辦法那就接着造唄。
去網上搜了許多這種錯誤的解決方案,終於找到了:
該博客地址:https://www.dandelioncloud.cn/article/details/1370378236395646978
這個博客的解決方式也很簡單:
解決方式:
不使用springboot的maven插件,改為使用普通的maven插件,使用springboot的maven插件意味着每個模塊都需要有啟動類,而使用普通的插件則不需要。
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.6</source>
<target>1.6</target>
<encoding>${project.build.sourceEncoding}</encoding>
</configuration>
</plugin>
</plugins>
</build>
我把上面的一段配置替換掉之前父項目中的<build>配置后,再次打包運行果然好了。
很顯然,當我們創建多個模塊的時候,就會容易遇到這種錯誤,不過只要我們多多總結,多多思考做好筆記,就會....