Android Studio、Gradleは私の地元のMaven Repoを使用しない
-
21-12-2019 - |
質問
私の地元のMavenリポジトリを使用するためにGradle 1.10を得ることができますか?Gradleスクリプトを実行すると、それは常に/Applications/Android Studio.app/sdk/extras/android/m2repository/
${HOME}/.m2/repository/
の成果物を探します。
build.gradle私は試してみました:
repositories {
mavenCentral()
mavenLocal()
}
.
とこれを試してみました:
repositories {
mavenCentral()
maven {
url '${HOME}/.m2/repository/'
}
}
.
その後、ローカルの.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
}
.
これらの構成のどれも私の地元のMavenリポジトリを指していません。
解決
$ {...}変数置換をしたい場合は、一重引用符( ')ではなく二重引用符( ")を使用する必要があります。二重引用符はGStringsを示します。これはそれを行うことができますが、一重引用符付きの文字列は常に文字通り解釈されました。
SO:
repositories {
mavenCentral()
maven {
url "${HOME}/.m2/repository/"
}
}
.
最上位ビルドファイルのbuildscript
ブロックではなく、必ずモジュールのビルドファイルに置いてください。後者は、モジュール固有の依存関係ではなく、Androidプラグインの検索場所のみを決定します。
誤った文字列のために、おそらくあなたの地元のリポジトリを見ていないでしょう。また、プラグインに関する他の問題は、SDKにMaven Repoを暗黙的に追加するという問題もあります。これはAndroidサポート依存関係を拾います。
href="https://stackoverflow.com/questions/15171049/GRADLE-SINGLE-VS-Double-quotes"> Gradle Single VS二重引用符には、もう少し情報とリンクがあります。フォローしてください。
他のヒント
スコットバータの答えをコメントしたいのですが、十分な評判はありません。
- $ homeは私のために働かない(CLIではなく、Android Studioではなく)、system.getenv( 'home')は
- リポジトリをブロックする必要はありません。このブロックをすべてのモジュールのbuild.gradleファイルにまとめる必要はありません。最上位ビルドグラードの「AllProjects」ブロック内にブロックを入れるだけです(< Here )
だから、私が使用する最終的な解決策は次のとおりです。
// in the top-level build.gradle:
buildscript {
...
}
allprojects {
repositories {
mavenCentral()
maven { url System.getenv('HOME') + "/.m2/repository/" }
}
}
.あなたがするとき
apply plugin: 'android'
Androidプラグインは別のリポジトリを追加します - SDKの下のもの。これにはそれらのサポートと拡張ライブラリが含まれています。com.test:artifact:1.0
はあなたがローカルMavenリポジトリをフォームにする可能性があります。