2014-06-27 46 views
4

默認情況下,Gradle使用~/.gradle/cache作爲Maven工件的緩存。如何強制gradle使用/共享〜/ .m2 /存儲庫與Maven系統範圍?

我也使用Maven並在~/.m2/settings.xml中設置代理和存儲庫URL,並且不希望將此設置複製到Gradle。

官方的解決辦法是增加:

repositories { 
    mavenCentral() 
    mavenLocal() # <== THIS 
} 

build.gradle。這需要更改項目構建腳本並且不可接受。

是否可以將此設置設置爲系統範圍或項目之外(無需編輯項目自己的文件)?

+1

你觸及很多點(cache,settings.xml,mavenLocal()),這很難弄清問題到底是什麼。我不明白最後一句話。你知道初始化腳本('〜/ .gradle/init.gradle',參見[Gradle用戶指南](http://gradle.org/docs/current/userguide/userguide_single.html))嗎? –

回答

4

我經常想mavenLocal爲buildscript,需要多模塊項目,有時需要禁用它,所以這是我在〜/ .gradle/init.d /的mavenLocal.gradle使用:

allprojects { project -> 
    buildscript { 
     if(!project.hasProperty('skipMavenLocal')) { 
      repositories { 
       println "Adding buildscript mavenLocal()" 
       mavenLocal() 
      } 
      configurations.all { 
       resolutionStrategy.cacheChangingModulesFor 0, 'hours' 
      } 
     } 
    } 

    if(!project.hasProperty('skipMavenLocal')) { 
     repositories { 
      println "Adding mavenLocal()" 
      mavenLocal() 
     } 
    } 
} 
+0

謝謝! +1我正準備尋找這樣的解決方案。 – gavenkoa