2014-02-28 27 views
0

我有一個build,我正在從Maven移動到Gradle。到目前爲止,事情並沒有太糟糕,說實話我很可能是Gradle。Gradle會緩存一個8MB的jar文件,但不是32MB的jar文件

這是我遇到的問題,文檔沒有太大的幫助。我有兩個我的代碼依賴的內部罐子。我們稱之爲「核心」和其他「測試」。他們來自另一個內部團隊,Maven倉庫是我們內部的。它們是超級罐子:'核心'是8MB,'測試'是32MB。我所依賴的所有外部罐子都不是問題。在你問之前,我的倉庫和依賴關係定義沒問題,gradle不會抱怨,並且可以找到一切正常。在這裏,他們是後人:

repositories { 
    mavenCentral() 
    maven { 
     url { 'http://internal.host.com/path/to/repo/root/' } 
    } 
} 

dependencies { 
    compile group: 'io.dropwizard', name: 'dropwizard.core', version: dropwizardVersion 
    // And so on 

    // This is the 8MB jar that I need at compile and runtime 
    compile group: 'corp.group.id', name: 'core', version: currentVersion 

    // This is the 32MB jar that I need for my tests, and which Gradle insists on 
    // caching the pom.xml ONLY, and downloading the jar on demand. 
    testCompile group: 'corp.group.id', name: 'tests', version: currentVersion 
} 

在這一點上,我只是試圖讓「gradlew Eclipse的生成,我可以使用這個代碼庫工作,並按摩到編制有效的classpath文件。這是踢球者。生成的.classpath文件沒有任何對tests-version.jar文件的引用。 Gradle已經很高興地下載了POM並緩存了它,但它每次都會重新下載這個jar,並且每次都感覺它需要它。 core-version.jar文件只下載一次(如預期的那樣)並緩存,並顯示在生成的.classpath文件中。

我似乎無法找到任何能夠告訴Gradle的文檔「只需將緩衝罐保存在緩存中,不管怎樣,請不要在乎,我不在乎這該死的東西有多大,它更好每次都要下載它。「

+0

您可以在使用maven時獲得緩存的jar嗎?如果是這樣,你可以在倉庫定義 – Asaf

+0

中使用'mavenLocal()'也許問題在於pom.xml和gradle使用它的方式,以及maven如何使用它? – fge

+1

Jar的大小是無關緊要的。您的構建或環境可能會有其他問題觸發此(非常罕見)行爲。你有沒有嘗試過最新的Gradle版本? 'currentVersion'是一個快照版本嗎?你正在使用哪個版本庫管理器?你是否覈實過檔案館發佈的沙牌是否正確? –

回答

1

回答你自己的問題可能是不好的形式,但我想留下後人的記錄,以防其他人遇到此問題。

該問題尚未解決,因爲Nexus 2.3.0服務器無法完整發送整個jar。當請求更接近服務器的jar(通過curl,wget,Gradle,Maven)並且下載速度顯着更高時,一切正常。但是當我從遠程位置(桑尼維爾到多倫多)進行傳輸時,速率從15M/s降到1.2M/s或更低,然後Nexus由於某種原因未能發送最後一位。轉移需要多長時間似乎並不重要。我已經看到它在18到35秒之間變化。而截止的數據量也不盡相同,從5176字節到34876字節。

這裏有挑戰性的事情是Gradle沒有表明下載實際上以任何形式失敗。使用--info或--debug沒有幫助。沒有錯誤消息說服務器過早地終止了連接。

當我們完全解決這個問題時,我會更新這個答案。

編輯:仍然沒有解決這個問題,雖然它開始看起來像一個網絡問題,而不是一個Nexus服務器錯誤。至於錯誤消息,這確實通過完全重建〜/ .gradle(資源名稱明顯模糊)來實現:

Forcing close on abandoned resource: Http GET Resource: http://corp.server.com/nexus/content/repositories/repo-name/gid/aid/version-number/artifact.jar