构建失败:@Data Annotation 不会被 Maven 重新调整

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

我认为我的maven对来自lombok的注释@Data有问题。

关于项目:Java 23 Spring Boot Version 3.3.4 也使用 Intellij Ultimate

错误出现在之后,就像mvn编译或当我启动应用程序时:

 COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] /*/controller/ImageController.java:[25,16] Symbol doesn't found
  Symbol: Method getImages()
  Location: Variable request from Typ *.dto.ImageUploadRequest
[ERROR] */controller/ImageController.java:[30,67] Symbol doesn't found
  Symbol: Method getDataURL()
  Location: Variable image from Typ *.entity.Image

尝试过几种方法。顺便说一句,逻辑是有效的。serervall 重新启动后会出现此错误。 在航站楼:

mvn clean; mvn compile; mvn install; mvn clean install

POM但没有帮助

<plugin>
   <groupId>org.projectlombok</groupId>
   <artifactId>lombok-maven-plugin</artifactId>
   <version>1.18.20.0</version>
 </plugin> `This snippet from stackoverflow`

我尝试编写锅炉代码,是的,它可以工作,但这不是我行走的方式。我的用户看起来像这样:

import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.Table;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.NonNull;
import lombok.RequiredArgsConstructor;

@Entity
@Data
@NoArgsConstructor
@RequiredArgsConstructor
@Table(name = "player")
public class User {
   @Id
   @GeneratedValue(strategy = GenerationType.IDENTITY)
   private Integer id;
   @NonNull
   private String name;
   @NonNull
   private Integer score;

} 

我的 pom 看起来像这样:

<properties>
    <java.version>23</java.version>
</properties>
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
        <version>3.3.4</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <version>3.3.2</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>com.h2database</groupId>
        <artifactId>h2</artifactId>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>com.mysql</groupId>
        <artifactId>mysql-connector-j</artifactId>
    </dependency>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.18.30</version>
    </dependency>
</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                    <configuration>
                        <classifier>spring-boot</classifier>
                        
                      <mainClass>*.ZoomOutApiApplication</mainClass>
                    </configuration>
                </execution>
            </executions>
        </plugin>
        <plugin>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok-maven-plugin</artifactId>
            <version>1.18.20.0</version>
        </plugin>
    </plugins>
</build>
java spring-boot maven lifecycle
1个回答
0
投票

由于依赖不受支持的 API/不安全操作,Lombok 通常会因(主要)Java 更新而中断。为了解决这个问题,Lombok 的开发人员会在新的 Java 版本出现问题时提供更新。

在您的情况下,您指定了 2023 年 9 月发布的版本 1.18.30,而 Java 23 于 2024 年 9 月发布。因此,要使用 Java 23 运行 Lombok,您应该更新到最新版本 1.18.36(位于写作时间)。在 changelog 中,您还可以看到该版本提到的 JDK 23。

    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.18.36</version>
    </dependency>

您似乎也在使用

lombok-maven-plugin
。我认为这对于大多数目的来说都是不必要的,除非您出于任何原因要进行破坏。

© www.soinside.com 2019 - 2024. All rights reserved.