2013-05-21 77 views
44

我使用的是捆綁在Android Studio中的Gradle構建系統。到目前爲止,我能夠使用存儲在我的項目結構中的依賴項來構建多項目設置。我現在想使用maven依賴項,但無濟於事。我寫了一個非常簡單的build.gradle的文件,總是失敗:Maven依賴Android Studio/Gradle

buildscript { 
     repositories { 
      maven { url 'http://repo1.maven.org/maven2' } 
     } 
     dependencies { 
      classpath 'com.android.tools.build:gradle:0.4' 
     } 
    } 
    apply plugin: 'android' 

    dependencies { 
     compile 'com.google.android:support-v4:r7' 
    } 

    android { 
     compileSdkVersion 17 
     buildToolsVersion "17.0.0" 

     defaultConfig { 
      minSdkVersion 7 
      targetSdkVersion 16 
     } 
    } 

與以下消息:

* What went wrong: 
     A problem occurred configuring project ':absabs'. 
     > Failed to notify project evaluation listener. 
      > Could not resolve all dependencies for configuration ':absabs:compile'. 
       > Could not find com.google.android:support-v4:r7. 
       Required by: 
        absabs:absabs:unspecified 
.... 
Caused by: org.gradle.api.internal.artifacts.ivyservice.ModuleVersionNotFoundException: Could not find com.google.android:support-v4:r7. 

它發生與到目前爲止,我還沒有嘗試過任何神器。有什麼不對?

感謝

+0

http://mvnrepository.com/artifact/com.google.android/support-v4/r7 –

+0

注意:您可以在http://mvnrepository.com/artifact/com.h2database/h2中獲得最新版本 – mangu23

回答

68

buildscript節中的「repositories」塊只適用於構建環境。您還需要指定構建項目解析相關性時使用的倉庫,所以你需要把類似的東西在你的build.gradle文件中的以下內容:

repositories { 
    mavenCentral() 
} 

你完整的文件看起來是這樣的:

buildscript { 
    repositories { 
     maven { url 'http://repo1.maven.org/maven2' } 
    } 
    dependencies { 
     classpath 'com.android.tools.build:gradle:0.4' 
    } 
} 
apply plugin: 'android' 

repositories { 
    mavenCentral() 
} 

dependencies { 
    compile 'com.google.android:support-v4:r7' 
} 

android { 
    compileSdkVersion 17 
    buildToolsVersion "17.0.0" 

    defaultConfig { 
     minSdkVersion 7 
     targetSdkVersion 16 
    } 
} 

請注意兩個「存儲庫」實例。你可以在the gradle docs中閱讀更多關於這個實際意義的信息。

+0

你能說明一下嗎,因爲我不確定你的意思? – arinte

+0

@arinte更清楚了嗎? – ZoFreX

+0

@ZoFreX是的,它做到了。 – arinte

12

看來,目前的Android Studio版本並沒有立即拿起新的依賴。嘗試重新啓動IDE。

編輯: 這對於Android Studio> = 0.1.4v不是必需的。它建立在行動Sync Project with Gradle file。您可以在Tools > Android > Sync Project with Gradle file下找到它,也可以在工具欄中找到它。

+0

此信息+1。重新啓動IDE後,我可以導入依賴關係中引用的類。 –

+0

這讓我很困惑,因爲我的項目中'build.gradle'很好。重新啓動IDE將其排序。謝謝 – samael

3

我就是這麼做的:

在頂部的build.gradle(項目:YourProject)我說:

buildscript { 
    repositories { 
     mavenCentral() 
    } 
    dependencies { 
     classpath 'com.h2database:h2:1.4.187' 
     //NOTE: you can get the latest version in http://mvnrepository.com/artifact/com.h2database/h2 

     } 
} 

allprojects { 
    repositories { 
     jcenter() 
     mavenCentral() 
    } 
} 

注意:我說這與預定義的jcenter()庫一起。

然後我的應用程序/文件的build.gradle我加入,我需要在哪個圖書館或依賴:

dependencies { 
....//Add dependency here 
} 
0

行家 Maven的繼續使用XML作爲格式來寫構建規範。但是,結構是截然不同的。 Maven有它自己的問題。依賴管理不能很好地處理同一個庫的不同版本之間的衝突(常春藤更好)。XML作爲構建配置格式是嚴格結構化和高度標準化的。定製目標(目標)很困難。由於Maven主要關注依賴關係管理,因此複雜的自定義構建腳本實際上比Maven更難在Maven編寫。