2012-01-19 18 views
3

問題:你有一個壓縮的java項目發行版,它依賴於像spring-core,spring-context,jacskon,testng和slf4j這樣的幾個庫。任務是讓事情可以離線。可以使用所有必需的庫罐來創建項目範圍本地回購。有史以來第一個maven構建可以脫機嗎?

我試過這樣做。看起來甚至像項目包含javac和運行時所需的jar一樣,構建仍然需要訪問互聯網。 Maven仍然會潛伏到網絡中去獲取它構建所需的大部分插件。我假設maven是運行在空的.m2目錄下的(因爲這可能是第一次發佈的版本,可能是脫機版本)。不,我不太願意在項目本身發佈完整的maven回購快照,因爲這對我來說看起來像是一團糟。

有點背景:更廣泛的任務是創建Windows可移植樣式的JDK/IntelliJ Idea發行版,該發行版沿着該項目發展,允許在IDE內部使用最少的配置和最少的Internet訪問進行一些最小的Java編碼/運行。該項目針對的是計算機課程的學生,很少或根本無法控制系統配置。希望在離線模式下保持控制檯構建系統的完整性,但我想這個maven過度依賴於網絡,所以我必須拋棄它,轉而使用好的老螞蟻。

那麼,您有什麼看法,我們可以完全移動在離線模式下的第一個Maven構建?我的直覺是,最初的maven發行版只包含將主要的repo從主要的插件中提取出來所需的最低限度的內容,並且在沒有看到主要的repo至少一次的情況下功能不全。

+0

相關http://stackoverflow.com/questions/1245076/maven-offline-problem-with-mvn-plugins – Gray

回答

9

Maven有一個「-o」開關,它允許你建立離線:

-o,--offline       Work offline 

當然,你需要有你的依賴已經被緩存到您的$HOME/.m2/repository此建立沒有錯誤。你可以加載的依賴關係:

mvn dependency:go-offline 

我試過這個過程,它似乎沒有完全工作。我做了:

rm -rf $HOME/.m2/repository 
mvn dependency:go-offline  # lot of stuff downloaded 
# unplugged my network 
# develop stuff 
mvn install      # errors from missing plugins 

什麼然而工作是:

rm -rf $HOME/.m2/repository 
mvn install      # while still online 
# unplugged my network 
# develop stuff 
mvn install 
+0

好吧,但這仍然需要不僅我的依賴,但很多maven內部的東西。那麼我對這件內部裝置的擔憂是否得到證實呢? –

+0

是的,取決於你使用'mvn dependency:go-offline'的插件不適用於我。工作是在線時進行安裝(或任何想要離線執行的命令)。這應該緩存所有的依賴關係。那麼你可以開發和建立離線罰款。 – Gray

+0

當你做mvn安裝,你把-o標誌?如果沒有,那麼它會失敗,因爲maven會嘗試從一個不存在的互聯網連接下載東西。 –

1

您可以運行對有關項目一個全新的.m2目錄回購行家dependency:go-offline。這應該下載Maven需要能夠離線運行的所有內容。如果這些項目被納入項目範圍的本地回購,您應該能夠實現您想要的。我沒有嘗試這樣做,雖然

0

指定本地倉庫位置,無論是內settings.xml文件,<localRepository>...</localRepository>或用-Dmaven.repo.local=...參數運行mvn。 在初始項目構建之後,所有必需的工件應該在本地緩存,並且可以以相同的方式引用此存儲庫位置,同時以離線模式運行其他Maven構建(mvn -o ...)。

相關問題