选择Gradle生成源代码的目录

时间:2015-08-10 01:03:53

标签: java gradle code-generation dagger dagger-2

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

  1. 如何选择一个文件夹将所有生成的.java文件分隔为?
  2. 如何在gradle Java项目中包含该文件夹,并让IntelliJ将其视为源代码,以便我可以在项目中使用它们?

1 个答案:

答案 0 :(得分:0)

看起来application plugin默认情况下只使用一组特定的目录,混合构建版本来决定要编译的文件。

但是,我确实发现an example build script创建了一个匕首配置并操纵gradle将其用于生成的输出并将其添加到类路径中。它使用dagger-compiler。

它的核心是:

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,插件应该通过构思项目的正常构建自动添加任何srcSets,因此不需要额外的配置,只需重新生成它。