簡體   English   中英

將注釋處理器與Gradle集成

[英]Integrating annotation processors with Gradle

我需要編寫一些注釋處理器。 我發現這篇博客文章提到了如何在一般環境和Eclipse中完成。

但是我使用的是IntelliJ IDEA和Gradle,並且如果有更好的(如同,不那么繁瑣)的方法,那么它就像它一樣。 我在找什么:

  1. 我應該能夠編寫注釋處理器和將在同一個項目中使用它們的代碼,Gradle應該處理將處理器添加到類路徑並在approrpiate階段使用javac調用它們。
    要么
  2. 如果以上是不可能的,我必須創建兩個單獨的項目,那么至少應該可以將它們保存在同一個git存儲庫中。 Gradle應該無縫地處理構建。
    要么
  3. 如果兩者都不可能並且我必須創建兩個單獨的git存儲庫,那么至少Gradle應該無縫地處理鏈接博客文章中提到的內容而無需進一步的手動干預。

我的git和Gradle技能是初學者級別的。 我很感激任何幫助這項任務。 謝謝。

是的,可以將處理器移動到分離的模塊並從另一個模塊使用它(參見下面的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()
}

你可以在這里找到完整的例子

另一個解決方案(在我看來更干凈)可能是有兩個子項目 ,然后簡單地使包含注釋處理器的子項目與主要項目相關。 因此,給定子項目的兩個目錄:項目根目錄中的coreannotation-processors ,您還需要具有以下settings.gradle文件:

include 'core'
include 'annotation-processors'

然后在核心項目的gradle文件中:

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

應該這樣做,你不必處理自定義編譯任務及其類路徑。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM