새소식

[5분 내로] 강의실/📋 Spring Annotation이란?

[Maven] 꼭 알아야 하는 메이븐 개념 및 라이프사이클

  • -
728x90

 

안녕하세요. 팀드모네입니다.

오늘은 메이븐이란 무엇인가? 라는 주제를 가지고 얘기를 하려합니다. 일상생활에서 빼놓을 수 없는 핸드폰도 자세히 들여보면 숨겨진 기능도 많고습니다. 메이븐도 그와 같습니다. 자세히 보면 의외로 기능이 많습니다.

1. 메이븐 개념

1.1 메이븐이란?

- 자바 프로젝트 빌드 자동화 툴이다.

* compile하고 package해서 deploy하는 반복 작업을 줄이기 위한 툴입니다.

 

- 프로젝트 관리 도구입니다.

* 라이브러리 버전 관리, 프로젝트 빌드 심지어 자바 API 문서까지 써주는 툴입니다.

reference : https://maven.apache.org/

 

1.2 메이븐? 이거 왜 필요함?

- 프로젝트에 참여한 모든 개발자가 일관된 라이브러리 버전을 사용하도록 만들어줍니다. 프로젝트가 복잡해질수록 사용하는 라이브러리가 많아지게 됩니다. 이때 이 라이브러리 버전을 관리해주는 도구가 없으면 지옥문이 펼쳐집니다. 

 

메이븐을 사용하지 않았습니까?

 

A라는 개발자는 1.1버전..B라는 개발자는 2.4버전.. C라는 개발자는 7.0버전.. 이렇게 주구난방으로 라이브러리를 사용하면 프로그램이 정상적으로 돌아갈리가 없겠죠. 이렇게 되지 않도록 중앙에서 딱 잡아주는 도구가 있었으니 그것이 바로 메이븐(Maven) 입니다.

 

1.3 메이븐은 그것만 해주나요?
-> 아닙니다. 메이븐은 소스코드를 컴파일하고 배포하는 것도 도와줍니다.

1.4 소스코드 컴파일 + 배포?
- 메이븐을 이해하려면, 프로젝트 빌드과정을 알아야합니다. 프로젝트 빌드과정은 다음과 같습니다.
- 프로젝트 생성
- 라이브러리 생성
- 코드작업

- 컴파일

- 테스트

- 패키지 만들기 -> 배포 -> 레포팅입니다.

그런데, 프로그램을 개발하다보면 위 과정을 수없이 반복하게 됩니다. 낭비되는 시간이 너무 많습니다.

메이븐은 이런 부조리한 상황을 해결합니다. 프로젝트의 컴파일과 배포를 도와줌으로써 시간절약을 해주는 것이죠

 

2. 메이븐 라이프사이클

2.1 메이븐의 핵심 개념! 라이프사이클!

- Maven에서는 clean, build, site라는 Lifecycle을 제공하고 있습니다. 그 중에서 build Lifecycle만 알아보겠습니다.

 

2.2 실무에서 당장 쓰이는 개념! build Lifecycle

아래의 페이즈(phase)들은 모두 build 라이프사이클에 속해있습니다.

ㄱ. mvn compile => 소스코드를 컴파일

ㄴ. mvn test => JUnit, TestNG와 같은 단위 테스트 프레임워크로 단위테스트

ㄷ. mvn package => Maven compile, Maven test-compile, Maven test 순으로 실행된 다음 jar, war파일이 target 디렉토리에 생성

ㄹ. mvn install => 로컬 저장소로 배포

ㅁ. mvn deploy => 원격저장소로 배포

ㅂ. mvn site => target/site에 문서 생성

ㅅ. mvn site-deploy => 문서 사이트를 서버에 배포

ㅇ. mvn clean => 빌드 중 생성했던 target 디렉터리 삭제

* 로컬 저장소는 개발자의 PC

* 원격 저장소는 외부에 위치한 서버

 

spring에서는

 

2.3 결론 요약

mvn package를 실행하면 ㄱ + ㄴ + ㄷ가 실행됩니다.

mvn deploy를 실행하면 ㄱ + ㄴ + ㄷ + ㄹ + ㅁ까지 실행됩니다.

*즉, 자신보다 하위 개념은 모두 실행한다는 것이죠.

 

다음 시간에는 이클립스에 메이븐을 설치하고 실행하는 내용을 다뤄볼까합니다. 실무에서 맨날 보게될 내용이니 꼭 눈에 담아두시면 도움이 될 것입니다.

 

블로그 방문해주셔서 감사합니다.
추가로 질문사항이 있으면 댓글 남겨주세요 :)


reference : https://maven.apache.org/

광고 링크 : https://ogx4.com

 

 

반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.