2017-09-21 18 views
0

gradleスクリプトを更新して、リポジトリのローカルインスタンスがあるかどうかを確認しようとしています。それ以外の場合はダウンロードしてください。本質的には、開発者は私たちが共有リポジトリをローカルで作業するときに、mavenにプッシュしたくないのです。しかし、私たちの展開パイプラインの一部として、私たちのツールはそれを引き出す必要があります。レポがまだ古くなっていることを心配しているわけではありません。しかし、私はこのステートメントを書く方法がわかりません。リポジトリにローカルインポートがある場合は、それ以外の場合はmaven経由でダウンロードしてください

現在の解決策は、常にrepoをプルすることです。ここでも目標は少しだけコントロールし、レポと同期する必要はありません。

configurations.all { 
    // check for updates every build 
    resolutionStrategy.cacheChangingModulesFor 0, 'seconds' 
} 

compile ('com.aaaa.commons:1.2.3') { changing=true } 

欲望

if(path/to/project exists){ 
    import the local dependency 
} 
else{ 
    compile ('com.aaaa.commons:1.2.3') { changing=true } 
} 

EDIT

問題は、それがモジュールとしてインポートするために私を必要としています。それは本質的に私のアプリケーションに対処しています。それはまさに私が望まないものです。私は

include ':commons' 
project(':commons').projectDir = new File(rootProject.projectDir, 
    '/Users/asdasd/Repos/android-commons') 

をすれば、私たちは、私は私のライブラリを選択したルート持っていた..私は、ファイルツリーの1以上をダウン選択するために必要

Error:Project :app declares a dependency from configuration 'compile' to configuration 'default' which is not declared in the descriptor for project :commons. 

編集編集 を取得します。私はアンドロイドコモンズではなくコモンズを必要とした。私は同じようにコンパイルされるまで、私は実際にライブラリを使用することができませんでした。そこから

mymainproject 
android-commons 
    android-commons.iml 
    build 
    build.gradle 
    **commons** 

私は時々使用

debugCompile project(path: ':commons') 

答えて

1

一つの簡単なアプローチを(私は常にそれを引っ張ってくるのリリースとデバッグをしています注意してください) :

try { 
    compile project(':my-project') 
} catch (UnknownProjectException) { 
    compile 'com.aaaa.ooooo:1.2.3' 
} 

はしかし、私はresolutionStrategyを使用してよりよい解決策があるかどうかを確認していません。 1つの欠点:他のプロジェクトが見つかった場合は、プロジェクトをリポジトリに公開するときに依存関係として追加されません。

以下のようにsetting.gradleファイルにプロジェクトのインクルードに条件を追加するためにneccessaryことがあります

if (new File(rootDir, 'my-project').isDirectory()) { 
    include ':my-project' 
} 
+0

非常に興味深いです。主な問題は、トップレベルのsettings.gradleにinclude ':commons'というモジュールを追加しようとすると、その名前のアプリケーションに空のディレクトリが作成されるということです。私はあなたのコードをapp/build.gradleで試しています – StarWind0

+0

私は 'settings.gradle'に条件付きプロジェクトのインクルードの例を私の答えに追加しました。 –

関連する問題