2017-10-16 187 views
1

我正在研究應該在沒有互聯網連接的機器上運行的gradle項目。Gradle不下載罐子

爲此,我創建了一個接受gradle緩存並將其複製到另一個目錄中的任務,以用作本地存儲庫。

我已經建立了在線模式的項目,它的工作。 我已經運行我的任務將緩存複製到本地存儲庫,並且它工作。 但是,試圖運行gradle build --offline我越來越喜歡這個錯誤(幾個不同的jar文件)時:

Could not download commons-math3.jar (org.apache.commons:commons-math3:3.4.1): No cached version available for offline mode 

檢查我的兩個本地資源庫和gradle這個緩存,我無法找到相關的JAR文件(在這種情況下commons-math3-3.4.1.jar)。

我嘗試過使用gradle build --refresh-dependencies,我試圖刪除緩存,然後使用gradle build - 什麼也沒有,它不會下載jar文件,只有pom文件。 我甚至嘗試手動下載jar並將它們放入我的本地存儲庫中正確的目錄中,無法正常工作。

任何幫助,將不勝感激。

回答

0

我不認爲Gradle緩存可以傳輸到這樣的另一臺機器。我試圖創建一個插件,它可以將配置中的依賴關係複製到本地目錄以供離線使用here,但我已經點擊this issue,其中不能從Gradle API訪問父POM和BOM。我有一個失敗的測試here,演示了插件的用法以及缺少父POM支持。

對此問題的建議之一是嘗試IvyPot plugin。我自己沒有嘗試過,但它可能適用於你正在嘗試的東西。

+0

這是那種我做的事(創建一個插件來複制緩存到一個目錄下的項目中用作本地離線存儲庫)。它不那麼普通,但它有效(我已經成功建立並運行了一個較小的測試項目)。我的問題是我沒有在Gradle緩存中提到的jar文件(和另外3個),所以我不能將它們複製到我的離線存儲庫,所以它不起作用。 –

+0

這聽起來很詭異,Gradle緩存目錄是一個你不應該訪問的私有實現。如果罐子丟失,那麼我猜你在['Configuration.resolve()']之前複製了緩存(https://docs.gradle.org/current/javadoc/org/gradle/api/artifacts/Configuration.html# resolve())在一個或多個配置上被調用 –

+0

我已經在線創建了該項目,複製了jar和poms,試圖離線構建並出現了錯誤。 –

0

您可能已經啓用了代理,添加文件「gradle.properties」代理細節文件象下面這樣:

systemProp.http.proxyHost=your.proxy.com 
systemProp.http.proxyPort=XXXX 
systemProp.http.proxyUser=user 
systemProp.http.proxyPassword=password