29
BuildTool ? 2013314030 장철운

Build tool

  • Upload
    -

  • View
    406

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Build tool

BuildTool ?

2013314030 장철운

Page 2: Build tool

BuildTool ?

Maven ..들어본 적 있나요 ???

시작하기 전에 …

Page 3: Build tool

BuildTool ?

이건가 ……?

Page 4: Build tool

BuildTool ?

이건가 ……?

자바 프로젝트를 위한 자동 빌드 툴

Nope !!

Page 5: Build tool

BuildTool ?

Build : 소스 코드 파일을 동작하는 독립적인 소프트웨어 산출물로 만드는 과정.즉, 소스 코드 파일을 실행 코드로 변환하는 컴파일 과정

Page 6: Build tool

BuildTool ?

Build : 소스 코드 파일을 동작하는 독립적인 소프트웨어 산출물로 만드는 과정.즉, 소스 코드 파일을 실행 코드로 변환하는 컴파일 과정

간단한 프로그램의 경우, 하나의 파일만 컴파일 하면 되지만,복잡한 프로그램의 경우, 컴파일 할 파일의 양이 늘어난다.

+ 빌드 환경이 각각 다른 경우, 관리가 쉽지 않다..

Page 7: Build tool

BuildTool ?

Build : 소스 코드 파일을 동작하는 독립적인 소프트웨어 산출물로 만드는 과정.즉, 소스 코드 파일을 실행 코드로 변환하는 컴파일 과정

이럴 때, Build Tool 을 사용하여 번거로움을 줄인다 !

간단한 프로그램의 경우, 하나의 파일만 컴파일 하면 되지만,복잡한 프로그램의 경우, 컴파일 할 파일의 양이 늘어난다.

+ 빌드 환경이 각각 다른 경우, 관리가 쉽지 않다..

Page 8: Build tool

BuildTool ?

간단한 예로 …

Web app을 배포해보신적 있으신가요 ?

Page 9: Build tool

BuildTool ?

간단한 예로 …

Web app을 배포해보신적 있으신가요 ?

Tomcat의 경우 …

Source를War 파일로

압축

Tomcat의원격 서버에

적재수정 시, 다시 처음으로…(반복)

귀찮지 ?

Page 10: Build tool

BuildTool ?

간단한 예로 …

Web app을 배포해보신적 있으신가요 ?

Tomcat의 경우 …

Build Tool 쓰면 클릭 몇 번 만에……

Source를War 파일로

압축

Tomcat의원격 서버에

적재수정 시, 다시 처음으로…(반복)

귀찮지 ?

Page 11: Build tool

BuildTool ?

Build Tool : 새로운 버전의 프로그램을 Build 할 때 사용하는 Tool

빌드 스크립트를 짜 놓으면 그대로 실행 해주는 '도구'

Page 12: Build tool

BuildTool ?

Build Tool : 새로운 버전의 프로그램을 Build 할 때 사용하는 Tool

전처리 컴파일 패키징 테스팅 배포

일반적인 빌드 툴이 제공하는 기능

빌드 스크립트를 짜 놓으면 그대로 실행 해주는 '도구'

Page 13: Build tool

BuildTool ?

Build Tool : 새로운 버전의 프로그램을 Build 할 때 사용하는 Tool

종류

Apache Anteclipse에서 종종 본거 같은데 …?

Apache Maven얘는 Spring에서 본거 같고 …

Gradle안드로이드 스튜디오에서 봤었는데..!?

Page 14: Build tool

BuildTool ?

Apache Ant자바 개발 환경에서 표준 빌드 도구 !

빌드 파일을 XML 형태로 작성하여 계층적으로 보기 쉽게 작성(build.xml)

Page 15: Build tool

BuildTool ?

특징

1. 공통 프로젝트 디렉토리 구조와 같은 공식적인 규약이 없다.

2. 절차적. 무엇을 하고 언제 할지를 정확하게 전달해주어야 한다.(ex :: 일련의 과정을 정확히 전달해주어야 한다.)

3. 생명주기를 갖지 않는다. (build를 수정하여 생명주기와 같은 효과를 낼 수 도 있다.)+goal과 goal과의 의존관계를 정의해주어야 한다.

4. lib 관리 기능이 기본적으로 제공되지 않는다.

Apache Ant자바 개발 환경에서 표준 빌드 도구 !

빌드 파일을 XML 형태로 작성하여 계층적으로 보기 쉽게 작성(build.xml)

Page 16: Build tool

BuildTool ?

Apache Ant자바 개발 환경에서 표준 빌드 도구 !

빌드 파일을 XML 형태로 작성하여 계층적으로 보기 쉽게 작성(build.xml)

특징

1. 공통 프로젝트 디렉토리 구조와 같은 공식적인 규약이 없다.

2. 절차적. 무엇을 하고 언제 할지를 정확하게 전달해주어야 한다.(ex :: 일련의 과정을 정확히 전달해주어야 한다.)

3. 생명주기를 갖지 않는다. +goal과 goal과의 의존관계를 정의해주어야 한다.(build를 수정하여 생명주기와 같은 효과를 낼 수 도 있다.)

4. lib 관리 기능이 기본적으로 제공되지 않는다.

이런 느낌적인 느낌..?

Page 17: Build tool

BuildTool ?

Maven빌드 프로세스를 단순화 하기 위해 만들어진 것으로,

라이브러리 관리 및 빌드 기능을 포함하고 있다. (pom.xml)

Page 18: Build tool

BuildTool ?

Maven빌드 프로세스를 단순화 하기 위해 만들어진 것으로,

라이브러리 관리 및 빌드 기능을 포함하고 있다. (pom.xml)

라이브러리 사용시 3줄만으로라이브러리를 가져올 수 있음

+pom.xml 파일을 넘기는 것 만으로 개발환경을 맞출 수 있다.

Page 19: Build tool

BuildTool ?

Maven빌드 프로세스를 단순화 하기 위해 만들어진 것으로,

라이브러리 관리 및 빌드 기능을 포함하고 있다. (pom.xml)

특징

1. 소스코드의 위치와 결과물을 저장할 위치 등 규약을 갖는다.

2. 선언적. 작업을 pom에 추가해두고 소스를 위치시키면 나머지는 자동적으로 수행한다.

3. 생명주기를 갖는다. 부수 효과로서 compile과 jar 생성 같은 일을 수행하는 수 많은 기본 Plugin goal을 실행한다.

4. lib 관리 기능이 있다. 전이적 의존 라이브러리 추적 기능이 있어, 의존관계가 정의된 lib추가 시 필요한 LIB 또한 설치된다.

Page 20: Build tool

BuildTool ?

쉬어가기 …?

Java 환경에서 주로 사용하는 BuildTool 두가지를 알아보았다. (Maven 과 Ant)

Maven과 Ant는 항상 비교되는 이슈 중 하나인데,서로의 컨셉이 다른 시점에서 비교하는 것은 의미가 없다고 느껴진다.

(개인적으로… 비교하면서 보면 이해가 더 잘 되더라….)

Page 21: Build tool

BuildTool ?

쉬어가기 …?

Java 환경에서 주로 사용하는 BuildTool 두가지를 알아보았다. (Maven 과 Ant)

Maven과 Ant는 항상 비교되는 이슈 중 하나인데,서로의 컨셉이 다른 시점에서 비교하는 것은 의미가 없다고 느껴진다.

(개인적으로… 비교하면서 보면 이해가 더 잘 되더라….)

상황에 맞게 쓰자

Page 22: Build tool

BuildTool ?

추가적으로…Maven 의 단점 …

1. XML은 너무 장황해서 설정 내용보다 XML 뼈대가 더 많다.

2. 정적인 특성 때문에 특정 태스크를 반복 수행하거나 하는 등의 작업이 힘들고,다른 단계에 태스크를 넣는 것도 직관적이지 못하다.

Page 23: Build tool

BuildTool ?

추가적으로…Maven 의 단점 …

1. XML은 너무 장황해서 설정 내용보다 XML 뼈대가 더 많다.

2. 정적인 특성 때문에 특정 태스크를 반복 수행하거나 하는 등의 작업이 힘들고,다른 단계에 태스크를 넣는 것도 직관적이지 못하다.

단점이 늘고 있음 …어쩌라는 건지…

Page 24: Build tool

BuildTool ?

특징1. JAVA VM 상에서 동작한다.

2. Groovy 스크립트로 유연하게 기술할 수 있다.(If,Else와 같은 논리 분기가 가능하다)

3. 프로젝트의 라이프 사이클 전체를 커버하고 있다.

그래서 나온게 ..

Page 25: Build tool

BuildTool ?

특징1. JAVA VM 상에서 동작한다. (Groovy 언어 사용)

2. Groovy 스크립트로 유연하게 기술할 수 있다.(If,Else와 같은 논리 분기가 가능하다)

3. 프로젝트의 라이프 사이클 전체를 커버하고 있다.

그래서 나온게 ..

Maven처럼 규약에 근거한 프로젝트 라이프 사이클을 서포트하는 기능Ant처럼 빌드 처리를 자유롭게 표현하는 파워풀함을 겸비한 빌드 툴

Page 26: Build tool

BuildTool ?

출처 : https://solidsoft.wordpress.com/2015/03/09/spock-1-0-with-groovy-2-4-configuration-comparison-in-maven-and-gradle/

눈에 띄게 줄어든 코드 ….

Page 27: Build tool

결론 …?

골라서 쓰세요 ~ 근데 .. gradle 많이 쓰더라구요 ..

그냥 그렇다구요 ..

Page 28: Build tool

마치며

Eclipse나 Spring , Android Studio …. 에서 한번 쯤 봣었던Build Tool에 대해서 정리해 보았습니다.Ant 나 grandle 의 경우 직접적으로 사용해본적이 없어서생소하면서 신기한 부분들이 많았습니다. (maven 도 …)

어쩌다보니 ..“ grandle을 써보고 싶다 .. “ 라는 생각을 하고있네요

읽어주셔서 감사합니다 ~

Page 29: Build tool

참고

메이븐이란?

http://kiihyeon.cafe24.com/wp/?p=182

http://m.blog.naver.com/kittenjun/10165921021

https://slipp.net/wiki/pages/viewpage.action?pageId=4489306#id-2주차-Maven을활용한빌드환경-Maven이란

Ant란

http://msmoonpalace.tistory.com/entry/Apache-Ant-%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80

http://demon92.tistory.com/26

빌드란 ?

http://krksap.tistory.com/222

Gradle

http://kwon37xi.egloos.com/4747016

http://allwork.me/78