Android studio,gradle从不使用我当地的maven repo

S-K*_*-K' 13 gradle android-studio

如何使用gradle 1.10来使用我的本地maven存储库?当我运行我的gradle脚本时,它总是在寻找工件/Applications/Android Studio.app/sdk/extras/android/m2repository/而不是${HOME}/.m2/repository/

在build.gradle中,我尝试过:

repositories {
    mavenCentral()
    mavenLocal()
 }
Run Code Online (Sandbox Code Playgroud)

并试过这个:

repositories {
    mavenCentral()
    maven {
        url '${HOME}/.m2/repository/'
    }
 }
Run Code Online (Sandbox Code Playgroud)

然后我有一个位于我的本地.m2存储库中的依赖项:

dependencies {
    compile 'com.android.support:support-v4:20.0.+'
    compile 'com.android.support:appcompat-v7:20.0.+'
    compile 'com.google.android.gms:play-services:4.0.30'
    compile 'com.profferapp:proffer_dto_customer_android:1.0'
    compile 'com.test:artifact:1.0' // this is in my .m2 repository
}
Run Code Online (Sandbox Code Playgroud)

这些配置都不指向我的本地maven存储库.

Sco*_*rta 11

如果你想做$ {...}变量替换,你需要使用双引号(")而不是单引号(').双引号表示GStrings,它可以做到这一点,但带单引号的字符串总是按字面解释.

所以:

repositories {
    mavenCentral()
    maven {
        url "${HOME}/.m2/repository/"
    }
 }
Run Code Online (Sandbox Code Playgroud)

确保将此块放在模块的构建文件中,而不是buildscript顶层构建文件的块中; 后者只决定在哪里找到Android插件,而不是特定于模块的依赖项

由于错误引用的字符串,它可能没有看到您的本地存储库.另外,关于插件隐式在SDK中添加Maven repo的另一个问题也是正确的.这将获得Android支持依赖项.

Gradle Single vs Double Quotes有更多信息和您可以关注的链接.

  • 您能否还说明如何/在何处定义“HOME”变量?谢谢 (2认同)

Zhi*_*ong 6

我想评论斯科特巴塔的答案,但我没有足够的声誉.

  1. $ HOME不适合我(在CLI中,而不是Android Studio),System.getenv('HOME')
  2. 没有必要将存储库块放入每个模块的build.gradle文件中,只需将块放在顶级build.gradle中的"allprojects"块中(我在这里学到)

所以,我使用的最终解决方案是:

// in the top-level build.gradle:
buildscript {
    ...
}

allprojects {
    repositories {
        mavenCentral()
        maven { url System.getenv('HOME') + "/.m2/repository/" }
    }
}
Run Code Online (Sandbox Code Playgroud)