IntelliJ 2016.2.5を使用すると、同じプロジェクト内のGradle依存関係を解決できないようです。次のようにIntelliJが同じプロジェクト内のモジュールから依存関係を解決するようにする
プロジェクト構造は以下の通りである:最初build.gradle
の
firstModule
-> build.gradle // 1
-> settings.gradle // 2
secondModule
-> build.gradle // 3
-> settings.gradle // 4
目次(1):
group 'de.test'
version '1.0-SNAPSHOT'
apply plugin: 'java'
sourceCompatibility = 1.8
repositories {mavenCentral()}
dependencies {}
そしてsettings.gradle
(2):第二の
rootProject.name = 'test'
コンテンツbuild.gradle
(4)は、
group 'de.test'
version '1.0-SNAPSHOT'
apply plugin: 'java'
sourceCompatibility = 1.8
repositories {mavenCentral()}
dependencies {
compile ('de.test:test:1.0-SNAPSHOT')
}
そして第二settings.gradle
(4):
rootProject.name = 'testdep'
両方のモジュールは、Gradleのプロジェクトとしてインポートされauto-import enabled
に設定されています。
私はMavenプロジェクトから知っていますが、IntelliJとEclipseはプロジェクト/ワークスペース内のそれぞれのモジュールへの依存関係を解決します。しかし、Gradleでは依存関係を認識していないようです。モジュールが変更されるたびにtest
testdep
が変更を受け入れる前に、明示的なgradleタスクclean
とbuild
を実行する必要があります。私がバージョンを変更しないと、このプロセスは信頼できません。これは、gradleキャッシングが原因である可能性が最も高いですが、にもかかわらず迷惑です。
コマンドライン引数--refresh-dependencies
を使用することは、私たちのプロジェクトのビルドタイムを上回るため、実際の解決策ではありません(上の例はデモ目的のみです)。また、私はでなく、で明示的にgradle呼び出しを使用する必要があります。
このような状況を処理する方法はありますか? Eclipseで動作しますか? これはIntelliJ 2016.3で修正される予定です(このリリースでは、グラデーションエリアの改善が見られました)。
これはほとんどの問題を解決しますが、1つの問題が残っています。たとえば、依存関係のバージョンを 'secondModule'の' firstModule'に変更すると、古いバージョンをテストするために、IntelliJはローカルモジュールをスキップせず、代わりにリポジトリから正しいものをダウンロードするように見えます。だから、全体的に、この解決策は私がMavenを使うときに慣れていたものとはまだまだ違います... –