반응형

📝빌드

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

 

📝빌드 관리 툴

Ant, Maven, Gradle

소스 코드를 컴파일하고 테스트하며, 실행 가능한 애플리케이션 또는 라이브러리를 생성하는 과정

 

📝Maven

  • Ant 대체하기 위해 개발
  • 라이프 사이클이 존재
  • XML 기반
groupId 일반적으로 사이트 도메인을 역순으로 적어 사용 (company.IT → IT.company) [변동이 없음]
artifactId 다른 프로젝트와 구분할 수 있는 id 작성 (programmer_web)
version : 프로젝트 버전
name : 프로젝트 이름
description : 프로젝트 간략한 설명
properties : pom.xml 파일내에서 빈번하게 사용되는 중복 상수 정의 영역
해당 영역의 상수를 사용하기 위해서는 $(태그명)의 형태로 사용하면 됨
dependencies : maven repository에서 가져온 라이브러리 주입 xml 작성
build : 프로젝트 빌드(배포)와 관련된 정보 설정

 

 

 

📝Ant

  • XML 기반
  • 빌드의 기능만 가짐
  • 소규모 프로젝트에서 사용하기 간단하고 쉬움
  • 대규모 프로젝트에서 관리하기 복잡해지는 경향이 존재
  • 빌드 라이프 사이클이 존재 안 해 직접 처리 필요 
Ant 구조
<project name="MyProject" default="dist" basedir=".">
    <property name="src" location="src"/>
    <property name="build" location="build"/>
    <property name="dist" location="dist"/>

    <target name="init">
        <mkdir dir="${build}"/>
    </target>

    <target name="compile">
        <javac scdir="${src}" destdir="${build}"/>
    </target>

    <target name="dist" depends="compile">
        <mkdir dir="${dist}/lib"/>

        <jar jarfile="${dist}/lib/MyProject-${DSTAMP}.jar" basedir="${build}"/>
    </target>
</project>
출처: https://cornswrold.tistory.com/216 [평범한개발자노트:티스토리]

📝빌드 라이프 사이클

Maven 의 경우 빌드 순서가 있다. 이를 라이프사이클(Lifecycle)이라 한다.

Maven 빌드 라이프 사이클

Clean=> build 후 만들어지는 Target의 디렉터리를 삭제한다.
Validate=> 올바른 Pom.xml인지 확인한다.
Compile=> 의존성들을 가져오고, Target/classes 디렉터리에 빌드한다.
Test=> 테스트 코드를 실행한다.
Package=> Test 상태가 성공적으로 실행된 다음에 실행되며 War 나 Jar 파일같은 결과물을 생성한다. 
Install=> 빌드된 결과물을 내부 메이븐 저장소로 보낸다. 
($HOME/.m2/repository)Deploy=> 결과물을 배포한다.(보통 nexus 같은 사내저장소로 배포)

출처: https://cornswrold.tistory.com/70 [평범한개발자노트:티스토리]

 

📝Gradle

  • Groovy 스크립트 활용한 빌드 관리도구
  • 안드로이드 프로젝트 표준 빌드 시스템
  • Maven에 비해 더 빠른 처리 속도 (최대 100배)
  • Maven에 비해 더 간결한 구성이 가능 (가독성이 좋다)
  • 설정 주입시 프로젝트 조건 체크할 수 있어 프로젝트별 주입 설정 가능
repository : 라이브러리 저장된 위치 설정
mavenCentral : 기본 Maven Repository [자사에서 따로 관리하는 게 있으면 그걸 설정할 수도 있다.]
dependencies : 라이브러리 주입
ext : 전역변수 설정

 

 

 

 

 

  • Gradle Wrapper
    • Gradle을 실행하기 위한 스크립트로, 프로젝트와 함께 배포되며 Gradle을 설치하지 않아도 빌드 작업을 실행할 수 있도록 합니다. (gradle-wrapper.properties 파일에 지정된 gradle 버전을 다운로드하고 실행)
  • gradle build
    • 프로젝트를 빌드하기 위해 필요한 모든 작업을 수행합니다.
  • gradle clean
    • Gradle의 빌드 환경을 초기화하는 데 사용됩니다. 이전 빌드 결과물을 삭제하여 새롭게 빌드할 수 있도록 합니다.
  • gradlew.bat
    • 윈도우 운영 체제에서 Gradle을 실행하는 데 사용되는 배치 파일
  • gradlew
    • 리눅스 및 맥 OS X와 같은 유닉스 기반 운영 체제에서 Gradle을 실행하는 데 사용되는 스크립트
  • gradle/wrapper/gradle-wrapper.properties
    • gradle 버전 명시
  • gradle/wrapper/gradle-wrapper.jar
    • gradle 버전에 맞는 wrapper 설치
  • wrapper
    • gradle을 실행시키는 코드가 들어있는 jar파일


동작과정

  1. gradle/wrapper/gradle-wrapper.properties에 명시된 gradle 버전을 읽는다
  2. gradle 버전에 명시된 대로 gradle 버전을 다운 받는다 → gradle/wrapper/gradle-wrapper.jar
  3. gradlew을 통해 실행시키면 필요한 Jar파일을 종속성에 추가한다

 

📝Groovy 스크립트

  • JVM에서 실행되는 스크립트 언어
  • 문법이 Java와 매우 유사
  • Java와 호환이 되며 Java 클래스 파일을 그대로 Groovy 클래스에 이용 가능

 

📝스프링 부트

스프링은 기능 사용하기 위해 설정에 많은 시간이 소요 되는 반면(root-context에 xml 많이 적어야하는 경우) 스프링 부트는 자동설정 이용하기 때문에 미리 설정되어 있는 프로젝트를 이용하면 편리 XML 설정 없이 자바 코드를 통해 설정 가능 (버전 관리 해주기 때문에 다양한 패키지 허용) 

 

 

반응형