【開(kāi)發(fā)階段項(xiàng)目關(guān)聯(lián)】運(yùn)行JUNIT測(cè)試類,報(bào)log4j.xml文件找不到

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)行替換。

參考:http://www.voidcn.com/article/p-raiklnqf-bnz.html

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ò)誤解決。

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

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