Почему maven не генерирует исходники из тестовых классов? - PullRequest
0 голосов
/ 26 апреля 2018

У меня есть несколько тестовых классов, использующих Querydsl для моих модульных тестов. Querydsl обычно генерирует класс типа запроса, но если классы находятся в тестовом каталоге, класс не будет сгенерирован. Как только я помещаю файлы в src / main и компилирую с maven, все работает нормально. Поскольку я использую классы только в своих тестах, я не хочу помещать эти файлы в этот каталог. Может ли кто-нибудь помочь мне с этим?
Моя структура каталогов
src / main / java
src / main / resources
src / test / java /
src / test / resources

Как я уже сказал, помещая файлы в этот каталог "src / main / java", класс типов запросов будет сгенерирован, но размещение файлов в этом каталоге src / test / java / класса типов не будет сгенерировано.

Плагин Maven APT, который генерирует типы запросов, используемые Querydsl

            <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-test-sources/java</outputDirectory>
                        <processor>com.querydsl.apt.jpa.JPAAnnotationProcessor</processor>
                    </configuration>
                </execution>
            </executions>
            <dependencies>
                <dependency>
                    <groupId>com.querydsl</groupId>
                    <artifactId>querydsl-apt</artifactId>
                    <version>4.1.0</version>
                </dependency>
            </dependencies>
        </plugin>

1 Ответ

0 голосов
/ 18 июля 2019

Может через эту же проблему. Я обнаружил, что это решение также генерирует сущности 'Q' для тестовых источников. Хитрость заключалась в том, чтобы использовать цель плагина test-process . Добавление его в фазу generate-test-sources создает их в нужное время (test-compile).

        <plugin>
            <groupId>com.mysema.maven</groupId>
            <artifactId>apt-maven-plugin</artifactId>
            <version>${apt.maven.plugin.version}</version>
            <executions>
                <execution>
                    <id>generate-source-entities</id>
                    <phase>generate-sources</phase>
                    <goals>
                        <goal>process</goal>
                    </goals>
                    <configuration>
                        <outputDirectory>${project.build.directory}/generated</outputDirectory>
                        <processor>com.querydsl.apt.jpa.JPAAnnotationProcessor</processor>
                    </configuration>
                </execution>
                <execution>
                    <id>generate-test-entities</id>
                    <phase>generate-test-sources</phase>
                    <goals>
                        <goal>test-process</goal>
                    </goals>
                    <configuration>
                        <outputDirectory>${project.build.directory}/generated</outputDirectory>
                        <processor>com.querydsl.apt.jpa.JPAAnnotationProcessor</processor>
                    </configuration>
                </execution>
            </executions>
        </plugin>

Обратите внимание, что при этом генерируются сущности для обоих основных и тестовых источников.

...