🔍개요
메이븐은 자바로 웹 개발을 해본 사람이면 모를 수가 없는 단어이다. 나 또한 메이븐을 통해 빌드해 본 경험이 많기 때문에 알고있었다.
현업에서 하고 있는 프로젝트는 스프링 환경에 메이븐을 사용하고 있어서, 메이븐을 통해 install, package 등 다양한 기능을 수행하고 있는데 문득 메이븐에 대해 자세히는 알지 못한다는 생각이 들었다.
이번 기회에 메이븐의 정확한 정의와 하는일에 대해 공부와 정리를 해야겠다는 생각이 들었다.
🔍메이븐이란?
메이븐은 자바용 프로젝트 관리 도구이다.
좀 더 자세히는 프로젝트를 빌드, 패키지, 배포 등의 역할을 수행하고 나아가 각종 라이브러리들을 관리 해주는 도구이다.
메이븐을 사용하려면
메이븐은 2개의 설정 파일을 통해 관리가 가능하다. 이 파일들은 여러명의 개발자들이 협업하는데 큰 도움을 준다. 개발 환경설정을 따로 할 필요 없이 2개의 파일만 가져오면 된다.
- setting.xml
- 메이븐 설치시 기본으로 제공되는 xml (MAVEN_HOME/conf/ 에 위치함)
- 메이븐 툴과 관련 설정파일
- pom.xml
만약 자바 프로젝트의 빌드 툴로 메이븐을 설정했다면 pom.xml이 생성될 것이다.
- 프로젝트에 필요한 라이브러리를 정의하는 공간
- 해당 라이브러리가 작동하는데 필요한 다른 라이브러리 자동 설치
- pom.xml의 코드의 의미를 알고싶다면 pom.xml 코드 분석
🔍메이븐의 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를 해도 상관은 없을거 같다만... 그래도 오늘 공부한 내용을 조금은 생각 할 수 있었으면 좋겠다.
참조
https://cheershennah.tistory.com/151
https://jeong-pro.tistory.com/168
https://myjamong.tistory.com/154
'개발자로서 살아남기' 카테고리의 다른 글
서버개발자로서 살아남기 - 로드 밸런서(Load Balancer) (0) | 2022.03.27 |
---|---|
서버 개발자로서 살아남기 - hosts 파일 (0) | 2022.02.16 |
서버 개발자로서 살아남기 - 프록시(Proxy)란? (0) | 2022.02.10 |
개발자로서 살아남기 - 젠킨스(JenKins)에 대해 (0) | 2021.12.31 |
서버 개발자로서 살아남기 - netstat 명령어에 대해 (0) | 2021.12.30 |