当前位置: 首页 > 知识库问答 >
问题:

annotationProcessors多模块项目Java

司寇旺
2023-03-14

我最近开始学习java处理器,并尝试将它们与gradle一起使用,当我构建项目时,我可以看到注释处理器JAR(其他模块)被打印出来(我在app gradle文件中添加了这一点,您可以在下面看到),但没有执行。我不知道我做错了什么...

ROOT
|
|-app  # contains main classes
|-annotations
|-processors
plugins {
    id 'java'
}

group 'org.example'
version '1.0-beta'

repositories {
    mavenCentral()
}

dependencies {
    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'
}

test {
    useJUnitPlatform()
}
plugins {
    id 'java'
}

group 'org.example'
version '1.0-SNAPSHOT'

repositories {
    mavenCentral()
}

tasks.withType(JavaCompile) {
    doFirst {
        println "AnnotationProcessorPath for $name is ${options.getAnnotationProcessorPath().getFiles()}"
    }
}
compileJava {
    options.annotationProcessorPath = configurations.annotationProcessor
}

dependencies {
    compileOnly project(":annotations")
    implementation project(":annotations")
    implementation 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'
}

test {
    useJUnitPlatform()
}
@Override
public boolean process(Set<? extends TypeElement> set, RoundEnvironment roundEnvironment) {
    processingEnv.getMessager().printMessage(Diagnostic.Kind.ERROR,"Testa asdfasdf");
 ...
7:59:42 PM: Executing task 'Car.main()'...

> Task :annotations:compileJava UP-TO-DATE
> Task :annotations:processResources NO-SOURCE
> Task :annotations:classes UP-TO-DATE
> Task :annotations:jar UP-TO-DATE
> Task :processors:compileJava UP-TO-DATE
> Task :processors:processResources UP-TO-DATE
> Task :processors:classes UP-TO-DATE
> Task :processors:jar UP-TO-DATE

> Task :app:compileJava
AnnotationProcessorPath for compileJava is [/annotations/processors/build/libs/processors-1.0-beta.jar, /annotations/annotations/build/libs/annotations-1.0-SNAPSHOT.jar]

> Task :app:processResources UP-TO-DATE
> Task :app:classes

> Task :app:Car.main()


BUILD SUCCESSFUL in 242ms
8 actionable tasks: 2 executed, 6 up-to-date
7:59:42 PM: Task execution finished 'Car.main()'.

共有1个答案

赖浩荡
2023-03-14

几个小时后,它通过在processors模块下创建文件javax.annotation.processing.Processor来工作

ROOT
|
--app  # contains main classes
--annotations
--processors
  |--main
     |--java
     |--resources
        |--META-INF
           |--services
               |--javax.annotation.processing.Processor
  |--test

将其内容设置为处理器路径,在我的例子中是com.example.processors.BuilderProcessor

 类似资料:
  • 问题内容: 我有学习的背景和思想。 我喜欢使用的其中一项功能是可以将项目制作为多Maven模块。例? 令人高兴的是,每个模块都可以具有自己的依赖性,并且可以独立测试它们,而不用运行一个整体应用程序。 我们如何实现类似的东西,或者它的生态系统? 问题答案: 你绝对可以做到的。这被称为SBT Multi-Project build。您可以使用以下内容定义一个主项目和多个子项目(来自上面的docs链接)

  • 我曾广泛使用过Maven 目前有5个不同的maven项目,每个项目都有一个不同的pom.xml。到目前为止,它们之间存在依赖关系,如果需要,每一个都指向 中的另一个。 现在我们不喜欢的是 当我们发布子projectA时,我们需要手动修改所有将projectA作为依赖项的项目以使用新版本。Saw Maven有一个版本插件,不知道这会有什么帮助。 作为解决方案,我希望在POM之间有一个更干净的组织,并

  • 关于maven项目结构,我有两个问题: 1)我正在创建一个maven多模块项目,并且想知道是否可以将模块的所有公共依赖项放在父POM中?这是正确的做法吗? 2)如果我正在创建一个包含所有web.xml和JSP文件的maven webapp项目,那么web控制器、侦听器和模型对象应该驻留在哪里?在一个单独的maven jar项目中还是在同一个webapp项目中?

  • 我有一个多模块maven应用程序,我们需要通过Jenkins构建。项目结构如下: 现在,mvn清洁安装-fa.xml工作正常。为此,我创建了一个詹金斯的工作。现在,和a.xml一样,我有另一个项目b.xml.b.xml有和a.xml相同的代码,除了不同的Ids。所以,我又为詹金斯创造了一份工作b.xml.两份工作都很好。但是,现在我想根据我们在Git中提交的项目,从单个Jenkins工作中构建这两

  • 问题内容: 这是一个基本问题,我只是不太熟悉Maven多模块结构。说,我有一个Web应用程序。我想将一些模块连接到它(某些服务)。我是否需要仅将其中一个模块(依赖于其他模块)制作为一个Web应用程序,然后运行它?一开始我以为我可以运行整个项目,但是这个选项在我的IDE中是无效的(我现在正在使用NetBeans),这使我认为我应该运行一个类似于主模块的东西(在这种情况下为Web应用程序) )。是这样

  • 问题内容: 我最近开始使用Gradle并替换了我现有的基于Maven的项目。过去我在使用Maven处理多模块构建时遇到很多问题。在处理多模块水龙头时,Gradle呼吸了新鲜空气,但还不是很完美。 我的项目有以下文件夹布局: 我遇到的问题是“ EnterpriseApp1”和“ ClientApplication”都依赖于CommonLib项目。我不知道如何配置“ EnterpriseApp1”构建