使用 Groovy、IntelliJ 和 Gradle 在项目中“重新运行 Spring Boot 配置注释处理器”

Posted

技术标签:

【中文标题】使用 Groovy、IntelliJ 和 Gradle 在项目中“重新运行 Spring Boot 配置注释处理器”【英文标题】:"Re-run SpringBoot Configuration Annotation Processor" in project with Groovy, IntelliJ and Gradle 【发布时间】:2017-05-21 07:06:54 【问题描述】:

我正在使用 IntelliJ 15.0.6、SpringBoot 1.4.3.RELEASE、Gradle 2.14 和 Groovy 2.3.11。

我从 IntelliJ 收到以下消息:

我尝试关注***、the official documentation 和JavaCodeGeeks,但没有成功。

这是我的配置文件:

@Configuration
@ConfigurationProperties(prefix = "configuracoes")
class GeralConfiguration 
    def proxyEndereco
    def proxyPorta

以及我的 application.yaml 文件的相关部分:

configuracoes:
    proxyEndereco: http://fake.com
    proxyPorta: 8080

如果我从配置文件中删除 @ConfigurationProperties,消息就会消失。

这是我的 build.gradle 文件:

buildscript 
    repositories 
        mavenLocal()
        maven url('http://repo.spring.io/plugins-release')
        mavenCentral()
    
    dependencies 
        classpath("org.springframework.boot:spring-boot-gradle-plugin:1.4.3.RELEASE")
        classpath('org.springframework.build.gradle:propdeps-plugin:0.0.7')
    


apply plugin: 'groovy'
apply plugin: 'java'
apply plugin: 'idea'
apply plugin: 'org.springframework.boot'
apply plugin: 'propdeps'
apply plugin: 'propdeps-idea'
sourceCompatibility = 1.7

repositories 
    mavenLocal()
    mavenCentral()


dependencies 
    compile("org.springframework.boot:spring-boot-starter")
    compile("org.springframework.boot:spring-boot-devtools")
    optional("org.springframework.boot:spring-boot-configuration-processor")
    compile('org.codehaus.groovy:groovy-all:2.3.11')
    compile('com.machinepublishers:jbrowserdriver:0.17.3')
    compile("org.im4java:im4java:1.4.0")

    testCompile("org.springframework.boot:spring-boot-starter-test")
    testCompile("org.spockframework:spock-core:1.1-groovy-2.4-rc-3")


compileJava.dependsOn(processResources)
compileGroovy.dependsOn(processResources)

关于发生了什么以及如何解决此问题的任何想法?

【问题讨论】:

【参考方案1】:

@Stephane 帮我找到了答案。

Groovy 确实不支持注释处理器,但我也没有设法让它在 src/main/java 中工作。

我发现 build 中的 classes 子文件夹被 IntelliJ 标记为 excluded(我不知道为什么)。

当我尝试一一解决问题时,我从未成功。当我一次执行所有修复并将 classes 子文件夹标记为 NOT 时,一切正常(尽管 IntelliJ 一直向我显示错误消息)。

感谢@Stephane 帮助我。

【讨论】:

【参考方案2】:

很遗憾,Groovy 不支持注解处理器。您可能想要报告 IJ 不应该在 Groovy 代码中显示此警告。

【讨论】:

为什么它不能在同一个项目中的 Java 类中工作?我知道java类由gradle的任务compileJava处理,groovy类由compileGroovy处理。我错了吗? 它应该与同一个项目中的 java 类一起使用。我不能不看就告诉你为什么。

以上是关于使用 Groovy、IntelliJ 和 Gradle 在项目中“重新运行 Spring Boot 配置注释处理器”的主要内容,如果未能解决你的问题,请参考以下文章

IntelliJ IDEA 和 Gradle - 不能应用于“(groovy.lang.Closure)”

如何使用梯度。 Java 和 Groovy 在一起?

使 IntelliJ 突出显示 Groovy/Grails 语法错误

02-Groovy-IntelliJ IDEA配置Groovy开发环境

IntelliJ IDEA创建第一个Groovy工程

如何在 IntelliJ IDEA Grails 项目中为 groovy 方法获取 javadocs / groovydocs?