我想使用Mapstruct将内部模型映射到Kotlin项目中由OpenApi3代码生成的模型。
[当我编译项目时,似乎Mapstruct无法找到OpenApi3代码生成插件生成的源,因为生成的实现包含NonExistentClass
而不是我的OpenApi模型。
我的插件配置为
<plugin>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-maven-plugin</artifactId>
<configuration>
<args>
<arg>-Xjsr305=strict</arg>
</args>
<compilerPlugins>
<plugin>spring</plugin>
<plugin>jpa</plugin>
</compilerPlugins>
</configuration>
<dependencies>
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-maven-allopen</artifactId>
<version>${kotlin.version}</version>
</dependency>
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-maven-noarg</artifactId>
<version>${kotlin.version}</version>
</dependency>
</dependencies>
<executions>
<execution>
<id>kapt</id>
<phase>process-sources</phase>
<goals>
<goal>kapt</goal>
</goals>
<configuration>
<sourceDirs>
<sourceDir>src/main/kotlin</sourceDir>
<sourceDir>src/main/java</sourceDir>
</sourceDirs>
<annotationProcessorPaths>
<annotationProcessorPath>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId>
<version>${mapstruct.version}</version>
</annotationProcessorPath>
</annotationProcessorPaths>
</configuration>
</execution>
<execution>
<id>compile</id>
<phase>process-sources</phase>
<goals>
<goal>compile</goal>
</goals>
</execution>
<execution>
<id>test-compile</id>
<phase>process-test-sources</phase>
<goals>
<goal>test-compile</goal>
</goals>
</execution>
</executions>
</plugin>
似乎问题与kapt
查找生成的Java源代码有关。
我的配置是否损坏,或者我是否遇到了kotlin注释处理器的限制?
EDIT:一个简单的例子可以在这里找到:https://github.com/tobisinghania/kotlin-openapi3-mapstruct-failure
问题是由于kotlin maven插件配置中缺少<sourceDir>target/generated-sources/openapi/src/main/java</sourceDir>
我在您的回购单上做了Pull Request,>