본문 바로가기
개발일기

03. 빌드(build)

by 김엉배 2024. 1. 8.
728x90
반응형

 

 

2024.01.08(월)

 

인텔리제이에서 Spring + Tomcat 개발환경을 세팅을 진행 중 빌드하는 과정에서 삽질을 많이 했었다.

세팅을 마치고 보면 자그마한 실수였는데 소모 시간은 너무 많았다. 억울해서라도 빌드에 대해 짚고 넘어가야겠다.

 


 

1)  빌드(Build)란?

 

자바 프로젝트를 빌드하는 과정은 소스 코드를 컴파일하고, 라이브러리를 관리하며, 실행 가능한 JAR 파일이나 WAR 파일을 생성하는 등의 작업을 포함하며, 주로 빌드 도구를 사용하여 이러한 작업들을 자동화하게 된다.  대표적인 자바 빌드 도구로는 Apache Maven, Gradle, Ant 등이 있다.

 


 

2)  빌드 도구 (Build Tool) 비교

Apache Maven:

  1. 개요:
    • Maven은 Apache Software Foundation에서 관리하는 자바 프로젝트 관리 및 빌드 도구.
    • 컨벤션으로 기반한 프로젝트 구조, 의존성 관리, 라이프사이클과 플러그인을 강조.
  2. 설정 파일:
    • pom.xml 파일에 프로젝트 설정을 기술하며, XML 기반의 문법을 사용.
  3. 의존성 관리:
    • Maven은 중앙 저장소에서 의존성을 다운로드하고 관리하는데 중점을 둔다.
    • 의존성 버전 충돌 문제를 자동으로 해결.
  4. 라이프사이클:
    • 빌드 수명주기(lifecycle)를 정의하고, 각 수명주기에 특정 단계(goal)들이 실행.
    • 일반적인 라이프사이클: clean, validate, compile, test, package, install, deploy
  5. 플러그인:
    • Maven은 풍부한 플러그인 생태계를 제공하며, 플러그인은 프로젝트 빌드 과정을 확장.

 

 


 

Gradle:

  1. 개요:
    • Gradle은 Groovy DSL 또는 Kotlin DSL을 사용하여 프로젝트를 구성하는 빌드 도구.
    • Ant와 Maven의 장점을 결합하며, 유연하면서도 간결한 빌드 스크립트를 제공.
  2. 설정 파일:
    • build.gradle 파일에 프로젝트 설정을 기술하며, Groovy 또는 Kotlin을 사용하여 빌드 스크립트를 작성한다.
  3. 의존성 관리:
    • Maven과 유사하게 중앙 저장소에서 의존성을 관리하지만, Groovy나 Kotlin의 코드 블록을 통해 더 유연하게 의존성을 다룸.
  4. 라이프사이클
    • Maven과는 달리 라이프사이클이 고정되어 있지 않고, 개발자가 필요한 태스크를 정의하고 실행할 수 있다.
  5. 플러그인:
    • Maven과 마찬가지로 풍부한 플러그인을 지원하며, 필요한 기능을 확장할 수 있다.

 

 


 

 

Apache Ant:

  1. 개요:
    • Ant는 Apache Software Foundation에서 개발한 자바 기반의 빌드 도구로, XML을 사용하여 빌드 스크립트를 정의.
    • 초기에 Maven 등장 이전에 많이 사용되었고, 간단하고 직관적인 구조를 가지고 있다.
  2. 설정 파일:
    • build.xml 파일에 프로젝트 설정을 기술하며, XML을 사용.
  3. 의존성 관리:
    • Maven이나 Gradle과 달리 명시적인 의존성 관리가 어려워, 라이브러리를 수동으로 관리해야 한다.
  4. 라이프사이클:
    • 라이프사이클 개념이 없고, 태스크(Task)를 통해 빌드 프로세스를 구성.
  5. 플러그인:
    • Ant는 플러그인의 개념이 없고, 별도의 확장을 위해서는 직접 작성해야 한다.

 


 

- Maven은 전통적이고, Maven 중앙 저장소에서 호스팅 되는 라이브러리를 적극적으로 활용하는 경향이 있다.
- Gradle은 유연성과 간결한 DSL을 강조하여 현대적인 프로젝트에 더 적합할 수 있다.
- Ant는 상대적으로 덜 사용되지만, 간단하고 직관적인 빌드 스크립트를 작성할 수 있어 특정 상황에 유용할 수 있다.

 

 

728x90
반응형

'개발일기' 카테고리의 다른 글

06. 자바(Java) 이미지 파일  (60) 2024.01.22
05. JSP(JavaServer Pages)  (49) 2024.01.17
04. 자바스크립트 eval() 함수  (35) 2024.01.11
02. 이클립스(Eclipse) VS STS(Spring tool Suite)  (27) 2024.01.03
01. 톰캣  (25) 2024.01.02