위로 아래

빌드

빌드(Build)

  1. 소스 코드 파일을 컴퓨터에서 실행할 수 있는 독립 소프트웨어 가공물로 변환하는 과정이나 결과물
  2. 소스코드(java), 프로젝트에서 쓰인 각가의 파일 및 자원(.xml, .jpg, .jar, .properties)를 JVM이나 WAS가 인식할 수 있는 구조로 패키징하는 과정이나 결과물

 

빌드 도구 (Build tool)

  1. 프로젝트 생성, 테스트 빌드, 배포 등의 작업을 위한 프로그램
  2. 잦은 라이브러리 추가와 버전 동기화의 어려움을 해소하고자 등장
  3. Java 빌드 도구로 Ant, Maven, Gradle 등이 있다.

 

 


Maven

특징

  1. Java용 프로젝트 관리 도구
  2. 프로젝트의 전체적인 라이프 사이클을 관리하는 도구
  3. 필요한 라이브러리를 pom.xml에 정의해 놓으면, 해당 라이브러리와 그와 관련된 다른 라이브러리들까지 네트워크를 통해 자동으로 다운 받아준다.
  4. 간단한 설정을 통한 배포 관리가 가능하다.
  5. junit : 단위 테스트 프레임워크. 테스트 단계를 거치기 위해 의존 설정을 해준다.

 

 


Maven LifeCycle

  1. LifeCycle : 미리 정해진 빌드 순서
  2. 빌드 순서 : compile -> test -> package

 

Build LifeCycle

  1. Default : 일반적인 빌드 프로세스를 위한 모델
  2. Clean : 빌드 시 생성되었던 파일들을 삭제하는 단계
  3. Validate : 프로젝트가 올바른지 확인하고 필요한 모든 정보를 사용할 수 있는지 확인하는 단계
  4. Compile : 프로젝트의 소스코드를 컴파일하는 단계
  5. Test : 유닛 테스트를 수행하는 단계
  6. Package : 실제 컴파일된 소스 코드와 리소스들을 배포를 위한 jar, war 등의 파일로 패키지하는 단계
  7. Verify : 통합 테스트 결과에 대한 검사를 실행하여 품질 기준을 충족하는지 확인하는 단계
  8. Install : 패키지를 로컬 저장소에 설치하는 단계
  9. Site : 프로젝트 문서와 사이트를 작성, 생성하는 단계
  10. Deploy : 만들어진 패키지를 원격 저장소에 release 하는 단계 

 

단계(Phase)

  1. Build LifeCycle의 각각 단계
  2. 의존관계를 가지고 있어서, 이전 단계의 Phase가 모두 수행되어야 해당 Phase를 수행할 수 있다.
  3. Dependency : 모든 빌드 단계는 이전 단계가 성공적으로 실행되었을 때 실행된다.

 

 

 


Maven 설정파일 : settings.xml

settings.xml

  1. 메이븐 빌드 툴 관련 설정 파일
  2. MAVEN_HOME/conf 디렉토리에 위치
  3. 메이븐을 빌드할 때 로컬 저장소의 기본 설정인 'USER_HOME/.m2/repository'를 settings.xml에서 변경할 수 있다.

 

 

 


Maven 설정파일 : pom.xml

POM(Project Object Model, 프로젝트 객체 모델)

  1. POM은 pom.xml 파일을 말한다.
  2. pom.xml에 필요한 라이브러리를 정의하는 것을 '프로젝트 모델링'이라고 한다
  3. pom.xml은 메이븐을 이용하는 프로젝트의 root에 존재하는 xml 파일
  4. 하나의 자바 프로젝트에 빌드 툴을 maven으로 설정하면, 프로젝트 최상위 디렉토리에 pom.xml 파일이 생성
  5. pom.xml은 프로젝트마다 1개씩이다.
  6. pom.xml만 보면 프로젝트의 모든 설정, 의존성을 알 수 있다.
  7. 프로젝트 정보(프로젝트 이름, 라이센스, 빌드 성정(소스, 리소스, 라이프 사이클 별 실행한 plugin 등 빌드 관련 설정)

 

pom.xml 구성

  1. modelVersion : POM model의 버전
  2. parent : 프로젝트의 계층 정보
  3. groupId : 프로젝트를 생성하는 조직의 고유 아이디를 결정. 일반적으로 도메인 이름을 거꾸로 적는다.
  4. artifactId : 프로젝트 빌드 시 파일 대표이름. groupId 내에서 유일해야 한다.
  5. version : 프로젝트의 현재 버전, 프로젝트 개발 중일 때는 SNAPSHOT을 접미사로 사용.
  6. packaging : 패키징 유형 (jar, war, ear 등)
  7. name : 프로젝트, 프로젝트 이름
  8. description : 프로젝트에 대한 간략한 설명
  9. url : 프로젝트에 대한 참고 Reference 사이트
  10. properties : 버전 관리
  11. dependencies : 프로젝트와 의존 관계에 있는 라이브러리들을 관리
  12. build : 빌드에 사용할 플러그인 목록