#java #spring #maven-2 #spring-data #querydsl
#java #spring #maven-2 #spring-data #querydsl
Вопрос:
У меня есть проект Eclipse Maven для spring-data-jpa и QueryDSL.
Кажется, у меня проблема с maven-apt-plugin, где, если я выполняю очистку mvn с последующей установкой mvn, он пытается «обработать» файлы, которые ссылаются на файлы, сгенерированные QueryDSL, но эти сгенерированные файлы еще не были собраны, поэтому я получаю несколько ошибок «не удается найти символ».
Если затем потребуется выполнить другую установку mvn, все в порядке, поскольку сгенерированные файлы теперь существуют.
Должен ли этот maven-apt-plugin обрабатывать каждый файл в моем проекте, или я могу предоставить ему указанный каталог?
Примечание: Я использую JDK6, Eclipse Indigo, M2E 1.0.100
Мой POM:
<project>
....
<build>
<plugins>
<plugin>
<groupId>com.mysema.maven</groupId>
<artifactId>maven-apt-plugin</artifactId>
<version>1.0.2</version>
<executions>
<execution>
<phase>generate-sources</phase>
<goals>
<goal>process</goal>
</goals>
<configuration>
<outputDirectory>target/generated-sources</outputDirectory>
<processor>com.mysema.query.apt.jpa.JPAAnnotationProcessor</processor>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
....
</project>
Комментарии:
1. Возникает ли у вас точно такая же проблема, если вы используете maven без eclipse?
2. Привет, Ральф, смотрите Мои комментарии ниже. Спасибо.
Ответ №1:
Алекс, попробуй определить build-helper:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.7</version>
<executions>
<execution>
<id>add-source</id>
<phase>generate-sources</phase>
<goals>
<goal>add-source</goal>
<goal>add-test-source</goal>
</goals>
<configuration>
<sources>
<source>target/generated-sources</source>
<source>src/main/java</source>
</sources>
</configuration>
</execution>
</executions>
</plugin>
Ответ №2:
Вы получаете ошибки или просто предупреждения? Вы можете добавить значение true, чтобы уменьшить протоколирование ошибок.
Такого рода протоколирование является частью APT, поскольку при первом запуске до создания типов проверка исходных текстов видит ссылки на недоступные типы.
Комментарии:
1. В окне консоли Eclipse, на этапе maven-apt-plugin:1.0.2: process, я получаю вывод красного текста (без регистрации), в котором указывается, что символы не найдены. Это для любого класса, который ссылается на классы, сгенерированные QDSL.
2. Тесты, которые выполняются как часть установки mvn, затем завершаются неудачей, поскольку Spring завершается сбоем из-за неразрешенных ошибок компилятора. Если я сразу после этого повторил установку mvn, все работает отлично.
3. Следуя комментарию Ральфа выше, если я запускаю mvn clean, а затем mvn install из командной строки, я вижу тот же вывод из maven-apt-plugin относительно не найденных символов, однако у меня нет проблем с неудачными тестами. Таким образом, эта проблема возникает только в Eclipse
4. Возможно, для сборки вы могли бы настроить собственный APT в Eclipse. Это могло бы работать лучше, чем M2E APT. Были ли у вас похожие проблемы с API критериев JPA?
5. Я использовал конфигуратор M2E querydsl, как описано здесь github.com/ilx/m2e-querydsl/issues/1 и bugs.eclipse.org/bugs/show_bug.cgi?id=349935 Можете ли вы проверить, возникли ли у вас проблемы с настройкой, которую я использую?
Ответ №3:
Я также получил много записей «не удается найти символ» (и обработка прошла успешно). Похоже, это связано со следующей проблемой.
https://github.com/mysema/maven-apt-plugin/issues/2
Исправлено путем добавления следующих опций.
<logOnlyOnError>true</logOnlyOnError>