컴파일 플러그인으로 JDK 버전 변경하기

2022. 11. 8. 19:45·WEB/Maven

Phase 중 하나인 컴파일을 수행하는 plug-in은 JDK 버전을 결정한다.

JDK 버전을 설정하면서 plug-in 설정도 같이 파악해보자.

컴파일 플러그인

[그림1]

앞서 살펴봤듯이 빌드 과정는 단계들이 존재하고 각 단계들은 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 프로젝트를 생성했던 것이다.

'WEB/Maven' 카테고리의 다른 글
  • 서블릿/JSP 라이브러리 설정하기
  • 웹 프로젝트로 변경하기
  • Maven 프로젝트 Eclipse에서 Load
  • Maven Build Lifecycle
s_y_130
s_y_130
  • s_y_130
    About SY
    s_y_130
  • 전체
    오늘
    어제
    • 분류 전체보기 (437) N
      • JAVA (54)
        • 더 자바 8 (0)
        • JAVA (41)
        • JAVA (JVM) (13)
      • Computer Science (86)
        • CS Basic (7)
        • OOP (11)
        • Design Pattern (16)
        • Network (8)
        • HTTP (6)
        • WEB (22)
        • OS (16)
      • DataBase (29)
        • DB theory (15)
        • MySQL (14)
        • Redis (0)
      • Collection Framework (1)
        • 구현 (1)
      • Data Structure (14)
        • Linear (9)
        • Non-Linear (5)
      • Algorithm (19)
        • Basic (12)
        • 응용 (2)
        • 완전 탐색(Brute Force) (1)
        • 다익스트라 (1)
        • Algorithm Problem (3)
      • Spring (104)
        • 스프링 핵심 원리 - 기본편 (9)
        • 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 (7)
        • 스프링 MVC 2편 - 백엔드 웹 개발 핵심 기술 (11)
        • 스프링 DB 1편 - 데이터 접근 핵심 원리 (6)
        • 스프링 DB 2편 - 데이터 접근 활용 기술 (10)
        • 스프링 핵심 원리 - 고급편 (13)
        • 스프링 부트 - 핵심 원리와 활용 (9)
        • Spring Security 6.x (2)
        • Spring Batch (2)
        • Spring Cloud로 개발하는 MSA (1)
        • 재고시스템으로 알아보는 동시성이슈 해결방법 (4)
        • 개념 (27)
        • 테스트 (0)
        • Annotation (1)
        • Error Log (2)
      • TEST (0)
        • 부하 테스트 (0)
        • Practical Testing: 실용적인 테스트.. (0)
      • JPA (40)
        • 자바 ORM 표준 JPA 프로그래밍 (12)
        • 1편- 실전! 스프링 부트와 JPA 활용 (7)
        • 2편- 실전! 스프링 부트와 JPA 활용 (4)
        • 실전! 스프링 데이터 JPA (6)
        • 실전! Querydsl (6)
        • 개념 (5)
      • 백엔드 부트캠프[사전캠프] (35)
        • TIL (12)
        • 문제풀이 (23)
      • 백엔드 부트캠프 (5)
        • Calculator (3)
        • Kiosk (2)
      • Open Source (0)
      • Book Study (1)
        • Morden Java in Action (1)
        • Real MySQL 8.0 Vol.1 (0)
        • TDD : By Example (0)
      • AWS (0)
        • EC2 (0)
      • git (2)
      • AI (22)
        • Machine Learning (17)
        • Deep Learning (0)
        • TensorFlow (1)
        • PyTorch (1)
        • YOLO (1)
        • Data Analysis (0)
        • Ai code Error (1)
        • Numpy (1)
      • MY (0)
      • WEB (15)
        • Django (3)
        • WEB 개념 (1)
        • React (1)
        • Maven (10)
      • Python (6)
      • 기초수학 (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
s_y_130
컴파일 플러그인으로 JDK 버전 변경하기
상단으로

티스토리툴바