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이 많이 사용된다고 함
참고 자료:
'개발 > java spring' 카테고리의 다른 글
[java spring] JDBC와 JPA/Hibernate, Mybatis (0) | 2020.09.24 |
---|---|
[java spring] Bean: Scope와 Injection (0) | 2020.03.25 |
댓글