본문 바로가기
개발/Spring | Java | Error

Maven과 Gradle, Build 방법

by 하얀 루돌프 2022. 3. 13.

Build Tool 선택

  • Maven
  • Gradle

Build란?

  1. 필요한 라이브러리를 다운받고 classpath에 추가합니다.
  2. 소스 코드를 컴파일 합니다.
  3. 테스트를 실행합니다.
  4. 컴파일된 코드를 packaing 합니다 -> jar / war / zip etc
  5. packing된 파일을 주로 artifacts라고 부르고, 서버나 레퍼지토리에 배포합니다.

Build Tool은 이러한 Task들을 자동화하게 해주고 그런 Task를 기술할수 있게 도와줍니다. 그렇게 기술된 파일을 빌드 스크립트로 부릅니다. 그러면 어디에 어떻게 기술하는지가 각 도구별로 다르겠죠? Apache Maven은 XML로 기술하고 Gradle은 Groovy나 Kotlin으로 빌드 스크립트를 작성합니다.


Maven

  • Gradle은 build.gradle, Maven은 pom.xml에서 관리

Maven은 앞에서 말한 빌드 도구로써 주로자바기반의 프로젝트에서 많이 사용됩니다. XML기반으로 설정 모델을 제공하고 pom.xml 파일로 작성할 수 있습니다. 이 xml 파일만 보면 프로젝트 구조를 파악할 수 있는거죠. 즉, 무슨 라이브러리를 사용하나 (Dependency 들이 존재하고) 어떤 빌드 작업들이 있는지를 파악할 수 있습니다.

  • 빌드 도구로써 주로 자바기반의 프로젝트에서 많이 사용됩니다.
    XML기반으로 설정 모델을 제공하고 pom.xml 파일로 작성할 수 있습니다.
  • POM은 project object model의 약어입니다.
    Maven 프로젝트는 Project Object Model로 정의할 수 있는데요, 이 POM을 pom.xml로 기술하게 됩니다. 우리가 웹 문서를 html파일로 작성하면 브라우저가 Document Object Model인 DOM을 만드는 것 처럼 pom.xml을 작성하면 Maven이 POM을 만들고 그 POM에 의해서 프로젝트의 dependency가 다운받아지고 플러그인이 설치되고 합니다.
  • Maven은 archetypes라는 프로젝트 템플릿을 제공해서 매번 같은 설정을 반복하지 않게 도와줍니다.
  • 프로젝트에서 사용하는 외부 라이브러리인 dependency 를 관리해줍니다.
  • 플러그인과 외부 라이브러리를 분리하여 관리합니다.
  • dependency를 다운받는 Repository가 로컬이 될 수도 있고, Maven Central와 같은 공개된 Repository가 될 수도 있습니다. (nexus를 사용하면 비공개(Private) 레퍼지토리 생성가능)

Maven Dependency Scope

<scope>
compile: <scope />를 지정하지 않는 경우, 기본값으로 설정, 컴파일 의존성은 프로젝트의 컴파일, 테스트, 실행에 라이브러리가 필요 할 때 사용
provided: JDK 또는 컨테이너가 해당 라이브러리르 제공 할 때 설정, 즉 웹 애플리케이션 경우, JSP와 Servlet API등은 provided의 의존성으로 설정
runtime: 컴파일 시에는 사용되지 않으나, 실행과 테스트 시에는 필요할 때 설정, 대표적인 예가 JDBC 드라이버 
system: provided의존성과 비슷하지만, 사용자가 jar 파일의 위치를 지정한다는 점이 다름.
system의존성을 사용하려면 <systemPath>..</systemPath> 엘리먼트를 이용하여 jar 파일의 위치를 지정해야 합니다. 그러나 사용자마다 개발 환경이 다를 수 있으므로 프로퍼티를 이용하여 jar 파일의 위치를 지정 하는 것이 권장
test: 실행에는 사용하지 않으나, 테스트 컴파일 및 실행 시에 필요할 때 설정, 대표적인 예로는 easymock, junit 등이 있습니다. 
</scope>

Gradle

Gradle은 또 다른 Build Tool로서 Groovy 기반으로 빌드 스크립트를 작성하게 도와줍니다.
최근에는 코틀린도 지원해서 코틀린 기반으로 Build Script를 작성할 수 있습니다.


Spring기반 어플리케이션 프로젝트 만들기

Installing the Spring Boot CLI on Windows

  1. 사전작업
    윈도우 JDK 설치
  2. 다운로드 및 배치
    https://docs.spring.io/spring-boot/docs/current/reference/html/getting-started.html#getting-started.installing.cli.manual-installation 클릭하여 다운로드
    spring-2.5.0.zip 압축해제
    spring-2.5.0 폴더를 C:\ 루트로 이동
  3. 환경변수 등록
    (윈도우10) Win+X, Y --- 고급 시스템 설정 클릭
    시스템 속성 --- 고급 --- [환경 변수(N)...]
    환경 변수 --- 시스템 변수(S) --- [새로 만들기(W)...]
    새 시스템 변수 --- 변수 이름(N): SPRING_HOME --- 변수 값(V): C:\spring-2.5.0 --- [확인]
    환경 변수 --- 시스템 변수(S) --- Path 선택 --- [편집(I)...] %SPRING_HOME%\bin 추가 --- [확인]

spring init --build maven -j 16 -g org.prgrms -a kdt-spring-demo -n kdt-spring-demo -x kdt-spring-demo
-x 압축해제 
-g 그룹ID
-a 프로젝트 명
-n name

spring initializr 프로젝트 생성시 도움되는 사이트
위 명령어로 매번 생성하기에는 직관적이지 않아, 사이트에서 생성할 수 있습니다.

하지만 IntellJ로도 프로젝트 생성 할수 있습니다.