pom.xml
👉🏻 Project Object Model의 약자
내가 사용하고자 하는 라이브러리를 직접 등록하여 자동으로 프로젝트에 추가되게 하는 역할
👉🏻 라이브러리 관리의 편의성을 주는 파일 (Maven과 관련된 파일)
pom.xml의 구조
1) 파일 정의 영역
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/maven-v4_0_0.xsd">
👉🏻 xsi: 유효성 검사를 해 주면서 해당 파일이 xml 파일이 맞음을 인증해 줌
2) modelVersion ~ version 엘리먼트 영역
👉🏻 이 스프링 프로젝트에 대한 정보를 기술한 부분
<modelVersion>4.0.0</modelVersion> <!-- Spring Legacy 프로젝트 (4버전대) -->
<groupId>com.kh</groupId> <!-- 2번째 레벨까지의 패키지 구조 -->
<artifactId>spring</artifactId> <!-- 3번째 레벨의 패키지명 (즉, 프로그램명을 뜻함! == contextPath) -->
<name>Spring_Project</name> <!-- 프로젝트명 -->
<packaging>war</packaging> <!-- 배포될 때 압축될 형식 (jar는 일반 응용 프로그램의 배포 형식, war는 웹의 배포 형식) -->
<version>1.0.0-BUILD-SNAPSHOT</version> <!-- 배포될 war 파일의 버전을 나타냄 -->
3) properties 엘리먼트 영역
👉🏻 이 문서에서 사용할 환경설정 내용들을 담은 변수들을 지정한 부분
👉🏻 태그명이 곧 변수명, 시작 태그와 종료 태그 사이의 내용물이 변수에 담긴 데이터
👉🏻 ${변수명} 으로 해당 값을 불러올 수 있음 !! 띄어쓰기 안 됨! 오류 남!
<properties>
<java-version>1.6</java-version>
<org.springframework-version>3.1.1.RELEASE</org.springframework-version>
<org.aspectj-version>1.6.10</org.aspectj-version>
<org.slf4j-version>1.6.6</org.slf4j-version>
</properties>
properties는 이런 식으로 정의를 해 놓은 뒤 dependency 부분에서 변수로 끌어 쓰는 역할을 담당!
안 바꿔도 상관없지만 어떤 역할을 하는지 확인을 위해 최신 버전으로 바꿔 보자!
더보기
먼저 최신 버전 확인하기
<properties>
<java-version>1.8</java-version> <!-- JDK 버전값 -->
<org.springframework-version>5.3.23</org.springframework-version> <!-- spring 과 관련된 jar 파일들의 버전값 -->
<org.aspectj-version>1.6.10</org.aspectj-version>
<org.slf4j-version>1.6.6</org.slf4j-version>
</properties>
여기서 잠깐!
😲❓ 선생님 제가 쓰는 자바는 JDK8 버전인 1.8인데요?
🙆🏻♀️❗️ 스프링 프로젝트의 자바 기본 버전은 1.6임! 하단의 설정을 각각 1.8로 바꾸어 주자
스프링 프로젝트의 자바 버전 바꾸는 법
1) pom.xml properties 영역의 java-version 태그 내의 숫자를 1.8로 바꾸기
2) 드래그 죽죽 내려서 해당 부분을 찾아 수정하기
3) 해당 프로젝트 - Maven - Update Project
4) 자바 버전 수정 완료!
4) dependencies 엘리먼트 영역
👉🏻 이 프로젝트에서 사용할 라이브러리 (jar 파일들)에 대한 정보들을 담는 곳
👉🏻 즉, 내가 다운로드 받고자 하는 jar 파일들에 대한 기술
👉🏻 이것을 '의존성 라이브러리', '의존성 주입' 이라고 부름
5) build 엘리먼트 영역
👉🏻 실제 명령 수행 시 필요한 설정에 대한 내용을 기술하는 부분
👉🏻 이 명령을 실행할 때 누가 어떻게 할 건지를 정의해 놓은 곳