2015-10-30 10 views
10

コンテキストIntelliJ IDEAがJavaプロジェクトでDagger 2生成クラスを認識する方法はありますか?

私は、ビルドシステムとしてGradleとJavaで個人的なプロジェクトを開始していると私はDIとしてダガー2を使用します。これを行う主な理由は、そのライブラリに慣れ、大きなプロジェクトで簡単に使用できることです。

私は

を試してみました、私はのIntelliJ IDEAにGoogle sampleランを作ることができた何

問題のIntelliJ IDEAは(それが生成されたクラスを解決できないことを私に告げる保ちますこの場合、DaggerCoffeeApp_Coffee)。書かれたコードが正しいかどうかを知らないのはちょっと面倒です(特にDagger 2を使うことを学んだとき)。

すべてのJavaクラスはGoogle sampleと同じです。ここに私のbuild.gradleファイルされる:

apply plugin: 'java' 

repositories { 
    mavenCentral() 
} 

dependencies { 
    testCompile group: 'junit', name: 'junit', version: '4.12' 

    compile 'com.google.dagger:dagger:2.0.1' 
    compile 'com.google.dagger:dagger-compiler:2.0.1' 
} 

質問

はのIntelliJ IDEAは、生成されたクラスとしてDaggerCoffeeApp_Coffeeを認識(およびその左Ctrl + `によってその実装に行くことができるようにする方法はありますクリック)?

+0

アプリを一度正常にコンパイルした後にできるはずです。この単語の 'DaggerCoffeeApp_Coffee'行にテキストカーソルを置き、' Ctrl + B'を使います。 –

+0

実際、アプリはコンパイルされており、それを実行することができました。 IntelliJは 'DaggerCoffeeApp_Coffee'を解決できないことを伝え続けます – Pelocho

答えて

12

最後に作成しました。

buildscript { 
    repositories { 
     maven { 
      url "https://plugins.gradle.org/m2/" 
     } 
    } 
    dependencies { 
     classpath "net.ltgt.gradle:gradle-apt-plugin:0.4" 
    } 
} 

apply plugin: "net.ltgt.apt" 
apply plugin: 'java' 
apply plugin: 'idea' 

repositories { 
    mavenCentral() 
} 

dependencies { 
    testCompile group: 'junit', name: 'junit', version: '4.12' 

    compile 'com.google.dagger:dagger:2.0.1' 
    apt 'com.google.dagger:dagger-compiler:2.0.1' 
} 
+4

'idea'プラグインを追加すると – Gallal

+0

が修正されました。 :gradle-apt-plugin versionここに私を導く - それを最新の修正済みのものに設定する。歓声 – bsautner

1

ここでは私のために働いたソリューションです:

は、私が aptideaプラグインのようなので、今の私 build.gradleファイルを見て追加する必要がありました

ファイル - >プロジェクトの構造 - > (モジュール一覧の下でプロジェクトを選択) - >「依存関係」タブを開く

次に、緑色の「+」記号をクリックし、「JARまたはディレクトリ」を選択して「ビルド/クラス/メイン」フォルダを選択します。

別の解決策は、build.gradle内の「依存関係」のブロックを使用して、ビルドクラスファイルとフォルダをリンクするようになります:

https://stackoverflow.com/a/22769015/5761849

4

手動のIntelliJで注釈処理を有効にする必要があります。

から:[設定] - > [ビルドし、実行、展開 - >コンパイラ - >注釈プロセッサ - >注釈処理は、プロジェクトのクラスパス

からプロセッサを取得有効にリビルドプロジェクトと生成されたクラスをプロジェクト内で見つけることができます。

+3

これはおそらくAndroidプロジェクトに役立ちますが、私たちのケースではサーバアプリケーションには何の効果もありませんでした。 –

6

私が見つけた最も簡単な方法:

  1. ideaプラグインを追加し、以下のようなDagger2依存関係を追加:IntelliJのためのAnnotation Processing

    plugins { 
        id "net.ltgt.apt" version "0.10" 
    } 
    
    apply plugin: 'java' 
    apply plugin: 'idea' 
    
    sourceCompatibility = 1.8 
    
    repositories { 
        mavenCentral() 
    } 
    
    dependencies { 
        testCompile group: 'junit', name: 'junit', version: '4.12' 
    
        compile 'com.google.dagger:dagger:2.11' 
        apt 'com.google.dagger:dagger-compiler:2.11' 
    } 
    
  2. 入れます:Settingsに移動し、Annotation Processorsを検索し、有効にチェックを以下のようなアノテーション処理:

enter image description here

+0

なぜあなたがdownvotedされているかわからないこれは私のために働いた唯一のものです – nmu

2

私は私を見つけた(Pelochoのanswerのように)のIntelliJ IDEAのバージョン2017.3.3、ダガーのnet.ltgt.aptプラグインとバージョン2.14.1のバージョン0.14と同様build.gradleファイルにideaプラグインを適用するを使用しています次のようにDaggerによって生成されたソースがどこにあるのかをIntelliJに伝えなければなりませんでした:

apply plugin: 'idea' 
idea { 
    module { 
     sourceDirs += file("$buildDir/generated/source/apt/main") 
     testSourceDirs += file("$buildDir/generated/source/apt/test") 
    } 
} 
関連する問題