首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >IntelliJ和Gradle中的注释处理器

IntelliJ和Gradle中的注释处理器
EN

Stack Overflow用户
提问于 2017-02-24 15:02:46
回答 4查看 37.2K关注 0票数 28

tl;dr:我无法将IntelliJ配置为在与gradle相同的目录中生成java文件

我有一个使用不变注释处理器的小项目。它在gradle命令行构建中可以正常工作,但我无法让IntelliJ将生成的文件输出到同一个目录。

整个项目可在GitLab上使用。

Gradle配置

我使用了折叠的gradle插件:

  • gradle插件,它处理idea配置
  • 级-apt-插件提供apt配置,并处理与注释处理相关的编译类路径和idea配置(如果还应用了idea插件)

构建脚本(链接到完整的列表)的相关部分:

代码语言:javascript
运行
复制
apply plugin: 'java'
apply plugin: "net.ltgt.apt"
apply plugin: 'idea'

dependencies {
    def immutablesVersion = '2.3.9'
    compileOnly "org.immutables:value:$immutablesVersion:annotations"
    compileOnly "org.immutables:encode:$immutablesVersion"
    apt "org.immutables:value:$immutablesVersion"
}

当我启动./gradlew build时,一切都如期而至:

  1. 源文件DataEncoding.java被处理,生成的java文件DataEncodingEnabled.java
  2. 预期包/build/generated/source/apt/main下的com.tmtron.immutables.data
  3. 生成的文件也被编译成一个.class文件。

在IntelliJ中,我按照级-apt-插件文档的建议激活注释处理:

然后执行./gradlew clean以确保前几个文件都没有了,然后单击IntelliJ中的Build - Build Project

注释处理器被执行,但问题是生成的java文件最终位于错误的位置:

它在: /build/generated/source/apt/main/build/generated/source/apt/main/com.tmtron.immutables.data中

大胆的部分是多余的。

我做错了什么,如何正确地设置它,以便IntelliJ和gradle在同一个目录中生成文件?

备注:

  • 当然,我已经尝试过将IntelliJ注释配置中的"Production“保留为空,但是他的配置不起作用:然后它会自动使用”生成的“,最后我也得到了一个错误的路径。
  • IntelliJ版本2016.3.4
EN

Stack Overflow用户

回答已采纳

发布于 2017-02-25 13:15:19

更新2.2019

从第5.2级开始,有一种简单的方法--参见加文科亚回答

更新5.2018

我所知道的最简单的方法是使用apt概念插件

只需激活build.gradle文件中的插件:

代码语言:javascript
运行
复制
plugins {
    id 'java'
    id 'net.ltgt.apt-idea' version "0.15"
}

然后将注释处理器添加到annotationProcessor配置中:

代码语言:javascript
运行
复制
final DAGGER_VER = '2.16'
dependencies {
    implementation "com.google.dagger:dagger:${DAGGER_VER}"
    annotationProcessor"com.google.dagger:dagger-compiler:${DAGGER_VER}"
}

基于GitHub:ex.dagger的测试项目

(使用IntelliJ 2018.1.4,Gradle 4.7)

原语答案

使用父-dir有一个简单的解决方法,在IntelliJ 2016.3.4中可以很好地工作。

  • 生产资料目录:../main
  • 测试源目录:../test

现在,gradle和IntelliJ将生成相同目录的代码。

固定在GitLab项目V0.0.2

另见:apt plugin issue#35

票数 17
EN
查看全部 4 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42441844

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档