linpeilie 2f94254499 doc:
- 快速开始增加 Gradle 配置
- 增加常见问题
2023-05-17 15:06:51 +08:00

4.1 KiB
Raw Blame History

title, order, category, description
title order category description
常见问题 7
指南
MapStructPlus MapStructPlus常见问题 faq

生成的转换接口与转换类在哪里查看

在编译后的 target/generated-sources 目录下,如果没有该目录,则需要配置 IDEA 展示排除的文件Show Excluded Files

"cannot find converter from xxx to xxx" / 没有生成转换接口

  1. 建议按照快速开始重新查看一下自己的依赖和配置是否齐全, 如果项目中使用了 Lombok则按照指南-常见问题#与Lombok整合来进行配置;
  2. 重新加载 Maven 依赖Reload All Maven Projects
  3. mvn clean compile
  4. 在 /target/generated-sources 目录下,查看是否生成转换接口。
  5. 如果没有生成,联系作者
  6. 如果已经生成,需要确认 SpringBoot 能否扫描到生成接口所在的包!

生成的转换接口及实现类的目录规则

默认情况下,会在生成在源类同包名下,可以通过配置来指定具体的目录。

需要注意,如果是外部依赖包,也会生成在外部依赖类所在的同名包下,导致 Spring 扫描不到,这种情况下,建议指定具体的目录。

lombok 整合

与 Mapstruct 整合 lombok 的方式一致。

lombok 1.18.16 之前:

Maven


<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.8.1</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
                <annotationProcessorPaths>
                    <path>
                        <groupId>org.projectlombok</groupId>
                        <artifactId>lombok</artifactId>
                        <version>${lombok.version}</version>
                    </path>
                    <path>
                        <groupId>io.github.linpeilie</groupId>
                        <artifactId>mapstruct-plus-processor</artifactId>
                        <version>${mapstruct-plus.version}</version>
                    </path>
                </annotationProcessorPaths>
            </configuration>
        </plugin>
    </plugins>
</build>

Gradle

dependencies {
    annotationProcessor group: 'org.projectlombok', name: 'lombok', version: {lombok.version}
    annotationProcessor group: 'io.github.linpeilie', name: 'mapstruct-plus-processor', version: ${mapstruct-plus.version}
}

lombok 1.18.16 及以后:

Maven


<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.8.1</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
                <annotationProcessorPaths>
                    <path>
                        <groupId>org.projectlombok</groupId>
                        <artifactId>lombok</artifactId>
                        <version>${lombok.version}</version>
                    </path>
                    <path>
                        <groupId>io.github.linpeilie</groupId>
                        <artifactId>mapstruct-plus-processor</artifactId>
                        <version>${mapstruct-plus.version}</version>
                    </path>
                    <path>
                        <groupId>org.projectlombok</groupId>
                        <artifactId>lombok-mapstruct-binding</artifactId>
                        <version>0.2.0</version>
                    </path>
                </annotationProcessorPaths>
            </configuration>
        </plugin>
    </plugins>
</build>

Gradle

dependencies {
    annotationProcessor group: 'org.projectlombok', name: 'lombok', version: {lombok.version}
    annotationProcessor group: 'io.github.linpeilie', name: 'mapstruct-plus-processor', version: ${mapstruct-plus.version}
    annotationProcessor group: 'org.projectlombok', name: 'lombok-mapstruct-binding', version: '0.2.0'
}