Java 为Gradle生成的源代码选择目录

Java 为Gradle生成的源代码选择目录,java,gradle,code-generation,dagger,dagger-2,Java,Gradle,Code Generation,Dagger,Dagger 2,我在Gradle项目中使用Dagger2生成一些源代码。现在正在生成这些源,并将其与所有类文件一起添加到/build/classes/main文件夹中 如何选择一个文件夹来分隔所有生成的.java文件 如何将该文件夹包含在gradle Java项目中,并让IntelliJ将其作为源代码查看,以便在项目中使用它们 默认情况下,它似乎只使用了一组特定的目录,混合了构建风格来决定编译哪些文件 然而,我确实发现它创建了一个匕首配置,操纵gradle将其用于生成的输出,并将其添加到类路径中。它使用dagg

我在Gradle项目中使用Dagger2生成一些源代码。现在正在生成这些源,并将其与所有类文件一起添加到
/build/classes/main
文件夹中

  • 如何选择一个文件夹来分隔所有生成的.java文件
  • 如何将该文件夹包含在gradle Java项目中,并让IntelliJ将其作为源代码查看,以便在项目中使用它们
  • 默认情况下,它似乎只使用了一组特定的目录,混合了构建风格来决定编译哪些文件

    然而,我确实发现它创建了一个匕首配置,操纵gradle将其用于生成的输出,并将其添加到类路径中。它使用dagger编译器

    其核心是:

    sourceSets {
      dagger {
        java {
          srcDirs = ['src/dagger/java']
        }
      }
    }
    
    configurations {
      compileDagger
    }
    
    compileJava {
      description = "dagger annotation processor is loaded automatically from classpath"
      sourceSets.dagger.java.srcDirs*.mkdirs()
      classpath += configurations.compileDagger
      options.compilerArgs += [
          '-s', sourceSets.dagger.java.srcDirs.iterator().next()
      ]
    }
    
    clean {
      description = "delete files in generated source directory tree"
      delete fileTree(dir: sourceSets.dagger.java.srcDirs.iterator().next())
    }
    
    dependencies {
      ext.daggerVersion = "2.0.1"
    
      compile(
          "com.google.dagger:dagger:${daggerVersion}",
          "com.google.guava:guava:18.0")
    
      compileDagger(
          "com.google.dagger:dagger-compiler:${daggerVersion}")
    
    }
    
    关于IntelliJ,插件应该通过idea项目的正常构建自动添加任何srcSets,因此不需要额外的配置,只需重新生成它。

    它看起来默认情况下只使用一组特定的目录,混合构建风格来决定编译哪些文件

    然而,我确实发现它创建了一个匕首配置,操纵gradle将其用于生成的输出,并将其添加到类路径中。它使用dagger编译器

    其核心是:

    sourceSets {
      dagger {
        java {
          srcDirs = ['src/dagger/java']
        }
      }
    }
    
    configurations {
      compileDagger
    }
    
    compileJava {
      description = "dagger annotation processor is loaded automatically from classpath"
      sourceSets.dagger.java.srcDirs*.mkdirs()
      classpath += configurations.compileDagger
      options.compilerArgs += [
          '-s', sourceSets.dagger.java.srcDirs.iterator().next()
      ]
    }
    
    clean {
      description = "delete files in generated source directory tree"
      delete fileTree(dir: sourceSets.dagger.java.srcDirs.iterator().next())
    }
    
    dependencies {
      ext.daggerVersion = "2.0.1"
    
      compile(
          "com.google.dagger:dagger:${daggerVersion}",
          "com.google.guava:guava:18.0")
    
      compileDagger(
          "com.google.dagger:dagger-compiler:${daggerVersion}")
    
    }
    
    关于IntelliJ,插件应该通过idea项目的正常构建自动添加任何srcset,因此不需要额外的配置,只需重新生成它