当我编译 quarkus 应用程序时,Map Struct 库代码生成随机停止工作

问题描述 投票:0回答:1

我正在使用以下代码来转换我的对象:


@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
一起发生,同样是随机的。

java compiler-errors quarkus
1个回答
0
投票

问题似乎可能来自所描述的内容:在这个问题中

更改顺序以将 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>
© www.soinside.com 2019 - 2024. All rights reserved.