近日,apache log4j2爆出“核彈級”遠程代碼執行漏洞,公司相關系統也在升級log4j版本,
程序中遇到一個問題,本地代碼通過maven clean install命令執行后的程式包里已經沒有log4j舊版本的依賴了,可是呢,測驗環境通過Jenkins構建后,利用log4shell工具掃描程式包,依然存在log4j舊版本,
[root@youfu-server ~]# cd /root/
[root@youfu-server ~]# ./log4shell scan /www/epaysch/tomcat-pctrans-provider-8580/webapps/*/WEB-INF/lib
1:38PM INF identified vulnerable path fileName=org/apache/log4j/net/SocketNode.class path=/www/epaysch/tomcat-pctrans-provider-8580/webapps/pctrans-provider/WEB-INF/lib/log4j-1.2.17.jar versionInfo="log4j 1.2.17"
看來,測驗環境Jenkins服務器的maven庫里某些包可能依賴了log4j舊版本,
于是乎,找運維伙伴將Jenkins任務的build配置由clean install暫時改為dependency:tree,來看看具體是由哪個包造成的,
可是,構建Jenkins任務時,發現報錯,提示maven私服上特定版本的某個jar包已經快取在了本地倉庫中(xxx-version.jar was cached in the local repository),就是說,Maven默認會使用本地快取的庫來編譯工程,對于上次下載失敗的庫,maven會在~/.m3/repository/<group>/<artifact>/<version>/目錄下創建xxx.lastUpdated檔案,一旦這個檔案存在,那么在直到下一次nexus更新之前都不會更新這個依賴庫,
[ERROR] Failed to execute goal on project trans-rpcprovider: Could not resolve dependencies for project com.yft:trans-rpcprovider:war:1.0-SNAPSHOT: Failure to find com.yft:PCOperCommonUtil:jar:1.0-SNAPSHOT in http://192.168.40.196:8081/nexus/content/repositories/snapshots/ was cached in the local repository, resolution will not be reattempted until the update interval of public has elapsed or updates are forced -> [Help 1]
[ERROR]
[ERROR] T...
網上給出的解決辦法有3個:
- 刪掉本地maven倉庫里的快取檔案,m3repository/<group>/<artifact>/<version>/目錄下的*.lastUpdated檔案,然后重新執行maven命令,
- 在maven settings.xml檔案里,加<updatePolicy>always</updatePolicy>來強制每次都更新依賴庫,
- 加上-U指令來強制重繪本地倉庫,
我和運維伙伴逐個嘗試,前兩個方法并沒解決問題(也許是操作不當吧),好事多磨,最終靠第三個方法得以解決,即使用dependency:tree -U命令,最終看到了測驗環境程式包的依賴樹,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/385252.html
標籤:Java
上一篇:Log4j2 維護者發聲:沒有工資,還要挨罵!!(我真是醉了!)
下一篇:1.5 實作一個優先級佇列
