【问题标题】:Why does maven not generate sources from test-classes?为什么 Maven 不从测试类生成源?
【发布时间】:2018-10-07 04:09:25
【问题描述】:

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

正如我所说的将文件放在“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>

【问题讨论】:

  • 请与您的 Maven 日志一起分享您的目录结构
  • 我编辑了我的帖子,但我不确定“你的 maven 日志”到底是什么意思。抱歉,使用 maven 对我来说真的很新鲜。
  • 启动 Maven 构建的命令是什么?
  • 为了开始maven构建,我只是在''maven Lifecycle''中点击compile(我认为对应的命令是mvn compile)。我希望这会有所帮助。所以如果文件在测试文件夹中,我需要另一个命令来编译?
  • 我尝试了 mvn test-compile 但我得到了同样的错误:找不到符号 QTestEntit。如何检查我的 DSL2Java 生成是否在正确的阶段触发?在我的“问题帖子”中,我添加了应该生成查询类型类的插件。我可以修改它以“触发正确阶段的生成”吗?

标签: java maven querydsl generate


【解决方案1】:

可以解决同样的问题。 我发现这个解决方案还可以为测试源生成“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 源生成实体。

【讨论】:

    猜你喜欢
    • 2014-11-24
    • 2011-11-04
    • 2020-02-06
    • 2018-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-16
    • 2011-05-05
    相关资源
    最近更新 更多