Кинжал - укажите каталог сгенерированного исходного файла при сборке с помощью maven

Это может быть просто вопрос знатока. Я только начинаю работать с Dagger 2, который использует javax.annotation.processing для создания источников на основе аннотаций.

Когда я использую свою IDE, IntelliJ, и создаю проект (Build - Rebuild Project), он помещает сгенерированные исходные файлы (например, $$ Factory и Dagger_) в:

target/generated-sources/annotations

IntelliJ автоматически объявляет это как исходный корень, поэтому использование сгенерированных классов не помечается как ошибка:

// Dagger_CoffeeApp$$Coffee is a generated class
Coffee coffee = Dagger_CoffeeApp$Coffee.builder().build();

Проблема в том, что если я построю из командной строки через maven:

mvn clean compile

Сгенерированные источники находятся в:

target/classes

Таким образом, файлы отмечены ошибкой в ​​моей IDE. Вероятно, я мог бы просто добавить цель / классы в качестве исходного корня, но в идеале я хотел бы, чтобы компиляция из командной строки согласовывалась с моей IDE. Есть ли какой-то аргумент для maven, чтобы указать, в каком каталоге создаются файлы сгенерированных источников?


person nogridbag    schedule 17.01.2015    source источник


Ответы (2)


Поскольку классы с префиксом Dagger созданы, вам следует настроить eclipse для их генерации в процессе сборки с помощью настройка jar-файла dagger-compiler в заводской путь вашего проекта

Для автоматизации этого процесса с помощью maven см. Этот вопрос, который использует apt-maven-plugin

person Avinash R    schedule 16.04.2015

Вы можете попробовать использовать maven-processor-plugin, чтобы указать конкретную цель для процессоров аннотаций, возможно, что-то вроде этого:

<plugin>
  <groupId>org.bsc.maven</groupId>
  <artifactId>maven-processor-plugin</artifactId>
  <version>1.0-SNAPSHOT</version>
  <executions>
    <execution>
      <id>process</id>
      <goals>
        <goal>process</goal>
      </goals>
      <phase>generate-sources</phase>
      <configuration>
        <outputDirectory>target/generated-sources/annotations</outputDirectory>
      </configuration> 
    </execution>
  </executions>
</plugin>

Я еще не тестировал это, но может сработать. Источник идеи из этого вопроса: Установка сгенерированного исходного каталога для обработчиков аннотаций в Maven

person Bart Enkelaar    schedule 22.04.2015