From 783c010ab41cfe70cc0c29e07ac9329493688257 Mon Sep 17 00:00:00 2001 From: weiminyu Date: Fri, 9 Nov 2018 07:55:53 -0800 Subject: [PATCH] Add a IDE helper plugin for annotation processors Without the net.ltgt.apt plugin, Dagger does not retain generated source code, and AutoValue mixes generated source code with classes. The new plugin fixes this problem, making it easier to work with IDEs. Based on limit experience, Intellij Idea can properly import this project. We may consider adding IDE-specific plugins in the future. ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=220802052 --- gradle/build.gradle | 6 ++++++ gradle/core/build.gradle | 13 +++++++++++-- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/gradle/build.gradle b/gradle/build.gradle index c0dde73d5..5e94227bb 100644 --- a/gradle/build.gradle +++ b/gradle/build.gradle @@ -1,6 +1,10 @@ plugins { id 'java' id 'nebula.lint' version '10.1.2' + + // Config helper for annotation processors such as AutoValue and Dagger. + // Ensures that source code is generated at an appropriate location. + id 'net.ltgt.apt' version '0.19' } allprojects { @@ -23,6 +27,8 @@ allprojects { 'unused-dependency' // TODO(weiminyu): enable more dependency checks ] + + apply plugin: 'net.ltgt.apt' } project(':core') { diff --git a/gradle/core/build.gradle b/gradle/core/build.gradle index fe3a0cfb5..35d04c23e 100644 --- a/gradle/core/build.gradle +++ b/gradle/core/build.gradle @@ -5,13 +5,22 @@ plugins { def javaDir = "${rootDir}/../java" def javatestsDir = "${rootDir}/../javatests" -def generatedDir = "${project.buildDir}/generated-sources" +// Path to code generated with annotation processors. Note that this path is +// chosen by the 'net.ltgt.apt' plugin, and may change if IDE-specific plugins +// are applied, e.g., 'idea' or 'eclipse' +def aptGeneratedDir = "${project.buildDir}/generated/source/apt/main" +def aptGeneratedTestDir = "${project.buildDir}/generated/source/apt/test" + +// Path to code generated by ad hoc tasks in this project. A separate path is +// used for easy inspection. +def generatedDir = "${project.buildDir}/generated/source/custom/main" sourceSets { main { java { srcDirs = [ "${javaDir}", + "${aptGeneratedDir}", "${generatedDir}" ] } @@ -26,7 +35,7 @@ sourceSets { java { srcDirs = [ "${javatestsDir}", - "${generatedDir}" + "${aptGeneratedTestDir}" ] } resources {