Skip to content

[fix] JDK 21+ 빌드에서 Lombok 애너테이션 프로세서 미동작 수정 (annotationProcessorPaths 등록)#38

Merged
eGovFrameSupport merged 1 commit into
eGovFramework:mainfrom
dasomel-eGovFramework:fix/lombok-annotation-processor-path
Jun 30, 2026
Merged

[fix] JDK 21+ 빌드에서 Lombok 애너테이션 프로세서 미동작 수정 (annotationProcessorPaths 등록)#38
eGovFrameSupport merged 1 commit into
eGovFramework:mainfrom
dasomel-eGovFramework:fix/lombok-annotation-processor-path

Conversation

@dasomel

@dasomel dasomel commented Jun 28, 2026

Copy link
Copy Markdown
Contributor

문제

JDK 23부터 javac는 클래스패스에서 발견된 애너테이션 프로세서를 기본으로 실행하지 않습니다(-proc:full을 명시하지 않으면 미실행). 현재 lombokprovided 스코프 의존성으로만 선언되어 있어, JDK 21+(특히 23/26)로 빌드하면 Lombok이 동작하지 않습니다.

그 결과 @Getter/@Setter로 생성되어야 할 접근자가 만들어지지 않아 컴파일이 실패합니다.

[ERROR] EgovSampleController.java:[87,25] cannot find symbol
  symbol: method setFirstIndex(int)  location: variable sampleVO of type ... SampleVO
[ERROR] ... getSearchCondition(), getSearchKeyword(), getPageIndex() ...
  • JDK 17(표준프레임워크 5.0 기준 버전)에서는 정상 빌드됩니다.
  • JDK 21/23/26 환경에서 재현됩니다(SampleDefaultVO/SampleVO가 Lombok 사용).

변경

maven-compiler-pluginannotationProcessorPaths로 Lombok을 명시적으로 등록합니다.

<annotationProcessorPaths>
    <path>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>${lombok.version}</version>
    </path>
</annotationProcessorPaths>
  • 버전은 부모 POM(egovframe-web-config-parent)이 관리하는 ${lombok.version}을 그대로 사용해 버전 드리프트가 없습니다.
  • release 타깃은 ${java.version}(17) 그대로이며 JDK 17 빌드 동작에 영향이 없습니다.

검증

  • 변경 전(JDK 26): cannot find symbol 컴파일 실패 재현.
  • 변경 후(JDK 26): mvn clean test → BUILD SUCCESS.
  • JDK 17 빌드는 영향 없음(애너테이션 프로세서를 명시 등록할 뿐, release 타깃 동일).

체크리스트

  • 단일 주제(빌드 구성)만 변경, pom.xml 1개 파일
  • base = main
  • 기존 JDK 17 빌드 영향 없음

JDK 23부터 javac는 클래스패스에서 발견된 애너테이션 프로세서를 기본으로
실행하지 않는다. 이로 인해 lombok 의존성이 provided 스코프로만 선언된 현재
구성에서는 JDK 21+(특히 23/26)로 빌드할 때 Lombok이 동작하지 않아
@Getter/@Setter로 생성되어야 할 접근자(getSearchCondition, setFirstIndex 등)가
만들어지지 않고 'cannot find symbol' 컴파일 오류가 발생한다.

maven-compiler-plugin에 annotationProcessorPaths로 lombok을 명시적으로
등록해 해결한다. 버전은 부모(egovframe-web-config-parent)가 관리하는
${lombok.version}을 그대로 사용한다. release 타깃은 ${java.version}(17)
그대로이며, JDK 17 빌드 동작에는 영향이 없다.
@dasomel

dasomel commented Jun 28, 2026

Copy link
Copy Markdown
Contributor Author

참고로, 본 변경은 빌드 구성(annotationProcessorPaths)만 단일 주제로 분리한 PR입니다.

  • 표준프레임워크의 다른 Lombok 사용 리포(egovframe-common-components, portal-site-template, enterprise-business-template, simple-homepage-template, template-simple-backend, boot-sample-java-config)는 이미 동일한 annotationProcessorPaths 설정을 갖추고 있어 JDK 21+에서도 정상 빌드됩니다. egovframe-web-sample만 이 설정이 누락되어 JDK 23+ 빌드가 실패합니다. 본 PR은 web-sample을 나머지 리포의 기존 구성과 정합시키는 것입니다.
  • 과거 #31에서 동일 설정을 제안했으나 당시에는 샘플 CRUD 테스트 스위트가 함께 포함되어 close되었습니다. 본 PR은 그 피드백을 반영해 테스트 없이 빌드 구성 변경 한 가지만 담았습니다(pom.xml 1파일, +7라인).

@eGovFrameSupport

Copy link
Copy Markdown
Contributor

표준프레임워크에 대한 지속적인 참여에
대단히 감사드립니다.

@eGovFrameSupport eGovFrameSupport merged commit e0cd682 into eGovFramework:main Jun 30, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants