1. 程式人生 > >settings.xml裡的offline節點的作用

settings.xml裡的offline節點的作用

場景

某天我在本地修改了某個子專案的程式碼,並進行了打包:mvn clean install -DskipTests,接著我執行父專案卻發現自己剛剛的改動並沒有生效,或者說,我剛剛打包好的子專案變回了打包前的程式碼。

通過cmd的輸出我發現在執行父專案的時候,自動下載更新了遠端依賴庫的子專案,因此將我本地打包修改好的子專案依賴給更新成了遠端庫的,這就是為什麼我明明打包了本地修改好的子專案程式碼卻沒有在父專案生效的原因。

解決方法

在maven的配置檔案settings.xml裡有個offline節點,可以通過該節點來控制是否在編譯專案時自動下載遠端依賴庫的最新版本。注意,如果你同時有多個配置檔案,必須要修改~/.m2

下的settings.xml才有效。

<!-- offline
| Determines whether maven should attempt to connect to the network when executing a build.
| This will have an effect on artifact downloads, artifact deployment, and others.
|
| Default: false
<offline>false</offline>
-->

將配置檔案裡的offline節點的註釋去掉並改為true,或者自己加一個:

<offline>true</offline>

當然,這樣做只是為了方便本地測試而已,如果測試完畢不需要再改程式碼了,最好還是將該節點改為false,否則你如果在pom檔案裡引入了本地倉庫所沒有的依賴時,是不會自動幫你從遠處庫下載依賴的!!

相關的問題

offline可能會導致啟動mvn專案時報錯:

Caused by: org.eclipse.aether.transfer.ArtifactNotFoundException: Cannot access spring-releases (https://repo.spring.io/libs-release) in offline mode and the artifact org.springframework.boot:spring-boot-loader-tools:jar:2.0.5.RELEASE has not been downloaded from it before.

因為offline mode導致無法從線上倉庫下載依賴,將offline的值改為false就行了。