ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Spring boot 2 + Gradle 터미널에서 Build 시 cannot find symbol 오류
    Gradle 2019. 3. 11. 16:14

    Spring boot 와 Gradle을 통해 로컬에서 테스트를 진행 중 build 관련하여 오류가 발생하였다.


    개발환경은

    1. spring boot 2.1.3

    2. gradle

    3. lombok 1.18.6
    4. 인텔리제이

    이고

    오류 상황은 아래와 같다.

    1. 인텔리제이의 GUI gradle 툴을 사용해서 build 버튼을 눌렀을때는 정상적으로 Build 됨

    2. 터미널에서 gradle build 명령 시 오류 발생


    아래는 오류 로그의 일부다.

     error: cannot find symbol

            log.info("test log");

            ^

      symbol:   variable log


    터미널에서만 빌드 시 오류가 발생하는 상황이었고 로그를 보며 원인을 생각해보았다.

    오류가 발생하는 시점은 Task :compileJava -> 즉 Compile 시 오류가 발생하였으며 lombok과 관련된 부분에서 모두 오류가 발생하였다.


    Lombok과 관련된 오류라 생각하여 열심히 검색해보았지만 대부분 인텔리제이 Lombok 플러그인을 설치하라는 방법과

     Build, Execution, Deployment > Compiler > Annotation Processors > Enable annotaion processing 를 체크 활성화하는 방법이었다.

    위 방법으로 해도 터미널에서는 gradle build 명령 시 동일한 오류가 발생되었따.


    결론적으로는 annotation processing(ap)과 관련된 문제인 것 같다.

    그러나 터미널에서 gradle build를 할 경우 위 인텔리제이의 Enable annotaion processing 활성화 방법과 별개로 ap 옵션을 주어야한다.

    (Lombok의 어노테이션을 사용할 경우 컴파일 시 어노테이션을 먼저 스캔해서 코드(getter, setter 등)로 변환해주는 선처리가 필요하다.)

    Annotation Processing(ap) 란 Compile Time에서 annotation 에 대한 스캔 및 처리를 해주는 것이다.

    ap 옵션은 gradle.build 에서 아래와 같이 설정해주면 된다.

    위 설정 추가 후 터미널에서도 정상적으로 Build가 되는 것을 확인하였다.



    * 참고

    1. https://qiita.com/opengl-8080/items/beda51fe4f23750c33e9

    2. https://stackoverflow.com/questions/52547965/gradle-build-fails-from-terminal-for-lombok-annotation-in-spring-boot-applicatio




    댓글

Designed by Tistory.