TIL #14 220503

Subeeen·2022년 5월 3일
0

Today I Learned

목록 보기
14/18
post-thumbnail

오늘 써 볼 학습 내용은 빌드 도구에 관한 내용이다.

빌드 도구 사용

빌드 도구를 사용하는 이유

빌드 도구는 응용프로그램 빌드, 테스트, 배포 등 소프트웨어 개발 생명 주기를 자동화할 수 있도록 도와준다. 빌드 도구는 다음과 같은 다양한 장점을 제공한다.

  • 프로젝트에 적용되는 공통적인 구조를 제공하기 때문에 동료 개발자가 프로젝트를 좀 더 편안하게 받아들인다.
  • 응용프로그램을 빌드하고 실행하는 반복적이고, 표준적인 작업을 설정한다.
  • 저수준 설정과 초기화에 들이는 시간을 절약하므로 개발에만 집중할 수 있다.
  • 잘못된 설정이나 일부 빌드 과정 생략 등으로 발생하는 오류의 범위를 줄인다.
  • 공통 빌드 작업을 재사용해 이를 다시 구현할 필요가 없으므로 시간을 절약한다.

자바 커뮤니티에서 사용하는 두 가지 유명한 빌드 도구인 메이븐과 그레이들을 알아보자.

메이븐

메이븐은 자바 커뮤니티에서 가장 유명한 빌드 도구이다. 메이븐을 이용해 소프트웨어의 디펜던시와 빌드 과정을 작성할 수 있다.

프로젝트 구조

메이븐은 유지보수에 도움되는 구조를 처음부터 제공한다. 메이븐 프로젝트를 시작할 때 다음 두 메인 폴더를 제공한다.

src/main/java : 프로젝트에 필요한 모든 자바 클래스를 개발해 저장하는 폴더이다.
src/test/java : 프로젝트의 테스트 코드를 개발해 저장하는 폴더이다.

src/main/resources : 응용프로그램에서 사용하는 텍스트 파일 등 추가 지원을 포함하는 폴더이다.
src/test/resources : 테스트에서 사용할 추가 자원을 포함하는 폴더이다.

또, pom.xml 파일을 만들어 응용프로그램 빌드에 필요한 과정을 다양한 XML 정의로 지정해 빌드 프로세스를 정의한다.

빌드 파일

pom.xml 파일에 들어갈 다양한 요소들

  • project - pom.xml 파일의 최상위 수준 요소다.
  • groupId - 프로젝트를 만드는 조직의 고유 식별자를 지정한다.
  • artifactId - 빌드 과정에서 생성된 부산물의 고유한 기본 이름을 지정한다.
  • pakaging - 부산물에 사용할 패키지 형식(JAR, WAR, EAR 등)을 지정한다. 이 요소를 생략하면 JAR를 사용한다.
  • version - 프로젝트에서 생성하는 부산물 버전을 지정한다.
  • build - 플러그인, 자원 등 빌드 과정을 가이드하는 다양한 설정을 지정한다.
  • dependencies - 프로젝트의 디펜던시 목록을 지정한다.

메이븐 명령어

pom.xml을 설정한 다음에는 메이븐으로 프로젝트를 만들고 패키징한다. 그 때 필요한 기본 명령어들 몇 가지이다.

  • mvn clean : 빌드하기 전에 기존 빌드에서 생성된 부산물을 정리한다.
  • mvn compile : 프로젝트의 소스코드를 컴파일(기본적으로 생성된 target 폴더에 결과를 저장)한다.
  • mvn test : 컴파일된 소스코드를 테스트한다.
  • mvn package : JAR과 같은 적절한 형식으로 컴파일된 코드를 패키징한다.

pom.xml 파일이 저장된 디렉토리에서 mvn package명령을 실행하면 jar 파일이 생성된다.

그레이들

그레이들도 인기 있는 빌드 도구다. 메이븐이 있는데 그레이들을 쓰는 이유가 있다면, 메이븐은 XML을 이용하는데 가독성이 떨어진다. XML문법으로 명령어를 지정해야 하는데 익숙하지 않으면 쓰기 어려울 수 있다. 그레이들은 도메인 특화 언어를 적용시켜 결과적으로 더 자연스럽게 빌드를 지정, 쉽게 커스터마이즈 할 수 있으며 쉽게 이해할 수 있다.

빌드 파일

그레이들은 메이븐과 프로젝트 구조가 비슷하다. 다만 pom.xml 파일 대신, build.gradle 이라는 파일을 선언해야 한다. 또한, 여러 프로젝트 빌드와 설정 변수를 포함하는 settings.gradle 파일도 있다. 그레이들 빌드 파일은 메이븐 빌드 파일보다 확실히 간결하다.

그레이들 명령어

메이븐과 비슷하게 명령어로 빌드 과정을 실행할 수 있다. 그레이들의 각 명령은 태스크로 구성된다. test, build, clean 등 내장 테스크를 실행하거나 직접 태스크를 정의해 실행한다.

  • gradle clean : 이전 빌드에서 생성된 파일을 정리한다.
  • gradle build : 응용프로그램을 패키징한다.
  • gradle test : 테스트를 실행한다.
  • gradle run : application 플러그인의 mainClassName으로 지정된 메인 클래스를 실행한다.

gradle build 명령어를 실행하면 빌드 후 그레이들이 만든 build폴더에 JAR가 생성된 것을 확인할 수 있다.

profile
백엔드 개발 공부 중!

0개의 댓글