Framework

[Maven] Framework - Maven이란? < 언덕 위 콩콩 >

Miiko 2021. 5. 26. 21:01

 

 

요즘 Framework를 배우고 있는데, 시간이 지나면 금방 배운것들을 잊어버릴 것 같아서

다시 한번 정리해두고자 글을 작성해보려고 합니다 :)

 

Maven의 정의


Apache Maven

아파치 소프트웨어 재단에서 개발한  java용 프로젝트 관리 도구이다.

 

 

프로젝트 관리 도구 또는 빌드 도구(Build tool) 인 Maven은

source 파일을 compile하고 package해서 배포하는 일을 자동화 해준다.

 

 

 

왜 Maven을 사용하는가?

 

프로젝트를 진행하다보면 여러 라이브러리가 필요하다.

Maven을 사용하지 않는다면 라이브러리를 추가하기 위해 jar파일을 다운받아 포함시켜주어야 한다.

 

  • 프로젝트가 간단하고 많은 라이브러리를 필요로 하지 않는 경우, 딱 몇가지 라이브러리만 다운받아 포함시켜주면 문제없이 진행할 수 있다.
  • 프로젝트 규모가 크고 많은 라이브러리가 필요한 경우, 또 여러 사람과 함께 작업중인 프로젝트라면 Maven(프로젝트 관리 도구)를 활용하는 것이 훨씬 쉽게 프로젝트의 라이브러리를 관리할 수 있다.

Maven의 <pom.xml>이라는 특정 문서에 프로젝트에 필요한 라이브러리들을 작성해두면 네트워크를 통해 자동으로 다운받아준다. 즉, 인터넷에서 jar파일을 하나하나 받아서 포함시켜주지 않아도 되며, 라이브러리가 작동하는데 필요한 다른 라이브러리도 모두 관리해주어 더 편리하게 프로젝트를 작업할 수 있게 된다. 

 

 

Maven LifeCycle

 

Lifecycle 종류 : clean, default, site

 

  • clean : 빌드 시 생성되었던 산출물을 삭제
  • default : 프로젝트 배포절차, 패키지 타입별로 다르게 정의됨
  • site : 프로젝트 문서화 절차

http://hobakc.blogspot.com/2014/02/maven-lifecycle.html

Plugin, Goal, Phase 이란?

 

Maven에서 제공하는 모든 기능들은 플러그인 단위로 제공된다.

플러그인들 별로  goal이라는 것들을 제공하는데, 이 goal들은 Maven에서 실행되는 가장 기본적인 작업 실행단위가 된다.

 

  • Plugin : Maven에서 기능들이 제공되는 단위
  • Phase : Build Lifecycle의 각각의 단계를 의미(Phase는 특정 순서에 따라서 goal이 실행되도록 구조를 제공)
  • Goal : Maven에서 실행되는 가장 기본적인 작업 실행단위

http://hobakc.blogspot.com/2014/02/maven-lifecycle.html

 

Maven에서 플러그인을 실행할 때 '플러그인이름(Plugin):플러그인지원골(Goal)'의 형식으로 실행 할 기능을 선택 할 수 있다.

(예를들어, mvn [compiler:compile]은 'compiler' 플러그인에서 'compile' 기능(goal)을 실행한다는 것을 뜻 한다.)

 

 

Maven default(기본) Phase와 Goal

 

기본 라이프사이클은 총 5단계로 이루어져 있다.

 

[Compile]

명령 : mvn compile

소스코드를 컴파일해주는 단계입니다. 성공적으로 컴파일이 된다면 target/classes폴더가 만들어지고 컴파일된 class파일이 생성된다.

 

[Test]

명령 : mvn test

테스트 코드를 실행해주는 단계입니다. 실패하면 빌드가 멈춥니다. 이 단계에서 target/test-classes폴더와 안에 컴파일된 class파일이 생성되고 target/surefire-reports 폴더에 테스트 결과가 기록됩니다.

 

[Package]

명령 : mvn package

해당 프로젝트를 지정한 확장자로 묶어주는 단계입니다. 확장자 타입은 pom.xml에 packaging 태그로 묶이게 되고

"artifactId-version.packaging"형태의 파일을 target폴더안에 생성해줍니다.

 

[install]

명령 : mvn install

로컬 리포지토리 즉 Maven이 설치되어 있는 PC에 배포하게 됩니다.

 

[deploy]

명령 : mvn deploy

원격 리포지토리가 등록되어 있다면 해당 원격 리포지토리에 배포하게 됩니다.

 

 

Maven 설정파일

 

1) settings.xml

 

settings.xml은 maven tool 자체에 관련된 설정을 담당한다.

위치 : MAVEN_HOME/conf/ 아래 ( * MAVEN_HOME은 환경변수에 설정한 경로)

 

 

2) pom.xml

 

pom.xml은 POM(Project Object Model)을 설정하는 부분으로 프로젝트 root에 존재하는 빌드 옵션을 설정하는 부분이며, 프로젝트 당 1개 이다.

위치 : 프로젝트 최상위 디렉토리



 



출처: https://sjh836.tistory.com/131 [빨간색코딩]
출처: https://jeong-pro.tistory.com/168 [기본기를 쌓는 정아마추어 코딩블로그]
출처: https://goddaehee.tistory.com/199
출처: https://mangkyu.tistory.com/8
출처: https://wiki.kicco.com/pages/viewpage.action?pageId=14516282 
출처: http://itnovice1.blogspot.com/2018/12/mvn-lifecycle.html
출처: https://myjamong.tistory.com/153