티스토리 뷰
여태 빌드도구를 참 다양하게 사용해봤다.
그 역사를 읊자면,,,,
토이프로젝트로 스프링프레임워크 기반의 api 서버를 개발할때는 메이븐으로 빌드했었고,
어플개발할때는 안드로이드스튜디오의 표준 빌드 도구인 그레들을 사용했고,
현재 투입된 현업 플젝에서는 앤트로 빌드하고 있다.......
각각 어떻게 다른지 차이점이 궁금해서 특징을 정리해보았다.
자세한건 다음 포스팅에서~~ 총총총

- 자바 빌드 도구 3가지 소개 (Ant, Maven, Gradle)
1. Apache Ant
앤트는 플랫폼(운영체제)등에 의존하지 않는 자바 프로그램 개발을 대상으로 한 오픈 소스 빌드 도구이다.
XML로 작성된 빌드 파일로 빌드를 실행한다. 앤트는 자바에 널리 보급된 최초의 빌드 도구이다. 한때는 '자바 빌드 == 앤트' 라고 불릴 정도였다. 하지만 자바 개발이 진화하고 더욱 규모가 크고 복잡한 개발에 이용되면서, 앤트의 한계가 드러났다.
- 앤트의 한계
앤트는 '빌드 작업만 수행하는 도구' 였다. 프로그램의 컴파일 및 JAR 파일 패키징 같은 기능은 있었지만, 빌드한 프로그램의 테스트나 JavaDoc 문서 생성 같은 빌드 이외의 작업을 할 때는 빌드 파일을 작성하기가 복잡하고 까다로웠다. 그래서 빌드에 국한하지 않고, 애플리케이션 개발 전 과정을 자동화할 수 있게 개발한 도구가 메이븐이다.
2. Maven - 앤트의 진화 버전 ,이클립스 인텔리제이 내장 지원
메이븐은 앤트의 기본 개념을 따르고 있다. XML을 사용하여 빌드 파일을 기술하고, 작성한 내용을 바탕으로 다양한 처리를 실행한다.
메이븐의 빌드 파일은 앤트처럼 실행할 멍령을 하나하나 태그로 작성하는 것이 아니라 , 작업에 필요한 각종 정보를 기술한다.
예를 들어, 프로젝트에 포함된 소스 파일 정보, 라이브러리 정보, 리소스 파일 정보, 추가한 플로그인 정보 등 프로젝트 전반을 처리하는 데 필요한 정보를 기술한다.
반면, 처리내용은 Goal로 지정한다. 골은 메이븐에서 실행하는 작업의 목적을 지정한다.
예를 들어, 자바 애플리케이션 작성, 웹 에플리케이션 작성, JavaDoc 문서 작성 같은 작업을 골로 지정한다.
골은 플러그인으로 제공되어, 빌드 파일에 정보를 작성하면 지정할 수 있다.
메이븐 명령어를 실행할 때 골을 지정하면, 어떤 작업을 수행하여 무엇을 작성할지 지정할 수 있습니다.
골을 지정하면, 필요한 작업을 메이븐이 자동으로 진행합니다.
메이븐은 빌드 실행하는 사이에, 빌드 파일에 기술된 정보를 토대로 필요한 라이브러리를 자동으로 다운로드하여 포함시키는데, 이를 가능하게 하는 것이 중앙 저장소이다.
메이븐은 앤트에 표준으로 포함되어 있지 않았던 JUnit 테스트 및 Javadoc 문서 생성 등의 기능을 갖추고 있다. 단순한 빌드 도구가 아니라, 개발에 관한 다양한 기능을 메이븐만으로 수행할 수 있다.
또한, 플러그인을 사용하면 메이븐에 기능을 추가할 수 있다.
3. Gradle - 이클립스, 인텔리제이 내장지원
일반적으로 자바로 개발할 때 다른 언어도 함께 사용된다. 특히 서버 측 개발에 한 언어만 사용되는 경우는 매우 드물다.
JSP/서블릿을 사용한다면 HTML이나 자바스크립트를 사용할 것이다.
이러한 웹 페이지 언어뿐만 아니라, 서버 측 프로그램에서도 자바를 이용하는 부분에 자바 이외의 언어를 사용하기도 한다.
그 대표적인 예가 그루비이다.
그루비는 자바 가상 머신에서 동작하는 오픈 소스 스크립트 언어이다. 오랫동안 피보탈사 중심으로 개발됐는데, 지금은 아파치 소프트웨어 재단에 이관되었다. 그루비는 동적 언어이며 자바와 달리 작성한 스크립트를 컴파일할 필요 없이 직접 실행할 수 있기 때문에 웹 분야 등에 사용하기 편하다. 스프링 프레임워크에서도 그루비를 이용할 수 있다.
이처럼, 자바와 거의 같고, 스크립트 언어처럼 부담 없이 작성해서 바로 실행할 수 있는 특징을 가진 그루비를 사용해서
자바 빌드 도구를 만들었는데 , 그것이 바로 그레이들이다.
그루비는 XML보다는 자바에 가까운 느낌으로 기술할 수 있어서, 자바 프로그래머가 다루기 쉽다. 그레이들과 그루비는 서로 다른 곳에서 개발되고 있다.
그래이들은 '태스크'라는 개념을 이용하여 프로그램을 작성한다. 태스크는 예를 들면 프로그램 컴파일이나, 의존성 라이브러리 처리와 같이 용도별로 다양하게 준비되어 있다.
그레이들에서는 메이븐 중앙 저장소를 지원하고, 중앙 저장소에 있는 라이브러리 모두 그대로 이용할 수 있다.
jCenter라는 그레이들용 중앙 저장소도 있다.
✔️ 지금까지 자바 빌드 도구 3가지 특징을 알아보았다.
✔️ 다음 포스팅에는 메이븐 빌드 파일인 pom.xml 기술 방법에 대해서 자세히 알아볼 예정이다.

✔️ 만약 이클립스에서 메이블 프로젝트 생성하는 방법이 궁금하다면 아래 포스팅을 참고하면 된다.
https://angelatto.tistory.com/31
[Spring] Spring Legacy Project 설정 / Maven(빌드툴) / Log4j
[Spring 프로젝트를 생성할 때 다양한 방법] ✔️ Spring Starter Project - Spring Boot 기반 ✔️ Spring Legacy Project - 설정을 하나하나 해줘야 함. 전자정부프레임워크는 이걸 사용하고 있음. - sts 기본 설정
angelatto.tistory.com
'프로그래밍언어 > JAVA' 카테고리의 다른 글
[JAVA] 프로세스와 스레드 / 자바 스레드 생성과 실행 방법 2가지 / 익명 구현 객체 / 익명 자식 객체 (0) | 2021.02.26 |
---|---|
[JAVA] 예외처리 (0) | 2021.02.24 |
[JAVA] 상속 / 인터페이스 / 다형성 / protected 접근제한자/ 메소드 오버라이드(재정의)/ 추상클래스 (0) | 2021.02.23 |
[JAVA] Call-By-Reference vs Call-By-Value / 인스턴스멤버 vs 정적멤버 / 자바 접근제한자 (0) | 2021.02.22 |
[JAVA] 객체지향 개념 / Method vs Function / 클래스 (필드, 메소드, 생성자) (0) | 2021.02.21 |
- Total
- Today
- Yesterday
- 클래스와객체
- jre
- 정적멤버
- 자바빌드도구
- 백준2206 파이썬 풀이
- ES6
- Git
- 메이븐 저장소
- java
- os
- 자바스크립트Promise
- yarn start
- 자바스크립트Call-back
- jdk
- 생성자필드메소드
- nunjucks
- @functools.lru_cache
- 인스턴스멤버
- 익명자식객체
- 백준
- 자바스레드
- @functools.singledispatch
- sequelize.fn
- dynamic-project
- method와 function
- 사용자정의예외클래스
- 객체지향개념
- @functools.wraps
- es6모듈
- nodejs
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |