본문 바로가기
개발/java spring

[java spring] maven 이란

by m2162003 2020. 9. 22.

1. 빌드의 개념

- 소스 코드(java, cpp ) 혹은 프로젝트에서 쓰인 파일이나 자원(.xml, .jar )을 JVM이나 톰캣같은 WAS가 인식할 수 있는 구조로 패키징하는 과정 및 결과물을 의미한다.  

- 소스코드를 실행가능한 소프트웨어 가공물로 바꾸는 과정임

 

2. 빌드 도구

- 프로젝트 생성, 테스트 빌드, 배포 등의 작업을 위한 프로그램

- 라이브러리 추가와 라이브러리 버전 동기화의 어려움을 해소하고자 등장했다.

- 초기 java 빌드 도구는 Ant -> Maven이 많이 쓰이고 현재는 Gradle이 많이 쓰임

- Ant는 스크립트 작성도 많고 라이브러리 의존성 관리가 안돼서 불편

 

Maven이란

1. 정의와 특징

- 자바용 빌드 도구이자 프로젝트 관리자 & 프레임워크. 아파치 Ant의 대안임

- 프로젝트의 전체적인 life cycle을 관리하는 도구

- 필요한 라이브러리를 pom.xml(package.json과 유사)에 정의해놓으면 네트워크를 통해서 자동으로 필요한 라이브러리들을 모두 다운받아줌

 

 

2. Ant vs Maven

- Ant는 비교적 자유도가 높은 편

- Maven은 정해진 life cycle에 의하여 작업을 수행하며 전반적인 플젝 관리 기능까지 포함함

-> build tool + project management

 

3. Maven LifeCycle

1) lifecycle이란

- 미리 정해진 빌드 순서를 의미한다.

- 메이븐은 프레임워크이기 때문에 동작방식과 빌드 순서가 정해져 있다. 

 

 최종 빌드 순서는 

- compile -> test -> package

- compile: src/main/java 디렉토리 아래의 모든 소스 코드가 컴파일된다.

- test: src/test/java, src/test/resources 테스트 자원 복사 및 테스트 소스 코드 컴파일

- package: 컴파일과 테스트 완료 후 jar, war 형태로 압축한다.

 

2) phase(단계) 란

- build lifecycle의 각 단계를 phase라고 한다.

- phase는 의존관계를 가지고 있어서 이전 단계의 phase가 모두 수행되어야 다음 단계가 실행가능

 

3) goal

- 최소한의 실행단위(task)

- 하나의 플러그인에서 여러 작업을 수행할 수 있도록 지원하며, 플러그인에서 실행할 수 있는 각각의 기능(명령)을 goal이라 한다.

- phase에 연계된 goal을 실행하는 과정이 build

 

4. Maven 설정 파일

1) settings.xml

- 메이븐 빌드 툴과 관련된 설정파일

- MAVEN_HOME/conf 디렉토리에 위치 (메이븐 설치 시 기본 제공)

- 경로를 지정, 변경가능하다. 

 

2) pom(project object model)

- package.json과 동일한 역할

- 다른 이름도 가능하지만 pom이라고 쓰자

 

 

=> 복잡한 프로젝트는 Gradle이 많이 사용된다고 함

 

참고 자료:

goddaehee.tistory.com/199

'개발 > java spring' 카테고리의 다른 글

[java spring] JDBC와 JPA/Hibernate, Mybatis  (0) 2020.09.24
[java spring] Bean: Scope와 Injection  (0) 2020.03.25

댓글