KEMBAR78
Java Build Tool | PDF
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 targets
ivy : dependency management
maven : convention over configuration / multimodule projects / extensibility via plugins
gant : Groovy DSL(Domain specific language) on top of Ant
Gradle - 개발자 친화적 - Task
Groovy(JVM Language) DSL
Gradle - CoC-Task
Gradle - 기타 장점
● Gradle Wrapper 제공
● 상속이 아닌 주입
● 다른 빌드툴 호환
● 멀티 프로젝트를 간단히 작성할 수 있음

Java Build Tool

  • 1.
    Ant & Maven& Gradle 양파지기 스터디 모임 권용근
  • 2.
    Ant, Maven, Gradle?? Maven,Gradle, Ant, Ivy = Java Build Tool
  • 3.
    Java Build Tool? 컴파일 소스코드를사용할 수 있는 실행 파일로 변환 빌드 빌드 > 컴파일 컴파일, 테스팅, 점검, 배포 소스의 컴파일을 포함해 어플리케이션을 사용할 수 있는 형태로 만들어주는 과정. 소프트웨어가 응집력있는 하나의 단위로써 잘 동작하는지 확인하는 과정.
  • 4.
    Ant, Maven, Gradle?? 20022012 2000 2004 출처 : https://zeroturnaround.com/rebellabs/java-build-tools-part-2-a-decision-makers-comparison-of-maven-gradle-and-ant-ivy/
  • 5.
    Ant, Maven, Gradle?? 출처: https://zeroturnaround.com/rebellabs/java-build-tools-part-2-a-decision-makers-comparison-of-maven-gradle-and-ant-ivy/
  • 6.
    Ant 완전 개발자 친화적 ●정해진 규칙, 프로세스 X ● 모든 것을 개발자가 정의 ● Task 중심 Ant 자체는 XML이나 Remote Repository(Dependency)를 사용할 수 없음 그래서 +
  • 7.
    Maven Strong convention buthard to implement custom logic 규칙, 프로세스가 뚜렷하게 정의, 그러나 맞춤 로직을 구현하기 어렵다 CoC, Convention over Configuration 명확한 관습으로 인해 더 편해진다는 의미
  • 8.
    Maven - 핵심 의존성(Dependency)라이프사이클 플러그인(모조) Pom.xml
  • 9.
    Maven - 의존성 라이브러리다운로드 자동(원격 저장소로부터)
  • 10.
    Maven - Plugin,Mojo Maven은 Plugin을 실행하는 프레임워크 Goal(Mojo) 들의 집합
  • 11.
    Maven - 라이프사이클 Goal들의단계를 정의 하나의 Goal은 하나 이상의 라이프사이클에 속하게 됨. 라이프사이클은 단계일 뿐 실제 실행되는 것은 플러그인.
  • 12.
    Maven - Pom.xml ProjectObject Model 프로젝트 자체와 의존성에 대한 설정 및 정보를 포함 그룹 ID, 아티펙트 ID, 버전으로 자원 식별 다양한 설정이 있음.(정해진 규격)
  • 13.
  • 14.
    Gradle 개발적 친화적 +CoC 즉, Ant와 Maven의 장점만을 취함 ant : flexibility / full control / chaining of targets ivy : dependency management maven : convention over configuration / multimodule projects / extensibility via plugins gant : Groovy DSL(Domain specific language) on top of Ant
  • 15.
    Gradle - 개발자친화적 - Task Groovy(JVM Language) DSL
  • 16.
  • 17.
    Gradle - 기타장점 ● Gradle Wrapper 제공 ● 상속이 아닌 주입 ● 다른 빌드툴 호환 ● 멀티 프로젝트를 간단히 작성할 수 있음