Phase 중 하나인 컴파일을 수행하는 plug-in은 JDK 버전을 결정한다.
JDK 버전을 설정하면서 plug-in 설정도 같이 파악해보자.
컴파일 플러그인
앞서 살펴봤듯이 빌드 과정는 단계들이 존재하고 각 단계들은 plug-in이라는 프로그램이랑 연계되어 있다.
위 그림에서 보면 'complie 단계' 를 수행하고 있는 Plug-in은 org.apache.maven.plugins:maven-compiler-plugin....이라는 녀석이다.
https://maven.apache.org/ 을 보면 지원하고 있는 Plug-in 정보를 찾아볼 수 있다.
Compiler Plugin을 자세히 살펴보면 Compiler Plugin을 구성하고 있는 Goal을 볼 수 있다. 실질적으로 이 Goal은 Plugin이 갖고 있는 하부 프로그램이라고 볼 수 있는데 즉, Goal이 해당 Plugin의 실질적인 기능 역할을 한다고 말할 수 있겠다.
다시 [그림1]을 살펴보면 단계 중에서 compile과 test-compile단계에서 같은 Plug-in을 사용하는 것을 볼 수 있다. 단지 Goal 이 다를 뿐이다.
즉, Plug-in은 각 단계별로 1개만 존재하는 것이 아닌 단계마다 동일한 Plug-in을 사용할 수 있다. 그리고 그 안에서 작은 Goal들이 각 단계를 책임지는 실질적인 역할을 한다고 볼 수 있다.
그렇다면 이 Plug-in이 갖고 있는 속성을 통해서 compile 옵션을 변경하는 작업을 진행해보자.
JDK 버전 변경
이전에 pom.xml 파일에서 작성한 jdk 버전에 대한 내용을 삭제한 뒤 다음과 같이 변경 사항을 적용해야하는데 프로젝트 오른쪽 클릭 후 Maven > Update Project를 선택하면 된다.
이후 자바 버전을 확인해 보면 1.5 버전으로 낮춰진 것을 확인 할 수 있다.(기본 버전)
이전 글에서 Maven project를 만들 때 ArcheType을 maven-quickstart 버전으로 만들었었다. 그래서 quickstart로 만들어진 project의 기본 JDK 버전은 1.5라는 것이다.
그래서 이 JDK 버전을 변경하려면 아래의 Plug-in을 통해 설정을 변경해야 한다.
플러그인 자체에서 버전을 바꿀 수 있도록 적용하려면 다음과 같이 pom.xml에 작성하고 업데이트를 한다.
위 그림처럼 maven-compiler-plugin의 버전을 3.8.1로 높이고 그 구성 설정을 통해서 source는 1.8, target은 1.8로 설정하겠다. 라는 식으로 Plug-in을 재정의 할 수 있다. 즉, 기존에 있던 기본 설정을 override.
그러면 다음과 같이 컴파일 버전이 바뀌어 적용된 것을 확인할 수 있다.
하지만 내용이 너무 길기에 이전의 내용과 같이 축약된 것으로 사용할 수 있다.
- 자세한 속성을 다루고 싶다면 축약된 형식보다는 위의 포맷
- 단순히 JDK 버전만 변경하고 싶다면 축약된 형식
+) 추가
Maven project를 생성할 때 우리는 archetype을 maven-archetype-quickstart로 하고 프로젝트를 생성하였다.
그런데 maven은 남이 만들어 둔 archetype을 이어서 개발을 진행할 수 있게끔하는 도구이다.
그렇다면 남들이 만들어 둔 archetype model은 몇개나 있을까??
mvn archetype:generate
위 명령어만 입력해서 실행해보자.
해당 명령어를 실행해보면 archetype이 1~3190개까지 있는 것을 알 수 있을 것이다.
그리고 이 archetype을 지정하지 않으면 우리가 만든 것처럼 maven-archetype-quickstart를 사용한다고 써있다.
즉, 우리는 빈 maven 프로젝트로 우리만의 maven 프로젝트를 생성했던 것이다.