[스프링 입문] 빌드 관리 도구

enxnong·2023년 4월 16일
0

Spring

목록 보기
2/26

김영한님의 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술을 보면서 공부한 내용입니다.

빌드 관리 도구란?

스프링을 사용하면 MavenGradle 을 많이 들을 수 있다. 이 두 가지는 빌드 관리 도구이다. 소스 코드에서 어플리케이션 생성을 하면서 여러가지 여부 라이브러리를 사용하는데, 이 빌드 관리 도구는 사용자가 직접 관리할 필요 없이 필요한 라이브러리들을 자동으로 관리한다.

빌드란?

소스 코드 파일을 컴파일에서 실행할 수 있는 가공물로 변환하는 과정 또는 결과물이다. 즉, 우리가 작성한 소스 코드(java), 프로젝트에서 쓰인 각각의 파일 및 자원등(.xml,jpa,jpg,properties)을 jvm이나 톰캣같은 WAS가 인식할 수 있는 패키징하는 과정 및 결과물이라고 할 수 있다.


Maven이란?

Maven은 프로젝트의 전체적인 라이프 사이클을 관리하는 빌드툴이다. pom.xml 파일을 통해 정형화된 빌드 시스템으로 프로젝트를 관리해 준다. 필요한 라이브러리들을 특정 문서(pom.xml)에 정의해 놓으면 사용할 라이브러리뿐만 아니라 해당 라이브러리가 작동하는데 필요한 다른 라이브러리들까지 관리하여 네트워크를 통해서 자동으로 다운로드해 준다.

Maven의 특징

  1. LifeCycle : 정해진 Lifecycle에 의하여 작업을 수행하며, 전반적인 프로젝트 관리 기능을 포함하고 있다.
  2. 프로젝트 모델링 : Maven은 필요한 라이브러리를 pom.xml에 정의한다.
  3. 플러그인을 통한 전역적인 재사용 : Maven은 빌드에 대한 대부분의 책임을 각 플러그인에 위임한다. 이러한 플러그인들은 Maven저장소(Repository)에 저장되어 진다.

Maven 라이프 사이클


Maven에서 미리 정의하고 있는 빌드 순서를 라이프 사이클(Life Cycle)이라고 한다.

각 빌드 단계를 Phase라고 하는데, 이런 각 phase들은 의존 관계를 가지고 있다. 즉, 각각의 phase는 의존 관계를 가지고 있어 해당 phase가 수행되려면 이전 단계의 phase가 모두 수행되어야 한다.

Maven의 장점과 단점

  1. 라이브러리의 관리를 쉽게 할 수 있다.
  2. 프로젝트의 작성부터 컴파일, 페트스 등 프로젝트 라이프 사이클에 포함되는 각 테스트를 지원해 준다.
  3. war 파일 기반의 배포용으로도 자주 사용된다.
  4. 작업 환경이 다른 개발자들이 소스코드를 공유하기 위해 메이븐을 사용할때 pom.xml을 같이 공유하면 개발환경이 다르더라도 에러가 터지지 않고 정상적으로 실행된다.

Maven 설정파일

📌 setting.xml

메이븐은 빌드 할 때 의존 관계에 있는 라이브러리, 플러그인을 중앙 저장소에서 개발자 PC로 다운로드한다. 다운로드한 라이브러리는 개발자 PC의 로컬 저장소에 위치하는데, setting.xml를 통해 원하는 로컬 저장소의 경로를 지정 및 변경할 수 있다.

📌 pom.xml

root에 존재하는 xml 파일로, 프로젝트마다 1개씩 가지고 있다. 필요한 라이브러리를 pom.xml에 정의하면, 해당 라이브러리 실행, 설치에 필요한 다른 라이브러리까지 관리하고 네트워크를 통해서 자동으로 다운로드해 준다.

Gradle이란?

Gradle은 Ant, Maven과 같은 이전 세대 빌드 도구의 단점을 보완하고 장점을 취합하여 만든 오픈소스로 공개되어 있으며 그루비(Groovy)를 기반으로 한 빌드 자동화 도구이다.

💡 Groovy : JVM에서 사용되는 스크립트 언어로, 문법이 Java와 매우 유사하다. Java와 호환이 되며 Java 클래스 파일을 그대로 Groovy 클래스 파일로 사용 가능하다.

Gradle의 특징

  1. 간결함 : xml의 구조적인 장점이 있지만 문서의 양 자체가 비대하지는 단점이 있는데, Gradle은 코딩에 의한 간결한 정의가 가능하다.
  2. 재사용에 용이 : maven 의 경우 멀티 프로젝트에서 특정 설정을 다른 모듈에서 사용하려면 상속을 받아야 하지만 gradle은  설정 주입 방식(Configuration Injection)으로 정의하여 Maven의 상속 구조보다 재사용에 용이하다.
  3. 구조적인 장점Build Script를 xml이 아닌 Groovy기반의 DSL(Domain Specific Language)를 사용하여 코드로서 설정 정보를 구성하기 때문에 구조적인 장점이 있다.

Gradle의 장점과 단점

  1. 멀티 프로젝트에 용이하다.
  2. 확장성이 뛰어나다.
  3. maven 은 프로젝트가 커질수록 빌드 스크립트의 내용이 길어지고 가독성이 떨어지는 반면, gradle 은 훨씬 적은 양의 스크립트로 짧고 간결하게 작성할 수 있다.

Gradle 설정파일

📌 setting.gradle

프로젝트 구성을 설정할 때 작성하는 파일이다. 보통 프로젝트간의 의존성 및 서브프로젝트, 교차프로젝트 같은 멀티 프로젝트를 구성할 때 사용한다. 단, 싱글 프로젝트의 경우에는 생략이 가능하다.

📌 build.gradle

빌드에 대한 모든 기능을 정의하는 파일이다. 프로젝트에서 사용하는 환경 설정, 빌드 방법, 라이브러리 정보 등을 기술함으로써 빌드 및 프로젝트의 관리환경을 구성한다.

profile
높은 곳을 향해서

0개의 댓글