ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [PROGRAMMING] 빌드와 빌드 도구
    programming 2020. 7. 25. 16:12

    빌드

    소스 코드에서 실행가능한 애플리케이션으로 변환하는 과정 또는 그에 대한 결과물

    개발자가 작성한 소스 코드 (.java), 프로젝트에서 쓰인 각각의 파일 및 자원 (.xml, .properties, .jpg)을 JVM이나 톰캣 같은 WAS가 인식할 수 있는 구조로 패키징하는 과정 및 결과물

     

    빌드 도구 ( Build Tool )

    소스 코드에서 컴파일, 테스트 등을 통해서 실행가능한 애플리케이션을 자동 생성해주는 프로그램

    빌드 자동화는 소프트웨어 개발자가 일상 업무에서 수행하는 다양한 작업을 자동화 하는 것

    1. 종속성 다운로드 ( 라이브러리 자동 추가 및 관리 )

    2. 소스코드를 바이너리 코드로 컴파일

    3. 바이너리 코드를 패키징

    4. 테스트 실행

    5. 배포

     

    빌드 도구를 왜 사용하는가?

    웹, 앱 프로그래밍 개발이 발전하면서 어플을 개발함에 있어 필요한 라이브러리들도 많아지게 되었다.

    이렇게 많은 라이브러리를 직접 다운받아서 추가하여 사용하는 방법도 있지만 많은 번거로움이 따르게 된다.

    이 때문에 빌드 도구를 사용한다.

     

    장점

    - 정형화된 작업에 사람이 관여하지 않아도 되니 실수가 줄어듬

    - 개발에만 집중할 수 있다

    - 빌드 스크립트가 항상 관리 되므로 낡은 정보가 될 위험이 줄어듬

     

     

    종류

    - Ant

    Java기반의 빌드 도구로 다른 빌드 도구보다 역사가 오래되었다. Ant는 개발자가 원하는 것을 개발할 수 있다는 유연성에 큰 장점이 있다.

     

    특징

    1. XML 기반의 빌드 스크립트를 개발

    2. 규칙이 없다.

    3. 명확한 빌드 절차에 대한 정의가 필요하다.

    4. 생명주기를 갖지 않아 각각의 Target에 대한 의존 관계와 작업을 정의해 주어야 한다.

     

    단점

    1. 유연성이 높으나 프로젝트가 복잡해지는 경우 Build 과정의 이해가 어렵다.

    2. XML, Remote Repository를 가져올 수 없다.

    3. 스크립트의 재사용이 어렵다.

    ============================================================================

    - Maven

    Maven은 프로젝트에 필요한 모든 Dependency를 리스트 형태로 Maven에게 알려 관리할 수 있도록 돕는 방식

     

    특징

    1. 프로젝트에 필요한 모든 종속성을 리스트 형태로 Maven에게 알려서 종속성을 관리

    2. XML, Repository를 가져올 수 있다. ('POM.xml'이라는 Maven 파일에 필요한 jar, class path 를 선언하면 직접 다운로드할 필요가 없이 Repository에서 자동으로 필요한 라이브러리 파일을 불러와준다.

     

    단점

    1. 라이브러리가 서로 종속할 경우 XML이 복잡해진다.

    2. 계층적인 데이터를 표현하기엔 좋지만 플로우나 조건부 상황을 표현하기엔 어려움

    3. 편리하지만 맞춤화된 로직 실행이 어려움

    ============================================================================

    - Gradle

    Gradel은 JVM 기반의 빌드 도구로 기존의 Ant와 Maven을 보완하였다.

    따라서 Java 혹은 Groovy를 이용해 로직을 개발자의 의도에 따라 설계할 수 있다.

     

    특징

    1. 오픈소스 기반의 build 자동화 시스템으로 Groovy 기반 DSL로 작성

    2. Build-by-convention을 바탕으로 함 : 스크립트 규모가 작고 읽기 쉬움

    3. 멀티 프로젝트의 빌드를 지원하기 위해 설계됨

    4. 설정 주입 방식

     

     

     

    컴파일

    개발자가 작성한 소스 코드를 컴퓨터가 이해할 수 있는 바이너리 코드로 변환하는 과정

    컴파일은 빌드의 부분집합

     

    링크

    A 소스에서 B 소스의 함수를 호출하는 경우 컴파일만 하게 되면 A가 B에 존재하는 함수를 찾을 수 없음.

    A와 B를 연결해주는 작업을 링크라고 함.

    여러 개로 분리된 소스파일들을 컴파일한 결과물에서 최종 실행 가능한 파일을 만들기 위해 필요한 부분을 찾아서 연결

    Java에서는 링크 과정이 없음

Designed by Tistory.