Выберите каталог для сгенерированного Gradle исходного кода

Я использую Dagger 2 для создания исходного кода в моем проекте Gradle. Сейчас эти исходники создаются и добавляются в папку ./build/classes/main вместе со всеми файлами классов.

  1. Как выбрать папку для разделения всех сгенерированных файлов .java?
  2. Как мне включить эту папку в мой проект Java Gradle и заставить IntelliJ просматривать их как источники, чтобы я мог использовать их в своем проекте?

person spierce7    schedule 10.08.2015    source источник


Ответы (1)


Похоже, плагин приложения использует только определенный набор каталогов. по умолчанию, смешивая варианты сборки, чтобы решить, какие файлы компилировать.

Однако я нашел пример сценария сборки, который создает конфигурацию кинжала и манипулирует gradle, чтобы использовать его для сгенерированный вывод и добавляет его в путь к классам. Он использует кинжал-компилятор.

Суть его заключается в следующем:

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, плагин должен автоматически добавлять любые srcSet через обычное построение проекта идеи, поэтому не требуется дополнительной настройки, просто создайте его заново.

person Mark Fisher    schedule 10.08.2015