Class에 @Data 어노테이션과 @AllArgsConstructor를 추가하고,
IntelliJ의 Structure에서 getter, setter 등등과 모든 멤버변수에 대한 생성자가 있음을 확인했음에도,
다음과 같은 오류 메세지와 함께 빌드가 실패했다.
java: constructor [클래스명] in class [클래스 path] cannot be applied to given types; ...
java: cannot find symbol
symbol: method getId() ...
이를 보고 롬복을 인식하는 데에 문제가 생겼음을 느꼈다.
그리고 왠지 모르겠는데, 롬복 어노테이션을 사용하고 오랜 시간이 지나고 빌드를 하거나 plugin을 삭제했다가 다시 설치하면 빌드 잘 됐다.
그런데 근본적인 해결이 안되고 나의 빌드를 운(?)에 맡겨야하는 게 너무 답답했다😇
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<annotationProcessorPaths>
<path>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</path>
</annotationProcessorPaths>
</configuration>
</plugin>
</plugins>
Enable annotation processing이 체크되어 있는지 확인
하지만 이 세가지 방법 모두 오류를 해결하지 못했다.🥹
필자는 Maven으로 프로젝트를 관리하기 때문에 pom.xml을 기준으로 설명하면,
Plugin부분에 <version>${lombok.version}</version>로 Lombok 버전을 명시해주니 빌드가 항상 성공했다!
Maven의 Configuration에서 Lombok의 버전을 식별하지 못해서 일어난 문제라고 한다.
다음과 같이 작성하면 된다.
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<annotationProcessorPaths>
<path>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
</path>
</annotationProcessorPaths>
</configuration>
</plugin>
</plugins>