header-img
Info :
  1. 빌드(Build) ?
  2. 빌드 관리 도구
  3. 빌드 관리 도구가 동작하는 흐름
  4. 빌드관리 도구를 사용하는 이유
  5. Maven
  6. Gradle
  7. 번외
728x90

빌드(Build) ?

컴파일(Compile)과 링크(Link)를 합쳐서 부르는 용어

   - 컴파일(Compile) : 작성한 소스 코드를 컴퓨터가 이해할 수 있는 기계어로 변환하는 작업

   - 링크: obj 파일들을 연결하여 하나의 exe 파일을 만드는 작업

null
어셈블리 빌드 과정

소스코드 파일을 컴퓨터에서 실행할 수 있는 독립적인 형태로 변환하는 과정과 결과를 말함

 

빌드 관리 도구

소스코드에서 애플리케이션을 생성하면서 여러가지 외부 라이브러리를 사용하게 되는데,

빌드 관리도구는 사용자가 관리할 필요없이 필요한 라이브러리들을 자동으로 관리해주는 것

 

빌드 관리 도구가 동작하는 흐름

1. 소스코드(.java)를 컴파일하여 클래스 파일(.class) 생성

2. 코딩 규약에 맞게 작성했는지 확인

3. 코드를 정적으로 해석

4. test를 진행하고 테스트 결과나 커버리지 측정 결과를 리포트로 출력

5. JavaDoc.과 같은 문서를 작성함

6. 클래스 파일과 리소스 파일을 패키징하여 압축파일을 만듬(.jar 혹은 .war)

7. 압축 파일을 테스트 혹은 스테이징 환경에 배포

8. 압축 파일을 저장소에 등록

 

빌드관리 도구를 사용하는 이유

프로젝트 단위가 커지게 되면, 무엇을 빌드할지, 어떤 순서로 할지, 어떤 의존성이 있는지 모두 추적하기 쉽지 않기 때문에 빌드 프로세스를 수동으로 호출하는 것이 힘들어지게 된다.

이때 빌드 도구를 사용하게 되면 이를 일관성있게 관리할 수 있게 해준다.

 

Maven

- Java 전용 프로젝트 관리 도구로 Lifecycle 관리 목적 빌드 도구

- Apache 라이센스로 배포되는 오픈 소스 소프트웨어

- 기존의 Ant에는 '복잡한 처리를 하려면 빌드 스크립트가 장황해져 관리가 어려워'지는 단점과, '라이브러리 의존 관계를 관리하는 구조가 존재하지 않는' 단점이 있었는데, 이를 해결하기 위해 등장한 Build Tool 이다. - Ant 에 빌드 생명 주기 (lifecycle) 개념을 추가.

 

Maven의 특징

1. Lifecycle 관리 도구로, 정해진 생명 주기에 의해 작업을 수행하며, 전반적인 프로젝트 관리 기능을 포함하고 있음.

2. 필요한 라이브러리를 pom.xml 에 정의한다. 이를 프로젝트 모델링이라고 함.

   * pom(Project Object Model) : 프로젝트 정보(프로젝트 이름, 라이센스), 빌드 설정(소스, 리소스, lifecycle 별 실행한 plugin 등 빌드 관련 설정), 빌드 환경(사용자 환경 별로 달라질 수 있는 프로필 정보), POM 관계(의존 프로젝트, 모듈, 상위 프로젝트 등...) 을 담고 있음.

 

Gradle

- Maven을 대체할 수 있는 프로젝트 구성 관리 및 범용 빌드 툴

- Ant Builder와 Groovy script를 기반으로 구축되어 기존 Ant의 역할과 배포 Script의 기능을 모두 사용 가능

- Springboot 와 Andriod에서 사용됨

- 빌드 속도가 Maven에 비해 10~100배 가량 빠르며, jave, C/C++, Python 등을 지원

 

Gradle 특징

1. 코딩에 의한 간결한 정의가 가능해 가독성이 좋음

2. 설정 주입 방식(Configuration Injection)을 사용하므로 재사용에 용이

3. Build Script 를 Groovy 기반의 DSL(Domain Specific Language)를 사용하여 코드로서 설정 정보를 구성하므로 구조적인 장점이 있음.

4. 별도의 설치 없이 Gradle wrapper 를 이용하여 빌드를 지원하여 편리하다.

5. 멀티 프로젝트 빌드를 지원하기 위해 설계된 빌드 관리 도구

6. Maven을 완전 지원

 

번외

1. Make: 빌드 개념 확립

2. Ant: 범용성 높임 (= cross flatform 대응)

3. Maven: 규칙 기반의 빌드 스크립트 작성 효율 향상. 규칙을 따라 프로젝트 구조(디렉터리 구조)를 만든다.

4. Gradle: 스크립트 언어로 회귀하여 유연성을 높혔다.

 

 

 

728x90
더보기
FRONTEND/공부