2013-11-26 32 views
4

我正在切換到我的Android項目的Gradle。我已經從Eclipse將項目導入Android Studio,並使用Gradle 1.8將其包裝。什麼gradle任務從遠程存儲庫中提取依賴關係?

我的假設是Gradle以Maven的方式處理依賴關係,也就是說,如果您指定的本地存儲庫中不存在的依賴項,它將從遠程存儲庫中提取它。 Android Studio不拉我的依賴。我試圖運行./gradlew androidDependencies --debug,但我沒有看到任何依賴關係的下載,但是他們被確認他們在那裏,並且沒有警告/錯誤被拋出。

11:11:36.833 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.ivyresolve.CachingModuleVersionRepository] Using cached module metadata for module 'com.nostra13.universalimageloader#parent;1.8.6' in 'MavenRepo' 
11:11:36.834 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.ivyresolve.UserResolverChain] Using module 'com.nostra13.universalimageloader:parent:1.8.6' from repository 'MavenRepo' 
11:11:36.855 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.resolveengine.DependencyGraphBuilder] Visiting configuration com.nostra13.universalimageloader:parent:1.8.6(default). 
11:11:36.857 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.resolveengine.DependencyGraphBuilder] Attaching com.nostra13.universalimageloader:parent:1.8.6(default) to its parents. 

搖籃確實需要的依賴,並在這個位置從它創建元數據

/home/wil/.gradle/caches/artifacts-26/filestore/com.nostra13.universalimageloader/parent/1.8.6/pom/41669498c2bec505b61772b083cab341653cb86b 

有趣的是,我發現,如果我在本地的Maven依賴它會拉入Android Studio中的外部庫它也會將jar添加到gradle緩存文件存儲中,它不會爲我指定的遠程依賴執行此操作。

這裏是我的build.gradle

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

dependencies { 
    compile 'com.nostra13.universalimageloader:parent:1.8.6' 
} 

android { 
compileSdkVersion 19 
buildToolsVersion "19" 

defaultConfig { 
    minSdkVersion 14 
    targetSdkVersion 17 
} 
sourceSets { 
    main { 
     manifest.srcFile 'AndroidManifest.xml' 
     java.srcDirs = ['src'] 
     resources.srcDirs = ['src'] 
     aidl.srcDirs = ['src'] 
     renderscript.srcDirs = ['src'] 
     res.srcDirs = ['res'] 
     assets.srcDirs = ['assets'] 
    } 
    instrumentTest.setRoot('tests') 
    debug.setRoot('build-types/debug') 
    release.setRoot('build-types/release') 
} 
} 

我運行Android工作室0.3.6,Ubuntu的13.04,搖籃1.8,JDK 6

我應該跑什麼gradle這個命令應該拉下遠程依賴性從一個Maven倉庫?我是否缺少允許下載依賴關係的配置設置?

+0

遠程依賴關係自動只要任務需要他們下載。這沒有任何任務。 –

回答

2

遠程依賴項在任務需要時自動下載。例如,如果你編譯你的項目代碼,編譯依賴將被下載,除非它們已經存在於Gradle的依賴緩存中。開箱即用,Gradle並沒有提供一個任務,只是下載所有的依賴關係,而不用做任何事情,但編寫一個任務很容易。

+1

當我在Android Studio中運行Build-> Compile時,不會發生這種情況。它沒有說'Gradle:package com.nostra13.universalimageloader.core does not exist'。任何有關調試爲什麼不提取的建議? – wi1

+0

首先要檢查的是它是否可以使用普通的命令行Gradle。 「父」僞像ID是可疑的;通常這是用作另一模塊的父模塊的模塊的名稱,並且構建將取決於其他模塊。把所有東西加在一起,這可能是你問題的原因。 –

+0

說真的,你不知道這給了我多少頭痛,我認爲父母的ID也很奇怪,在回購進一步檢查後,我發現了一個子模塊並嘗試了它,並按預期下載了它。非常感謝你! – wi1

3

使用gradle dependencies命令行,你可以拉下來你的build.gradle指定的所有一切