Maven은 어떻게 보는걸까?

귤쳥·2022년 7월 12일
0
post-thumbnail

maven은 안써봤는데

안드로이드 에서도, Spring에서도 gradle만 쓰던 나 갑자기 maven을 써야한다니 기본 구조를 알아보자!

-> 결국 gradle도 maven에서 파생되었다보니 전체적인 구조는 비슷했다!

Maven?

java build tool (compile, package, deploy)

Settings.xml

maven tool 자체에 관한 설정

(MAVEN_HOME/conf/아래에 있다. )

전자정부 프레임워크는 설정 파일들을 다 모아서 zip file로 제공, Settings.xml의 setting의 localrepository 뒤의 주소를 수정해야 한다.

pom.xml

POM(Project Object Model)

프로젝트 내 빌드 옵션을 설정하는 부분

<?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 http://maven.apache.org/maven-v4_0_0.xsd">
	<modelVersion>4.0.0</modelVersion>
    <groupId>egovframe</groupId>
    <artifactId>lab103</artifactId>
    <packaging>jar</packaging>
    <version>3.10.0</version>
    <name>lab103</name>
    <url>http://www.egovframe.go.kr</url>

</project>

< project >< /project >의 section별로 여러 정보 나타내고 설정

< modelVersion > maven의 pom.xml의 모델 버전 (4.0.0)

< groupId > 프로젝트 조직 그룹명 ( 보통 URL의 역순 ex com.example)

< artifactId > 프로젝트에서 생성되는 기본 아티펙트의 고유이름(프로젝트 명)

< version >SNAPSHOT이 붙으면 아직 개발단계라는 뜻(메이븐에서 라이브러리 관리방식이 다르다고 함)

< packaging> 패키지 유형(jar,war,ear,pom)

(일반적으로 설정 파일명은 < artifac t>-< version >.< extention >이다. ex demo-0.0.1-SNAPSHOT.jar)

< name > 프로젝트 명

< description > 프로젝트 설명 (생략가능)

< url > 프로젝트를 찾을 수 있는 URL

< properties > pom.xml에서 중복해서 사용되는 상수값 지정하는 부분 다른 위치에서 ${…}로 표기해서 사용할 수 있음

<properties>
        <java.version>1.8</java.version>
</properties>

${java.versoin} == 1.8

의존성 라이브러리

<dependencies>
       	<dependency>
			<groupId>egovframework.rte</groupId>
			<artifactId>egovframework.rte.fdl.cmmn</artifactId>  
			<version>${egovframework.rte.version}</version>
</dependency>

groupId, artifactId, version정보는 필수적으로 필요

spring-boot-starter-*는 부모 pom.xml에 이미 버전정보가 있어서 따로 지정하지 않는다.

compile, runtime, provided, test 해당 라이브러리가 언제 필요한지 제외되는 지 설정

build정보

<build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
</build>

build tool : 빌드와 관련된 정보를 설정할 수 있는 곳

maven의 lifecycle

  1. Lifecycle

미리 정해진 빌드 순서

  • defualt(build) : 일반적인 빌드 프로세스를 위한 모델
  • clean : 빌드 시 생성되었던 파일들을 삭제하는 단계
  • Validate : 프로젝트가 올바른지 확인하고 필요한 모든 정보를 사용할 수 있는지 확인하는 단계
  • Compile : 프로젝트의 소스코드 컴파일
  • Test : 단위테스트를 수행하는 단계(테스트 실패시 빌드 실패)
  • Package : 컴파일된 소스, 리소스로 jar, war 등 배포 패키지로 만드는 단계
  • Verify : 통합테스트결과 검사를 바탕으로 품질 확인
  • Install : 패키지를 로컬에 설치
  • Site : 프로젝트 문서와 사이트 생성
  • Deploy : 원격 저장소에 package release

빌드 순서는 complie→test→package

  1. Phase (단계)

Build LifeCycle의 각 단계

Phase는 단계별로 수행되어야 함(이전 phase가 수행되어야 다음 수행 가능)

  1. Goal

최소한의 실행 단위(특정작업)

플러그인에서 실행할 수 있는 각각의 기능 (한개의 플러그인에서 여러 기능 실행가능)

⇒ 각 Phase에 연계된 goal을 실행하는 과정을 Build라고 함

출처

https://goddaehee.tistory.com/199

https://jeong-pro.tistory.com/168

profile
혼긱 CE의 이제 막 시작하는 코딩

0개의 댓글