当前位置: 首页 > 知识库问答 >
问题:

src/test/java中的Mapstruct映射器不是由maven build生成的

宰父疏珂
2023-03-14

正如标题所述,我在src/test/java中有一个映射器接口,它不是由mapstruct处理器生成的。

在同一个项目中,生成src/main/java中的所有映射器。这是预期的行为吗?

如何在测试源中生成映射器?

编辑(更多信息):

简化的Maven模块结构:

root_project
-> module_1

root_project的pom.xml

<build>
    <pluginManagement>
           <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.6.0</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <annotationProcessorPaths>
                        <path>
                            <groupId>org.mapstruct</groupId>
                            <artifactId>mapstruct-processor</artifactId>
                            <version>1.1.0.Final</version>
                        </path>
                    </annotationProcessorPaths>
                    <compilerArgs>
                        <compilerArg>
                            -Amapstruct.defaultComponentModel=spring
                        </compilerArg>
                    </compilerArgs>
                </configuration>
            </plugin>
            ...

module_1的pom.xml基本为空:

<dependencies>

    <dependency>
        <groupId>org.mapstruct</groupId>
        <artifactId>mapstruct-jdk8</artifactId>
        <scope>compile</scope>
    </dependency>

共有1个答案

朱华皓
2023-03-14

我也遇到了同样的问题,并通过更改maven编译器插件版本修复了它。请注意版本:编译器3.5.1和Mapstruct 1.1.0。最终的

            <!-- compiler plugin -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.5.1</version>
                <dependencies>
                    <dependency>
                        <groupId>org.mapstruct</groupId>
                        <artifactId>mapstruct-jdk8</artifactId>
                        <version>1.1.0.Final</version>
                    </dependency>
                </dependencies>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <optimize>true</optimize>
                    <annotationProcessorPaths>
                        <path>
                            <groupId>org.mapstruct</groupId>
                            <artifactId>mapstruct-processor</artifactId>
                            <version>1.1.0.Final</version>
                        </path>
                    </annotationProcessorPaths>
                </configuration>
            </plugin>
 类似资料:
  • 我使用mapstruct在两个Calses之间进行映射:CandidateDTO和CandidateDTO。 我在这里的问题是,当映射时,所有DTO字段都为空,因为没有生成映射字段。 请帮忙。

  • 我正在使用Spring,并且在我的项目中从mapstruct库开始,所以我有了一个想法,为@mapper(componentModel=“Spring”)创建原型注释,比如@springmapper。但它不会生成任何映射器。 是不可能还是我做错了什么?

  • null 这是我运行单元测试时得到的跟踪: 我认为在我的pom.xml文件的build/plugin部分缺少或放错了地方 可以在这里查看项目的源代码: https://github.com/alfredux79/mapstruct-lombock-springboot/tree/stack-overflow-question

  • 我有麻烦映射一个嵌套dto字段正确与MapStruct。我有几个DTO: 具有相应的映射器 到目前为止,一切工作都很好,生成的代码自动连接其他需要的映射器来正确地构建DTO。例如生成的仪器映射器实现 现在,当我试图创建一个包含嵌套工具dto的映射器时遇到了麻烦。映射器应使用instrumentMapper正确创建所需的dto。DTO: 映射器: 生成的代码: 现在media mapper得到了很好

  • 我试图使用MapStruct在dto和实体对象之间映射convert,但是生成的映射器实现只返回空的映射对象。 BeermapperImpl 任何人都可以提供我的代码可能出错的地方?谢谢!

  • 生成路由映射缓存optimize:route 路由映射缓存用于开启路由延迟解析的情况下,支持路由反解的URL生成,如果你没有开启路由延迟解析或者没有使用URL路由反解生成则不需要生成。 生成路由映射缓存的命令: php think optimize:route 执行后,会在runtime目录下面生成route.php文件。