Jenkins中Maven本地倉庫更新不及時,清除舊的Jar包和依賴緩存,解決構建項目報錯問題


場景:
項目A依賴項目B,此時項目A可以正常構建,當我修改項目B后,並將B項目Deploy到私服,本地正常運行。

此時再次使用Jenkins構建項目A,構建失敗。

報錯信息如下:

 

		[INFO] -------------------------------------------------------------
		[ERROR] COMPILATION ERROR : 
		[INFO] -------------------------------------------------------------
		[ERROR] /var/jenkins_home/workspace/aaa-aaa/src/main/java/com/aaa/aaa/aaa/aaa/aaa/aaa.java:[367,24] cannot find symbol
		symbol:   method setRoomName(java.lang.String)
		location: variable aaaDTO of type com.aaa.aaa.aaa.domain.dto.AaaDTO

  

 

 

 

原因:
Jenkins項目配置的使用本地倉庫,本地倉庫中的jar是舊版本,當Jenkins編譯時,在本地倉庫找到就直接納入項目了。

除非本地倉庫沒有找到,才會去遠程倉庫拉取。所以構建A時,老的jar沒有新版本中新增的內容,導致編譯出錯。

 

解決方法(心急的帥哥直接看最后一種方法):


方法一:Jenkins手動清除舊的依賴,緩存
每次部署項目前:

1、進入容器內部。

2、進入本地倉庫。

3、將有變動的依賴刪除掉,或者簡單一點,把所有的依賴都刪除。

 

方法二:項目配置中增加構建前腳本

寫腳本將本地倉庫依賴清空,每次構建項目前都先清空一下。
這種方法和第一種方法差不多,一個是手動擋,一個是自動擋,本質上還是使用Jenkins中本地倉庫,大家應該都喜歡自動擋吧。

 

方法三:修改Jenkins中maven配置文件。(未測試,僅僅記錄一下)
修改~/.m2/settings.xml 或/opt/maven/conf/settings.xml文件,
添加 <updatePolicy>always</updatePolicy>,強制每次都更新依賴庫。

        <repositories>
                <repository>
                        <id>central</id>
                        <url>http://central</url>
                        <releases>
                                <enabled>true</enabled>
                                <updatePolicy>always</updatePolicy>
                        </releases>
                        <snapshots>
                                <enabled>true</enabled>
                                <updatePolicy>always</updatePolicy>
                        </snapshots>
                </repository>
        </repositories>


方法四:強制使用遠程倉庫中最新的依賴(推薦)
這種方法就沒有本地倉庫什么事兒了,不會對本地倉庫有任何CRUD操作,完全使用私服中的依賴,不存在舊的jar。

系統管理–maven項目配置–local maven Reposiory 選擇Loacl to the workspace。OK。

 

 

 

 

測試:
現在本地倉庫是老的依賴包,我更改系統配置后,構建一下項目。

沒毛病。

 

 

 

原文鏈接:https://blog.csdn.net/numbbe/article/details/118346146


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM