스프링 프레임워크에 대한 기초가 부족하여 인프런에 있는 무료 강의부터 시작해봅니다.
예제는 인텔리J에서 실행하지만 goormide를 사용합니다.
컨테이너를 만들 때 템플릿을 git에서 가져올 수 있습니다. 아래와 같이 주소만 입력하고 '저장소 확인하기' 버튼을 클릭하면 유효한 저장소인지 확인하고 확인이 되면 이름이랑 설명까지 자동으로 채워줍니다. 그럼 소프트웨어 스택만 Spring으로 설정하고 컨테이너를 생성합니다.
콘솔에서 아래 명령을 실행하면 잘 가다가 에러가 발생합니다.
./mvnw package
찾아보면 해당 에러와 관련된 이슈가 올라와있습니다.
Caused` by: org.apache.maven.plugin.PluginContainerException: An API incompatibility was encountered while executing io.spring.javaformat:spring-javaformat-maven-plugin:0.0.31:validate: java.lang.UnsupportedClassVersionError: io/spring/javaformat/eclipse/jdt/jdk11/internal/formatter/DefaultCodeFormatter has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0
https://github.com/spring-projects/spring-petclinic/pull/935
기본적으로 goormide는 java8 기준으로 설정이 되는데 java8 사용 시에는 뭔가 설정을 해주어야 한다고 하네요.
https://github.com/spring-io/spring-javaformat#java-8-support
가이드처럼 파일 하나 만들고 한 줄 작성해주면 됩니다.
그럼 더 이상 에러가 발생하지 않고 빌드를 성공합니다. 다만 시간이 무려 13분이나 걸린다는 거 ㅠㅠ
* goormide에서 자바 11 버전 설치에 대한 가이드도 있긴 합니다. 다만 이렇게 하면 환경변수도 다시 잡아주어야 하고 시간도 많이 걸려서 다른 문제만 없다면 그냥 자바 8을 사용해도 문제는 없을 것 같네요.
https://forum.goorm.io/topic/16401/java-11-%EC%A7%80%EC%9B%90-%EA%B4%80%EB%A0%A8/2