我最近開始學習java處理器,并嘗試用gradle使用它們。 當我構建專案時,我可以看到注釋處理器的jars(其他模塊)被列印出來(我在app的gradle檔案中添加了這個,你可以看到下面),但沒有被執行。 我不知道我做錯了什么......
。我有一個多模塊的專案,結構如下
ROOT
|
|-app # 包含主類
|-注解
|-processors
處理器專案的gradle檔案:
plugins {
id 'java'>'org.example'
版本 '1.0-beta'/span>
資源庫 {
mavenCentral()
}
依賴性 {
compileOnly project(":annotations")
implementation(project(":annotations"))
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.0'。
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.7.0'。
}
測驗 {
useJUnitPlatform()
}
應用程式的gradle檔案
plugins {
id 'java''org.example'
版本 '1.0-SNAPSHOT'/span>
資源庫 {
mavenCentral()
}
tasks.withType(JavaCompile) {
doFirst {
println "$name的AnnotationProcessorPath是${options.getAnnotationProcessorPath().getFiles()}"/span>
}
}
編譯Java {
options.annotationProcessorPath = configurations.annotationProcessor
}
依賴性 {
compileOnly project(":annotations")
實作project(":annotations")
實作 project(":processors")
annotationProcessor project(":processors")
// annotationProcessor "org.example:processors:1.0-beta"
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.0'
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.7.0'。
}
測驗 {
useJUnitPlatform()
}
注釋是默認的
我有一個處理器,它記錄了一個檔案
。我有一個處理器,它記錄并創建了一個檔案
。@Override
public boolean process(Set< ? extends TypeElement> set, RoundEnvironment roundEnvironment) {
processingEnv.getMessager().printMessage(Diagnostic.Kind.ERROR,"Testa asdfasdf"/span>)。
...
在我的應用程式模塊中,我有一個在注釋模塊中宣告了@Builder注釋的類,所以處理器應該被執行
應用程式gradle檔案的輸出7:59:42下午。正在執行任務'Car.main()'。
> 任務 :annotations:compileJava UP-TO-DATE
> Task :annotations:processResources NO-SOURCE
> Task :annotations:classes UP-TO-DATE
> 任務 :注解:jar UP-TO-DATE
> 任務 :處理器:compileJava UP-TO-DATE
> 任務 :processors:processResources UP-TO-DATE
> 任務 :處理器:classes UP-TO-DATE
> 任務 :處理器:jar UP-TO-DATE
> 任務 :app:compileJava
AnnotationProcessorPath for compileJava 是 [/home/juan/ideaProjects/annotations/processors/build/libs/processors-1. 0-beta.jar, /home/juan/ideaProjects/annotations/annotations/build/libs/annotations-1.0-SNAPSHOT.jar]
> 任務 :app:processResources UP-TO-DATE
> 任務 :app:classes
> 任務 :app:Car.main()
在242ms內構建成功
8可操作的任務。2已執行,6最新的。
7:59:42下午。任務執行完畢'Car.main()'。
uj5u.com熱心網友回復:
幾個小時后,通過在處理器模塊下創建javax.annotation.processing.Processor檔案,它成功了
ROOT
|
--app # 包含主類
--注解
--處理器
|--main
|--java
|--資源
|--META-INF
|--services
|--javax.annotation.processing.Processor
|--測驗
將其內容設定為處理器路徑,在我的例子中是 com.example.processors.BuilderProcessor
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/333019.html
標籤:
