1. 程式人生 > >Maven - settings.xml裏的offline節點的作用

Maven - settings.xml裏的offline節點的作用

自己 去掉 場景 conn 最好 determine repo 現在 network

場景

某天我在本地修改了某個子項目的代碼,並進行了打包: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就行了。

Maven - settings.xml裏的offline節點的作用