개발자로서 살아남기

서버 개발자로서 살아남기 - 메이븐(Maven)에 대해

코드 살인마 2022. 1. 5. 00:18
728x90

🔍개요

메이븐은 자바로 웹 개발을 해본 사람이면 모를 수가 없는 단어이다. 나 또한 메이븐을 통해 빌드해 본 경험이 많기 때문에 알고있었다.

현업에서 하고 있는 프로젝트는 스프링 환경에 메이븐을 사용하고 있어서, 메이븐을 통해 install, package 등 다양한 기능을 수행하고 있는데 문득 메이븐에 대해 자세히는 알지 못한다는 생각이 들었다.

이번 기회에 메이븐의 정확한 정의와 하는일에 대해 공부와 정리를 해야겠다는 생각이 들었다.

 

🔍메이븐이란?

메이븐은 자바용 프로젝트 관리 도구이다.

좀 더 자세히는 프로젝트를 빌드, 패키지, 배포 등의 역할을 수행하고 나아가 각종 라이브러리들을 관리 해주는 도구이다.

 

메이븐을 사용하려면

메이븐은 2개의 설정 파일을 통해 관리가 가능하다. 이 파일들은 여러명의 개발자들이 협업하는데 큰 도움을 준다. 개발 환경설정을 따로 할 필요 없이 2개의 파일만 가져오면 된다.

  1. setting.xml
  • 메이븐 설치시 기본으로 제공되는 xml (MAVEN_HOME/conf/ 에 위치함)
  • 메이븐 툴과 관련 설정파일
  1. pom.xml
    만약 자바 프로젝트의 빌드 툴로 메이븐을 설정했다면 pom.xml이 생성될 것이다.
  • 프로젝트에 필요한 라이브러리를 정의하는 공간
    • 해당 라이브러리가 작동하는데 필요한 다른 라이브러리 자동 설치
  • pom.xml의 코드의 의미를 알고싶다면 pom.xml 코드 분석
 

[Maven] pom.xml 파일 기본

Maven은 "pom.xml"라는 빌드 파일을 사용하여 빌드 정보를 기술한다. 이 파일이 어떤 내용으로되어 있는지, 그 기본형을 설명한다. Maven은 커멘드를 사용하여 간단히 프로젝트를 만들거나 빌드가 가

araikuma.tistory.com

 

🔍메이븐의 Life Cycle

메이븐은 미리 정의하고 있는 빌드 순서가 있다. 이를 라이프 사이클이라 한다.

Default(Build) : 소스코드를 컴파일 해주는 단계, 컴파일이 성공한다면 target/classes 폴더가 만들어지고 컴파일 된 class 파일이 생성된다.

 

Clean : 빌드 후 생성된 target을 삭제한다.

 

Validate : 프로젝트가 올바른지 확인하고 필요한 모든 정보를 사용할 수 있는지 확인하는 단계

 

Compile : 프로젝트의 소스코드를 컴파일 하는 단계

 

Test : 유닛(단위) 테스트를 수행 하는 단계(테스트 실패시 빌드 실패로 처리, 스킵 가능)

 

Pacakge : 실제 컴파일된 소스 코드와 리소스들을 jar, war 등등의 파일 등의 배포를 위한 패키지로 만드는 단계, 타겟디렉토리를 만든다.

 

Verify : 통합 테스트 결과에 대한 검사를 실행하여 품질 기준을 충족하는지 확인하는 단계

 

Install : 패키지를 로컬 저장소에 설치하는 단계, Pacakge와 다른 점은 로컬 저장소에 있는 다른 프로젝트 들이 접근이 가능하다

 

Site : 프로젝트 문서와 사이트 작성, 생성하는 단계

 

Deploy : 만들어진 package를 원격 저장소에 release 하는 단계

 

🔍결론

회사 선배가 알려준 팁 중에 '코드를 수정한 후 Package를 하면 오래 걸리니 야매로 target 파일의 코드를 바꾸게 하면 Package를 할 필요 없다' 라는 팁을 주셨는데 다시 생각해보니 메이븐에 대해 잘 이해해서 나오는 팁 같았다.

예전처럼 무지성 clean -> Package를 해도 상관은 없을거 같다만... 그래도 오늘 공부한 내용을 조금은 생각 할 수 있었으면 좋겠다.

참조

갓대희의 작은공간

 

[Maven] Maven 이란? (정의, 예제)

[Maven] 메이븐 이란? (정의, 예제) 안녕하세요. 갓대희 입니다. 이번 포스팅은 [ 메이븐 알아보기 ] 입니다. : ) 1. 빌드 (Build) #1 빌드란?  - 소스코드 파일을 컴퓨터에서 실행할 수 있는 독립

goddaehee.tistory.com

https://cheershennah.tistory.com/151

 

메이븐이란? Maven 파헤치기. pom,repository,lifecycle ...

메이븐이란 Maven ? 프로젝트의 전체적인 라이프사이클을 관리하는 관리도구이다. 프로젝트 객체모델(Project Object Model: POM) 이라는 개념을 바탕으로 프로젝트의 의존성관리, 라이브러리관리, 프로

cheershennah.tistory.com

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

 

메이븐(Maven)은 알고 스프링(Spring)을 쓰는가? (pom.xml 분석하며 가볍게 정리하는 빌드 툴, Maven)

메이븐(Maven)은 알고 스프링(Spring)을 쓰는가? 제목과 같은 질문에 필자는 제대로 답변할 수 없었다. 단순하게는 maven repository에서 dependency 추가해서 필요한 라이브러리 쓰는 정도? 무엇을 위해

jeong-pro.tistory.com

https://myjamong.tistory.com/154

 

[Spring] Maven 사용하는 이유, 알아야하는 이유 :: 마이자몽

Maven 이란? Spring MVC 프로젝트를 진행하면서... 이클립스를 이용하면서 Maven이라는 단어를 들어보셨나요? 네. 아마 한번쯤은 들어봤을겁니다. 왜냐하면 이클립스를 이용하는 사람이라면 이미 사용

myjamong.tistory.com