有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java为什么maven不从TestClass生成源代码?

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

正如我所说,将文件放在这个目录“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) 个答案

  1. # 1 楼答案

    我们可以解决同样的问题。 我发现这个解决方案还可以为测试源生成“Q”实体。 诀窍是使用插件的测试过程目标。将其添加到生成测试源阶段会在正确的时间生成它们(测试编译)

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

    注意,这将为测试源生成实体