1. 知識(shí)積累
1.1 Maven提出"約定優(yōu)于配置“
maven提出這一概念,為項(xiàng)目提供合理的默認(rèn)行為,無(wú)需不必要的配置,提供了默認(rèn)的目錄。
src???????????????????——>?????????源代碼和測(cè)試代碼的根目錄
? ? ? ? main????????????????????????????應(yīng)用代碼的源目錄
? ? ? ? ? ? ? ?java?????????????????????源代碼
? ? ? ? ? ? ? ?resources???????????項(xiàng)目的資源文件
? ? ? ? ?test???????????????????????????????測(cè)試代碼的源目錄
? ? ? ? ? ? ? ?java??????????????????????測(cè)試代碼
? ? ? ? ? ? ? ?resources????????????測(cè)試的資源文件
target???????????????????????????????????編譯后的類文件、jar文件等
????????對(duì)于Maven約定優(yōu)于配置的理解,一方面對(duì)于小型項(xiàng)目基本滿足我們的需要,基本不需要自己配置東西,使用Maven已經(jīng)配置好的,快速上手,學(xué)習(xí)成本降低;另一方面,對(duì)于不滿足我們需要的還可以自定義設(shè)置,體現(xiàn)了靈活性。配置大量減少了,隨著項(xiàng)目變的越復(fù)雜,這種優(yōu)勢(shì)就越明顯。
原文鏈接:https://blog.csdn.net/liutengteng130/article/details/46991829
1.2.?dependencyManagement 和?dependencies區(qū)別
dependencies即使在子項(xiàng)目中不寫(xiě)該依賴項(xiàng),那么子項(xiàng)目仍然會(huì)從父項(xiàng)目中繼承該依賴項(xiàng)(全部繼承)
dependencyManagement里只是聲明依賴,并不實(shí)現(xiàn)引入,因此子項(xiàng)目需要顯示的聲明需要用的依賴。如果不在子項(xiàng)目中聲明依賴,是不會(huì)從父項(xiàng)目中繼承下來(lái)的;只有在子項(xiàng)目中寫(xiě)了該依賴項(xiàng),并且沒(méi)有指定具體版本,才會(huì)從父項(xiàng)目中繼承該項(xiàng),并且version和scope都讀取自父pom;另外如果子項(xiàng)目中指定了版本號(hào),那么會(huì)使用子項(xiàng)目中指定的jar版本。
原文鏈接:https://blog.csdn.net/liutengteng130/article/details/46991829
2 問(wèn)題和解析
2.1 遇到問(wèn)題
JUNIT運(yùn)行測(cè)試類過(guò)程中,報(bào)出如下的錯(cuò)誤信息:
SLF4J: Found binding in [jar:file:/D:/DevSpace/M2Space/ch/qos/logback/logback-classic/1.1.11/logback-classic-1.1.11.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/D:/DevSpace/M2Space/org/apache/logging/log4j/log4j-slf4j-impl/2.7/log4j-slf4j-impl-2.7.jar!/org/slf4j/impl/StaticLoggerBinder.class]
以上是在系統(tǒng)啟動(dòng)過(guò)程中的錯(cuò)誤信息,關(guān)鍵錯(cuò)誤信息是:
Logging system failed to initialize using configuration from ‘src/resources/log4j2.xml’
java.lang.IllegalStateException: Logback configuration error detected:
2.2. 問(wèn)題分析
問(wèn)題的解決嘗試:
1.?application-dev.properties 中配置log4j.xml 路徑,后面的空格去掉。
2. 將spring-boot-starter-logging的包在spring-boot-starter中直接排除掉,從spring boot整體上進(jìn)行替換。

3. B項(xiàng)目pom.xml去除dependencyManagement,保留dependencies,A項(xiàng)目重新關(guān)聯(lián)B項(xiàng)目(右鍵-properties - java build Path - Projects - Add),問(wèn)題解除。
3. 總結(jié)
項(xiàng)目背景:B項(xiàng)目為純JAVA項(xiàng)目,轉(zhuǎn)為maven項(xiàng)目,計(jì)劃將來(lái)打包上傳maven倉(cāng)庫(kù),供A項(xiàng)目和其它項(xiàng)目引用。但前期開(kāi)發(fā)階段,B項(xiàng)目測(cè)試階段未上傳或打JAR包引入,采用項(xiàng)目關(guān)聯(lián)方式。當(dāng)A項(xiàng)目關(guān)聯(lián)項(xiàng)目B,運(yùn)行JUNIT測(cè)試類報(bào)錯(cuò),關(guān)于log4j.xml文件找不到、JAR包沖突等。
B項(xiàng)目的Pom文件檢查:與其它類似純JAVA轉(zhuǎn)maven項(xiàng)目的pom.xml 文件比較,發(fā)現(xiàn)dependencyManagement的區(qū)別。嘗試去除dependencyManagement,再次項(xiàng)目關(guān)聯(lián),測(cè)試類之前報(bào)的錯(cuò)誤解決。