gpt4 book ai didi

java - 为什么 Maven 不从测试类生成源代码?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:23:07 24 4
gpt4 key购买 nike

我有一些使用 Querydsl 进行单元测试的测试类。Querydsl 通常会生成一个查询类型类,但如果这些类位于测试目录中,则不会生成该类。一旦我将文件放入 src/main 并使用 maven 进行编译,它就可以正常工作。因为我只在测试中使用这些类,所以我不想将这些文件放在这个目录中。有人可以帮我吗?
我的目录结构
源代码/主目录/java
源代码/主要/资源
源代码/测试/java/
源代码/测试/资源

正如我所说,将文件放在“src/main/java”目录中,将生成查询类型类,但将文件放在“src/test/java/”目录中,将不会生成类型类。

生成 Querydsl 使用的查询类型的 Maven APT 插件

            <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>

最佳答案

可以解决同一个问题。我发现此解决方案还可以为测试源生成“Q”实体。技巧是使用插件的test-process 目标。将其添加到 generate-test-sources 阶段会在正确的时间生成它们(测试编译)。

        <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>

请注意,这会为 maintest 源生成实体。

关于java - 为什么 Maven 不从测试类生成源代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50043325/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com