메이븐(Maven)과 의존성 관리도구
메이븐은 의존성 관리도구이다.
Apache Maven의 사전적 정의는 다음과 같습니다.
Apache Maven은 자바용 프로젝트 관리도구로 Apache Ant의 대안으로 만들어졌다.
Apache License로 배포되는 오픈 소스 소프트웨어이다.
Java 기반 프로젝트의 라이프사이클 관리(논리적인 작업 흐름)를 자동화 빌드 도구이다.
즉, 자바 소스를 컴파일하고 패키지해서 배치하는 일을 자동화 해주는 것
Maven의 장점
- 라이브러리의 관리를 매우 용이하게 해준다.
- 컴파일과 빌드를 동시에 수행, 테스트를 병행하거나 서버 측 *Deploy 자원을 관리할 수 있는 환경을 제공한다.
- 프로젝트의 작성부터 컴파일, 페트스 등 프로젝트 라이프사이클에 포함되는 각 테스트를 지원해준다.
- *pom.xml 파일에 필요한 라이브러리만 적으면 Maven이 다운과 설치 및 경로 지정까지 해준다.
- war파일 기반의 배포용으로도 자주 사용된다.
* Deploy : 아티페그를 로컬 저장소에 저장하는 행위(만들어진 프로그램을 서비스 위치로 보내는 작업)-배포하다
* pom.xml : Project Object Model, 메이븐이 프로젝트를 처리하는데 필요한 정보를 제공하는 파일
빌드(Build)란?
빌드라는것은 말그대로 우리가 작성한 소스코드(.java)들과 프로젝트에서 쓰인 각각의 자원들(.xml, .jpg, .jar, .properties) 을 JVM이나 톰캣같은 WAS가 인식할 수 있는 구조로 패키징(묶는것) 해주는 과정
예를 들어 JAVA 웹 어플리케이션을 개발한다고 하면, 개발은 이클립스 등의 프로그램에서 실행하게 되는데, 그 소스가 실행될 수 있게 만드는 환경은 Servlet/JSP 컨테이너인 톰캣 등 이다.
이런 플랫폼은 자체 인식 구조와 규정이 있기에 이것을 기준을 맞춰야한다.
즉 내가 만든 소스코드가 어떤 구조로 개발 하였던 간에 웹 어플리케이션을 서비스 하기 위해서는 WAS(Web Application Server, 웹서버)에 배포(deploy) 해야하고 플랫폼이 원하는 규칙에 맞게 빌드(묶어)줘야한다.
의존성 관리도구
각각의 오픈소스인 a,b,c,d라는 라이브러리가 있다고 하자.
메이븐 생기기 전,
만약 하나의 프로젝트를 만드려고 보니 오픈소스인 a.jar만 필요한데 a.jar(라이브러리)를 사용하려보니 오픈소스여서 연계 되어있는 b,c,d까지 있어야 사용할수 있다. 프로젝트를 진행하려면 a.jar 라이브러리 하나만 사용할 줄 알았는데 연계되어있는 각각의 라이브러리를 일일히 찾아다녀야 하니 라이브러리 구성에만 엄청난 시간이 투자되어야한다.
메이븐 생긴 후(중앙 저장소)
메이븐의 가장 큰 특징이 중앙 저장소를 통한 자동 의존성 관리가 있다.
중앙 저장소는 라이브러리를 공유하는 파일 서버 같은 것
'JAVA 공부 > JAVA 상식&의존성' 카테고리의 다른 글
[자바 상식] CGI와 서블릿 그리고 톰캣 (0) | 2020.05.13 |
---|---|
[자바 상식] JVM과 바이트코드 (0) | 2020.05.13 |
[자바 상식] J2EE, JDK, JRE, J2SE 차이 (0) | 2020.05.13 |
[자바 의존성] 프레임워크와 자바 웹개발 관련 프레임워크 (0) | 2020.05.13 |
[자바의 의존성] 의존성과 라이브러리, 그리고 jar (0) | 2020.05.13 |
댓글