我正在使用以下代码来转换我的对象:
@Mapper(componentModel = "jakarta", unmappedTargetPolicy = ReportingPolicy.IGNORE)
@ApplicationScoped
public interface FlightMapper {
public FlightDTO toDTO(Flight flight);
public Flight toDAO(FlightDTO flightDTO);
}
为了能够使用它,我将其与 lombok 一起导入(如文档中所述):
<dependencies>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${org.projectlombok.version}</version>
</dependency>
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct</artifactId>
<version>${org.mapstruct.version}</version>
</dependency>
...
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>${compiler-plugin.version}</version>
<configuration>
<source>17</source>
<target>17</target>
<compilerArgs>
<arg>-parameters</arg>
</compilerArgs>
<annotationProcessorPaths>
<path>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId>
<version>${org.mapstruct.version}</version>
</path>
<path>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-extension-processor</artifactId>
<version>${quarkus.platform.version}</version>
</path>
<path>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${org.projectlombok.version}</version>
</path>
</annotationProcessorPaths>
</configuration>
</plugin>
我用
quarkus build
编译我的应用程序。
有时构建有效,我生成的代码会出现在路径中
target\generated-sources\annotations\...\domain\mapper\FlightMapperImpl.java
:
但有时,如果不对我的代码进行任何更改,我不会生成这些设置器,因此我的代码后者不起作用。 (该文件在同一位置生成,只是在两种方法
toDTO
和toDAO
中都没有设置器):
有时可以通过重新编译或重新加载我的 VS Code 窗口(f1 -> 开发人员:重新加载窗口)来修复它。
我不知道这怎么会随机表现得不同。当它失败时,我收到此警告:
[INFO] --- compiler:3.12.1:compile (default-compile) @ project ---
[INFO] Recompiling the module because of changed source code.
[INFO] Compiling 22 source files with javac [debug release 17] to target\classes
[WARNING] Implicitly compiled files were not subject to annotation processing.
Use -proc:none to disable annotation processing or -implicit to specify a policy for implicit compilation.
[INFO]
[INFO] --- quarkus:3.7.4:generate-code-tests (default) @ project ---
注意:它也会与
quarkus dev
一起发生,同样是随机的。
问题似乎可能来自所描述的内容:在这个问题中
更改顺序以将 lombok 首先放入 POM 并进行全新安装后,它似乎按预期工作:
<annotationProcessorPaths>
<path>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${org.projectlombok.version}</version>
</path>
<path>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId>
<version>${org.mapstruct.version}</version>
</path>
<path>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-extension-processor</artifactId>
<version>${quarkus.platform.version}</version>
</path>
</annotationProcessorPaths>