java build tool

17
Ant & Maven & Gradle 양파지기 스터디 모임 권용근

Upload: -

Post on 03-Mar-2017

74 views

Category:

Technology


0 download

TRANSCRIPT

Ant & Maven & Gradle양파지기 스터디 모임

권용근

Ant, Maven, Gradle??

Maven, Gradle, Ant, Ivy

=

Java Build Tool

Java Build Tool?

컴파일소스코드를 사용할 수 있는 실행 파일로 변환

빌드 빌드 > 컴파일컴파일, 테스팅, 점검, 배포

소스의 컴파일을 포함해 어플리케이션을 사용할 수 있는 형태로 만들어주는 과정.소프트웨어가 응집력있는 하나의 단위로써 잘 동작하는지 확인하는 과정.

Ant, Maven, Gradle??

2002 2012 2000 2004

출처 : https://zeroturnaround.com/rebellabs/java-build-tools-part-2-a-decision-makers-comparison-of-maven-gradle-and-ant-ivy/

Ant, Maven, Gradle??

출처 : https://zeroturnaround.com/rebellabs/java-build-tools-part-2-a-decision-makers-comparison-of-maven-gradle-and-ant-ivy/

Ant

완전 개발자 친화적● 정해진 규칙, 프로세스 X● 모든 것을 개발자가 정의

● Task 중심

Ant 자체는 XML이나 Remote Repository(Dependency)를 사용할 수 없음

그래서

+

Maven

Strong convention but hard to implement custom logic

규칙, 프로세스가 뚜렷하게 정의, 그러나 맞춤 로직을 구현하기 어렵다

CoC, Convention over Configuration명확한 관습으로 인해 더 편해진다는 의미

Maven - 핵심

의존성(Dependency) 라이프사이클

플러그인(모조) Pom.xml

Maven - 의존성

라이브러리 다운로드 자동(원격 저장소로부터)

Maven - Plugin, Mojo

Maven은 Plugin을 실행하는 프레임워크

Goal(Mojo)들의 집합

Maven - 라이프사이클

Goal들의 단계를 정의

하나의 Goal은 하나 이상의 라이프사이클에 속하게 됨.

라이프사이클은 단계일 뿐 실제 실행되는 것은 플러그인.

Maven - Pom.xml

Project Object Model

프로젝트 자체와 의존성에 대한 설정 및 정보를 포함

그룹 ID, 아티펙트 ID, 버전으로 자원 식별

다양한 설정이 있음.(정해진 규격)

출처 : http://www.techjava.de/topics/tag/maven/

Maven

Gradle

개발적 친화적 + CoC

즉, Ant와 Maven의 장점만을 취함

ant : flexibility / full control / chaining of targetsivy : dependency managementmaven : convention over configuration / multimodule projects / extensibility via pluginsgant : Groovy DSL(Domain specific language) on top of Ant

Gradle - 개발자 친화적 - Task

Groovy(JVM Language) DSL

Gradle - CoC-Task

Gradle - 기타 장점

● Gradle Wrapper 제공● 상속이 아닌 주입● 다른 빌드툴 호환● 멀티 프로젝트를 간단히 작성할 수 있음