我正在为我的Android项目切换到Gradle。我已经从Eclipse将项目导入Android Studio并使用Gradle 1.8将其打包。
我的假设是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.
Gradle确实接受了依赖关系并在此位置创建了元数据
/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 Studio 0.3.6,Ubuntu 13.04,Gradle 1.8,JDK 6
我应该运行什么gradle命令来从maven存储库中删除远程依赖项?我错过了允许下载依赖项的配置设置吗?
答案 0 :(得分:3)
通过使用gradle dependencies
命令行,您可以下拉build.gradle中指定的所有内容
答案 1 :(得分:2)
一旦任务需要,就会自动下载远程依赖项。例如,如果您编译项目的代码,将下载编译依赖项,除非它们已存在于Gradle的依赖项缓存中。开箱即用,Gradle没有提供仅仅下载所有依赖项而不对它们做任何事情的任务,但是编写一个很容易。