Мы используем установку с Spring Boot, Hibernate, Query DSL и Maven с Java 1.8
Недавно я добавил Query DSL в проект с конфигурацией, указанной ниже.Чтобы заставить его работать, мне пришлось настроить компилятор Java в настройках проекта eclipse, чтобы разрешить обработку аннотаций, а также добавить файл Query DSL .jar
в путь фабрики аннотаций eclipse.
Эта установка работала, как и ожидалось.Он генерировал пользовательские классы Q
, и я мог использовать их в своем коде.При выполнении mvn clean install
в командной строке каждый класс в моем коде выдает ошибку cannot find symbol
, потому что класс отсутствует.Есть ли что-то еще, что мне нужно настроить - подобно файлу .jar
в настройках затмения - чтобы заставить процесс сборки работать?
РЕДАКТИРОВАТЬ: Этот вопрос не является дубликатом этот вопрос потому что я не спрашивал, почему возникает эта ошибка (не удается найти символ), а как настроить QueryDSL для работы в командной строке.
EDIT2: Теперь я попытался интегрировать build-helper-maven-plugin
, чтобы использовать несколько исходных путей в качестве входных данных.Это тоже не помогло.Я также попытался сгенерировать файлы в папку src
.Это тоже не помогло.
Когда я впервые компилирую библиотеку в eclipse, mvn compile
проходит через командную строку, но mvn clean compile
все равно не работает, потому что он просто снова использует скомпилированные файлы eclipse.Выполняется apt-maven-plugin, который можно увидеть непосредственно перед сбоем процесса сборки:
[INFO] --- apt-maven-plugin:1.1.3:process (default) @ project1 ---
[INFO]
[INFO] --- build-helper-maven-plugin:1.9.1:add-source (add-source) @ project1 ---
[INFO] Source directory: C:\Users\user1\git\project1\src\main\generated added.
[INFO]
[INFO] --- maven-processor-plugin:2.2.4:process (process) @ project1 ---
[ERROR] diagnostic: [...]
EDIT3: Когда я удаляю все операторы импорта, которые ссылаются на Q
классы, процесс сборки проходит (очевидно).Однако примечательно, что классы Q
в этом случае корректно компилируются.Они появляются в папке target
как файлы .class
, как и должны.Может быть, классы Q
скомпилированы слишком поздно?
Вот выдержка из pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
[...]
<prerequisites>
<maven>3.0.0</maven>
</prerequisites>
<dependencies>
[...]
<dependency>
<groupId>com.querydsl</groupId>
<artifactId>querydsl-apt</artifactId>
<version>4.1.3</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.querydsl</groupId>
<artifactId>querydsl-jpa</artifactId>
<version>4.1.3</version>
</dependency>
</dependencies>
<build>
<defaultGoal>spring-boot:run</defaultGoal>
<plugins>
[...]
<plugin>
<groupId>com.mysema.maven</groupId>
<artifactId>apt-maven-plugin</artifactId>
<version>1.1.3</version>
<executions>
<execution>
<goals>
<goal>process</goal>
</goals>
<configuration>
<outputDirectory>target/generated-sources/java</outputDirectory>
<processor>com.querydsl.apt.jpa.JPAAnnotationProcessor</processor>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
[...]
</build>
</project>
Это конфигурация настроек проекта eclipse:
![enter image description here](https://i.stack.imgur.com/dmEE6.png)
Это сообщение об ошибке, которое отображается в консоли:
[INFO] --- maven-processor-plugin:2.2.4:process (process) @ project1 ---
[ERROR] diagnostic: C:\Users\user1\git\project1\src\main\java\com\project1\repository\UserRepositoryImpl.java:3: error: cannot find symbol
import static com.project1.domain.QUser.user;
^
symbol: class QUser
location: package com.project1.domain
[ERROR] diagnostic: C:\Users\user1\git\project1\src\main\java\com\project1\repository\UserRepositoryImpl.java:3: error: static import only from classes and interfaces
import static com.project.domain.QUser.user;
^