2017-09-21 83 views
1

我的組織維護自己的庫文庫&用於構建項目的工具。只有在組織的授權成員進行人工審查之後,纔會將新項目添加到此存儲庫。這意味着在我們的Android項目中,我們從Gradle構建腳本中刪除了Maven Central,JCenter等。組織維護的存儲庫是唯一用於在構建服務器上構建版本的存儲庫,並且應該是是開發人員在其自己的計算機上生成該項目的開發版本的唯一一個。如何從我們的項目中排除Android Studio的內部m2存儲庫?

然而,即使頂層buildscript看起來是這樣的(注:無資料庫):

buildscript { 
    dependencies { 
     classpath 'com.android.tools.build:gradle:2.3.3' 
    } 
} 
allprojects { 
} 
task clean(type: Delete) { 
    delete rootProject.buildDir 
} 

調用時,該項目在Android Studio中運行時仍然建立,即使它失敗(因爲它應該)從終端跛行。顯然Android Studio仍然引用自己的內置存儲庫(位於[Android Install]/gradle/m2repository /)。這會導致開發人員無意中破壞構建的不良情況,因爲他們引用的項目不在組織的存儲庫中,而是位於Android Studio的內置存儲庫中。與其試圖強制每個人在每次提交之前在終端中執行gradle構建,都沒有辦法讓gradle文件或項目設置告訴Android Studio不要包含任何未明確聲明的存儲庫?

+1

什麼在gradle這個構建工具,你想避免使用不慎? –

+0

任何不在組織回購庫中的庫或工具,或與回購庫中的庫不同的工具。 – duggulous

+0

Android Studio不在您的回購中。 –

回答

0

對於android插件(com.android.tools.build:gradle),Android Studio不使用內置的回購
Android Studio在第一次下載它們後會緩存這個插件。
這意味着在你的情況下,第一次從認證的回購下載。

你可以找到這個緩存的位置:

file:/Applications/Android Studio.app/Contents/gradle/m2repository/com/android/tools/build/gradle/ 

而且新的Android插件3.3.x僅位於該谷歌行家回購在jcenterhttps://maven.google.com」,而不是。

記住現在的支持庫,火力和谷歌播放服務庫存儲在同谷歌的maven回購,但老版本在android_sdk /演員/離線存儲。

在這裏你可以找到更多的細節:
https://developer.android.com/studio/build/dependencies.html#google-maven

+0

也許「內置」不是正確的使用術語。如果這更準確,我們可以稱之爲「內部緩存」。無論如何,即使項目沒有調用它,Android Studio也會引用該回購。你有什麼建議如何使它不適用於某個特定的項目? – duggulous

+0

@duggulous您無法避免緩存,但請記住,您必須從回購站首次下載。然後,如果您使用私人回購,無論如何都會從您的認證回購庫下載緩存版本。 –

+0

讓我們考慮一下有兩個不同的項目引用不同的2回購的情況。項目引用回購A,不信任回購B.項目B引用回購B並且不信任回購A.是否可以使用Android Studio的一個安裝來處理這兩個項目,而不需要每個項目都使其回購可用? – duggulous

相關問題