반응형
Maven
Maven은 프로젝트 객체 모델(POM) 개념을 기반으로 프로젝트를 정형화된 배포 유형(jar, war 등)으로 빌드(컴파일, 테스트, 검사, 배포) 과정을 균일하게 쉽게 구성하고 관리하는 도구입니다.
장점
- 빌드 프로세스를 손쉽게 구성
- 정형화된 빌드 프로세스 제공
- 양질의 프로젝트 정보 제공
- 라이브러리 의존성 관리
Maven 단계
- validate: 프로젝트의 정보 검증
- compile: 프로젝트 코드 컴파일
- test: 소스 코드 테스트
- package: 컴파일된 소스를 설정된 패키지 유형에 따라 처리
- verify: 통합 테스트 결과에 대한 검사를 실행하여 품질 기준을 충족하는지 확인하는 단계
- install: 로컬 저장소로 배포
- deploy: 원격 저장소에 최종 패키지 배포
- clean: 이전 빌드에서 생성된 코드 정리(targer 폴더)
POM.xml 파일 구성
<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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<!-- The Basics -->
<groupId>com.nakanara</groupId>
<artifactId>example</artifactId>
<version>1.0</version>
<packaging>jar</packaging>
<!-- More Project Information -->
<name>예제</name>
<description>예제입니다</description>
<url>https://nakanara.tistory.com</url>
<inceptionYear>2022</inceptionYear>
<!-- 라이선스 -->
<licenses>
<license>
<name>Apache License, Version 2.0</name>
<url>https://www.apache.org/licenses/LICENSE-2.0.txt</url>
<distribution>repo</distribution>
<comments>A business-friendly OSS license</comments>
</license>
</licenses>
<!-- 저장소 -->
<repositories>
<repository>
<id>Central</id>
<name>repo1.maven.org</name>
<url>https://repo1.maven.org/maven2/</url>
</repository>
</repositories>
<!-- 변수 설정 -->
<properties>
<junit.version>5.2.0.RELEASE</junit.version>
</properties>
<!-- 종속성 -->
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
<!-- 로컬에서 제공할 경우 -->
<dependency>
<groupId>com.nakanara</groupId>
<artifactId>client</artifactId>
<version>1.0</version>
<scope>system</scope>
<systemPath>${basedir}/src/main/webapp/WEB-INF/lib/client.jar</systemPath>
</dependency>
</dependencies>
</project>
- Basics
- modelVersion: Maven POM 모델 버전
- groupId: 프로젝트 고유 식별자, 패키지 명과 달라도 되지만 일반적으로 패키지 명
- artifactId: 프로젝트 고유 ID
- version: 프로젝트 버전
- packaging: 프로젝트 패키징 유형(pom, jar, maven-plugin, ejb, war, ear, rar), 패키지 유형에 따라 실행 요소가 달라짐 (https://maven.apache.org/ref/3.8.4/maven-core/default-bindings.html)
- Information
- name: 프로젝트 명
- description: 프로젝트 설명
- url: 프로젝트 홈페이지
- inceptionYear: 프로젝트 시작 연도
- licenses: 관련 라이선스 표시
- repositories: 라이브러리를 검색할 저장소 설정
- properties: 속성 설정
해당 속성을 사용할 경우 ${속성명}으로 사용 - dependencies: 종속성 설정(groupId, artifactId, version 필수)
- groupId: 라이브러리 고유 식별자
- artifactId: 라이브러리 고유 ID
- version: 라이브러리 버전
- scope: 라이브러리 적용 범위
- compile: 기본 값, 해당 프로젝트에 종속성을 가짐
- provided: 컴파일에 참고하지만, 패키징에서 제외, 런타임에서는 JDK 또는 컨테이너가 제공
- runtime: 패키징에서 제외, 컴파일에는 필요하지 않지만 런타임에는 필요
- test: 테스트 단계에서만 필요
- system: 저장소에서 관리되지 않으며 명시적으로 jar 위치 표시
systemPath: system일 경우 jar 경로 설정
Maven 설정 파일
setting.xml은 기본적으로 MAVEN_HOME/conf 폴더 안에 존재하고 있으며, 일반적으로 ${user.home}/.m2/settings.xml
위치하고 있다.
용량이 부족할 경우 설정된 localRepository
를 변경하여 원하는 로컬 저장소로 변경할 수 있다. 또한 포맷할 경우 관련 라이브러리 전체가 다시 다운로드되므로 사전에 로컬 저장소를 백업해두면 설치에 편리하다.
<localRepository>/path/to/local/repo/</localRepository>
참고
반응형
'FullStack > 21. Java' 카테고리의 다른 글
인텔리J 톰켓 위치-로그 (0) | 2023.01.17 |
---|---|
JAVA - HTTP 서비스 포트 찾기 (0) | 2022.11.08 |
Java 11 변경 내용 (0) | 2022.01.01 |
[Java] The server selected protocol version TLS10 is not accepted by client preferences [TLS13, TLS12] (0) | 2021.09.10 |
[UTIL] String 템플릿 + Map 결합하여 문자열 생성 (0) | 2021.09.07 |