위로
아래
빌드
빌드(Build)
- 소스 코드 파일을 컴퓨터에서 실행할 수 있는 독립 소프트웨어 가공물로 변환하는 과정이나 결과물
- 소스코드(java), 프로젝트에서 쓰인 각가의 파일 및 자원(.xml, .jpg, .jar, .properties)를 JVM이나 WAS가 인식할 수 있는 구조로 패키징하는 과정이나 결과물
빌드 도구 (Build tool)
- 프로젝트 생성, 테스트 빌드, 배포 등의 작업을 위한 프로그램
- 잦은 라이브러리 추가와 버전 동기화의 어려움을 해소하고자 등장
- Java 빌드 도구로 Ant, Maven, Gradle 등이 있다.
Maven
특징
- Java용 프로젝트 관리 도구
- 프로젝트의 전체적인 라이프 사이클을 관리하는 도구
- 필요한 라이브러리를 pom.xml에 정의해 놓으면, 해당 라이브러리와 그와 관련된 다른 라이브러리들까지 네트워크를 통해 자동으로 다운 받아준다.
- 간단한 설정을 통한 배포 관리가 가능하다.
- junit : 단위 테스트 프레임워크. 테스트 단계를 거치기 위해 의존 설정을 해준다.
Maven LifeCycle
- LifeCycle : 미리 정해진 빌드 순서
- 빌드 순서 : compile -> test -> package
Build LifeCycle
- Default : 일반적인 빌드 프로세스를 위한 모델
- Clean : 빌드 시 생성되었던 파일들을 삭제하는 단계
- Validate : 프로젝트가 올바른지 확인하고 필요한 모든 정보를 사용할 수 있는지 확인하는 단계
- Compile : 프로젝트의 소스코드를 컴파일하는 단계
- Test : 유닛 테스트를 수행하는 단계
- Package : 실제 컴파일된 소스 코드와 리소스들을 배포를 위한 jar, war 등의 파일로 패키지하는 단계
- Verify : 통합 테스트 결과에 대한 검사를 실행하여 품질 기준을 충족하는지 확인하는 단계
- Install : 패키지를 로컬 저장소에 설치하는 단계
- Site : 프로젝트 문서와 사이트를 작성, 생성하는 단계
- Deploy : 만들어진 패키지를 원격 저장소에 release 하는 단계
단계(Phase)
- Build LifeCycle의 각각 단계
- 의존관계를 가지고 있어서, 이전 단계의 Phase가 모두 수행되어야 해당 Phase를 수행할 수 있다.
- Dependency : 모든 빌드 단계는 이전 단계가 성공적으로 실행되었을 때 실행된다.
Maven 설정파일 : settings.xml
settings.xml
- 메이븐 빌드 툴 관련 설정 파일
- MAVEN_HOME/conf 디렉토리에 위치
- 메이븐을 빌드할 때 로컬 저장소의 기본 설정인 'USER_HOME/.m2/repository'를 settings.xml에서 변경할 수 있다.
Maven 설정파일 : pom.xml
POM(Project Object Model, 프로젝트 객체 모델)
- POM은 pom.xml 파일을 말한다.
- pom.xml에 필요한 라이브러리를 정의하는 것을 '프로젝트 모델링'이라고 한다
- pom.xml은 메이븐을 이용하는 프로젝트의 root에 존재하는 xml 파일
- 하나의 자바 프로젝트에 빌드 툴을 maven으로 설정하면, 프로젝트 최상위 디렉토리에 pom.xml 파일이 생성
- pom.xml은 프로젝트마다 1개씩이다.
- pom.xml만 보면 프로젝트의 모든 설정, 의존성을 알 수 있다.
- 프로젝트 정보(프로젝트 이름, 라이센스, 빌드 성정(소스, 리소스, 라이프 사이클 별 실행한 plugin 등 빌드 관련 설정)
pom.xml 구성
- modelVersion : POM model의 버전
- parent : 프로젝트의 계층 정보
- groupId : 프로젝트를 생성하는 조직의 고유 아이디를 결정. 일반적으로 도메인 이름을 거꾸로 적는다.
- artifactId : 프로젝트 빌드 시 파일 대표이름. groupId 내에서 유일해야 한다.
- version : 프로젝트의 현재 버전, 프로젝트 개발 중일 때는 SNAPSHOT을 접미사로 사용.
- packaging : 패키징 유형 (jar, war, ear 등)
- name : 프로젝트, 프로젝트 이름
- description : 프로젝트에 대한 간략한 설명
- url : 프로젝트에 대한 참고 Reference 사이트
- properties : 버전 관리
- dependencies : 프로젝트와 의존 관계에 있는 라이브러리들을 관리
- build : 빌드에 사용할 플러그인 목록