28

いくつかの注釈プロセッサを作成する必要があります。一般的な設定でEclipseを使用してそれを行う方法について言及しているこのブログ投稿を見つけました。

しかし、私は IntelliJ IDEA と Gradle を使用しており、それを行うためのより良い (より退屈でない) アプローチがあれば、それが好きです。私が探しているもの:

  1. 同じプロジェクトで注釈プロセッサとそれらを使用するコードの両方を記述できる必要があり、Gradle はプロセッサをクラスパスに追加し、適切な段階で javac を使用してそれらを呼び出す必要があります。
    また
  2. 上記が不可能で、2 つの別々のプロジェクトを作成する必要がある場合、少なくともそれらを同じ git リポジトリに保持できるはずです。Gradle はビルドをシームレスに処理する必要があります。
    また
  3. どちらも不可能で、2 つの個別の git リポジトリを作成する必要がある場合、少なくとも、Gradle は、リンクされたブログ投稿で言及されていることを、さらに手動で介入することなくシームレスに処理する必要があります。

私の git と Gradle のスキルは初心者レベルです。このタスクについて何か助けていただければ幸いです。ありがとうございました。

4

2 に答える 2

9

はい、プロセッサーを別のモジュールに移動して、別のモジュールから使用することは可能です (以下をquerydslapt参照)。

独自のAbstractProcessorを実装することをお勧めします

そのように使用します:

dependencies {
    ....
    // put dependency to your module with processor inside
    querydslapt "com.mysema.querydsl:querydsl-apt:$querydslVersion" 
}

task generateQueryDSL(type: JavaCompile, group: 'build', description: 'Generates the QueryDSL query types') {
    source = sourceSets.main.java // input source set
    classpath = configurations.compile + configurations.querydslapt // add processor module to classpath
    // specify javac arguments
    options.compilerArgs = [
            "-proc:only",
            "-processor", "com.mysema.query.apt.jpa.JPAAnnotationProcessor" // your processor here
    ]
    // specify output of generated code
    destinationDir = sourceSets.generated.java.srcDirs.iterator().next()
}

ここで完全な例を見つけることができます

于 2013-03-23T10:33:00.193 に答える
9

もう 1 つの解決策 (私の意見ではよりクリーン) は、2 つのサブプロジェクトを作成し、アノテーション プロセッサを含むサブプロジェクトをメイン プロジェクトの依存関係にすることです。したがって、サブプロジェクト:coreを含む 2 つのディレクトリがあり、プロジェクトのルートには、次annotation-processorsのファイルも必要です。settings.gradle

include 'core'
include 'annotation-processors'

次に、コア プロジェクトの gradle ファイルに次のように記述します。

dependencies {
    compile project(':annotation-processors')
}

これで十分であり、カスタム コンパイル タスクとそのクラスパスを処理する必要はありません。

于 2013-03-23T11:37:08.813 に答える