利用可能な特定の依存関係に対して、gradleに最新のSNAPSHOTをインテリジェントに使用させたいと思います。
私がこのようなビルドファイルを持っていると仮定します:
mavenCentral()
// if (gradle.startParameter.refreshDependencies == false) {
mavenLocal()
// }
maven {
url "my_local_repo.com
}
}
このようにリストされた依存関係:
compile (group: 'com.mystuff', name: 'my-library', version: '1.0.0-SNAPSHOT', changing: 'true')
Mavenローカルとリモートリポジトリ「my_local_repo.com」の両方に存在する可能性があるのはどれですか?Gradleが常に最新のスナップショットでコンパイルされるようにするにはどうすればよいですか?
ここで私の読書:
http://www.gradle.org/docs/current/userguide/artifact_dependencies_tutorial.html
具体的にはポイント8.5:
プロジェクトは複数のリポジトリを持つことができます。Gradleは、指定された順序で各リポジトリの依存関係を検索し、要求されたモジュールを含む最初のリポジトリで停止します。
mavneLocalバージョンが常に優先されると私は信じていますが、
51.7ここ:
http://www.gradle.org/docs/current/userguide/dependency_management.html#sec:repositories
必要な依存関係が与えられると、Gradleは最初にその依存関係のモジュールを解決しようとします。各リポジトリは順番に検査され、最初にそのモジュールの存在を示すモジュール記述子ファイル(POMまたはIvyファイル)が検索されます。モジュール記述子が見つからない場合、Gradleは、モジュールがリポジトリに存在することを示すプライマリモジュールアーティファクトファイルの存在を検索します。...各リポジトリでモジュールが検査されると、Gradleは使用する「最適な」リポジトリを選択します。これは、次の基準を使用して行われます。
および51.2.4
または、同じバージョンであっても、要求するモジュールが時間の経過とともに変更される場合があります。このタイプの変更モジュールの例は、Maven SNAPSHOTモジュールです。これは、公開された最新のアーティファクトを常に指します。言い換えれば、標準のMavenスナップショットは、いわば静止することのないモジュールであり、「変更モジュール」です。
実質的に泥だらけ。すべてのレポがチェックされ、「最良の」選択が行われたと言われているようです(この場合はおそらく最新のものです)。
セクション51.7で強調するのを忘れたと思うのは、次のとおりです。
依存関係が静的バージョンによって宣言され、モジュール記述子ファイルがリポジトリーで見つかった場合、後のリポジトリーを検索し続ける必要はなく、プロセスの残りの部分が短絡されます。
これはセクション8.5で述べられていることと一致します。ただし、モジュール(スナップショットなど)を変更する場合、Gradleはすべてのリポジトリをチェックして最新のアーティファクトを見つけます。静的モジュールの場合、最初に見つかったモジュールを使用するだけです。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加