build tool
TRANSCRIPT
BuildTool ?
2013314030 장철운
BuildTool ?
Maven ..들어본 적 있나요 ???
시작하기 전에 …
BuildTool ?
이건가 ……?
BuildTool ?
이건가 ……?
자바 프로젝트를 위한 자동 빌드 툴
Nope !!
BuildTool ?
Build : 소스 코드 파일을 동작하는 독립적인 소프트웨어 산출물로 만드는 과정.즉, 소스 코드 파일을 실행 코드로 변환하는 컴파일 과정
BuildTool ?
Build : 소스 코드 파일을 동작하는 독립적인 소프트웨어 산출물로 만드는 과정.즉, 소스 코드 파일을 실행 코드로 변환하는 컴파일 과정
간단한 프로그램의 경우, 하나의 파일만 컴파일 하면 되지만,복잡한 프로그램의 경우, 컴파일 할 파일의 양이 늘어난다.
+ 빌드 환경이 각각 다른 경우, 관리가 쉽지 않다..
BuildTool ?
Build : 소스 코드 파일을 동작하는 독립적인 소프트웨어 산출물로 만드는 과정.즉, 소스 코드 파일을 실행 코드로 변환하는 컴파일 과정
이럴 때, Build Tool 을 사용하여 번거로움을 줄인다 !
간단한 프로그램의 경우, 하나의 파일만 컴파일 하면 되지만,복잡한 프로그램의 경우, 컴파일 할 파일의 양이 늘어난다.
+ 빌드 환경이 각각 다른 경우, 관리가 쉽지 않다..
BuildTool ?
간단한 예로 …
Web app을 배포해보신적 있으신가요 ?
BuildTool ?
간단한 예로 …
Web app을 배포해보신적 있으신가요 ?
Tomcat의 경우 …
Source를War 파일로
압축
Tomcat의원격 서버에
적재수정 시, 다시 처음으로…(반복)
귀찮지 ?
BuildTool ?
간단한 예로 …
Web app을 배포해보신적 있으신가요 ?
Tomcat의 경우 …
Build Tool 쓰면 클릭 몇 번 만에……
Source를War 파일로
압축
Tomcat의원격 서버에
적재수정 시, 다시 처음으로…(반복)
귀찮지 ?
BuildTool ?
Build Tool : 새로운 버전의 프로그램을 Build 할 때 사용하는 Tool
빌드 스크립트를 짜 놓으면 그대로 실행 해주는 '도구'
BuildTool ?
Build Tool : 새로운 버전의 프로그램을 Build 할 때 사용하는 Tool
전처리 컴파일 패키징 테스팅 배포
일반적인 빌드 툴이 제공하는 기능
빌드 스크립트를 짜 놓으면 그대로 실행 해주는 '도구'
BuildTool ?
Build Tool : 새로운 버전의 프로그램을 Build 할 때 사용하는 Tool
종류
Apache Anteclipse에서 종종 본거 같은데 …?
Apache Maven얘는 Spring에서 본거 같고 …
Gradle안드로이드 스튜디오에서 봤었는데..!?
BuildTool ?
Apache Ant자바 개발 환경에서 표준 빌드 도구 !
빌드 파일을 XML 형태로 작성하여 계층적으로 보기 쉽게 작성(build.xml)
BuildTool ?
특징
1. 공통 프로젝트 디렉토리 구조와 같은 공식적인 규약이 없다.
2. 절차적. 무엇을 하고 언제 할지를 정확하게 전달해주어야 한다.(ex :: 일련의 과정을 정확히 전달해주어야 한다.)
3. 생명주기를 갖지 않는다. (build를 수정하여 생명주기와 같은 효과를 낼 수 도 있다.)+goal과 goal과의 의존관계를 정의해주어야 한다.
4. lib 관리 기능이 기본적으로 제공되지 않는다.
Apache Ant자바 개발 환경에서 표준 빌드 도구 !
빌드 파일을 XML 형태로 작성하여 계층적으로 보기 쉽게 작성(build.xml)
BuildTool ?
Apache Ant자바 개발 환경에서 표준 빌드 도구 !
빌드 파일을 XML 형태로 작성하여 계층적으로 보기 쉽게 작성(build.xml)
특징
1. 공통 프로젝트 디렉토리 구조와 같은 공식적인 규약이 없다.
2. 절차적. 무엇을 하고 언제 할지를 정확하게 전달해주어야 한다.(ex :: 일련의 과정을 정확히 전달해주어야 한다.)
3. 생명주기를 갖지 않는다. +goal과 goal과의 의존관계를 정의해주어야 한다.(build를 수정하여 생명주기와 같은 효과를 낼 수 도 있다.)
4. lib 관리 기능이 기본적으로 제공되지 않는다.
이런 느낌적인 느낌..?
BuildTool ?
Maven빌드 프로세스를 단순화 하기 위해 만들어진 것으로,
라이브러리 관리 및 빌드 기능을 포함하고 있다. (pom.xml)
BuildTool ?
Maven빌드 프로세스를 단순화 하기 위해 만들어진 것으로,
라이브러리 관리 및 빌드 기능을 포함하고 있다. (pom.xml)
라이브러리 사용시 3줄만으로라이브러리를 가져올 수 있음
+pom.xml 파일을 넘기는 것 만으로 개발환경을 맞출 수 있다.
BuildTool ?
Maven빌드 프로세스를 단순화 하기 위해 만들어진 것으로,
라이브러리 관리 및 빌드 기능을 포함하고 있다. (pom.xml)
특징
1. 소스코드의 위치와 결과물을 저장할 위치 등 규약을 갖는다.
2. 선언적. 작업을 pom에 추가해두고 소스를 위치시키면 나머지는 자동적으로 수행한다.
3. 생명주기를 갖는다. 부수 효과로서 compile과 jar 생성 같은 일을 수행하는 수 많은 기본 Plugin goal을 실행한다.
4. lib 관리 기능이 있다. 전이적 의존 라이브러리 추적 기능이 있어, 의존관계가 정의된 lib추가 시 필요한 LIB 또한 설치된다.
BuildTool ?
쉬어가기 …?
Java 환경에서 주로 사용하는 BuildTool 두가지를 알아보았다. (Maven 과 Ant)
Maven과 Ant는 항상 비교되는 이슈 중 하나인데,서로의 컨셉이 다른 시점에서 비교하는 것은 의미가 없다고 느껴진다.
(개인적으로… 비교하면서 보면 이해가 더 잘 되더라….)
BuildTool ?
쉬어가기 …?
Java 환경에서 주로 사용하는 BuildTool 두가지를 알아보았다. (Maven 과 Ant)
Maven과 Ant는 항상 비교되는 이슈 중 하나인데,서로의 컨셉이 다른 시점에서 비교하는 것은 의미가 없다고 느껴진다.
(개인적으로… 비교하면서 보면 이해가 더 잘 되더라….)
상황에 맞게 쓰자
BuildTool ?
추가적으로…Maven 의 단점 …
1. XML은 너무 장황해서 설정 내용보다 XML 뼈대가 더 많다.
2. 정적인 특성 때문에 특정 태스크를 반복 수행하거나 하는 등의 작업이 힘들고,다른 단계에 태스크를 넣는 것도 직관적이지 못하다.
BuildTool ?
추가적으로…Maven 의 단점 …
1. XML은 너무 장황해서 설정 내용보다 XML 뼈대가 더 많다.
2. 정적인 특성 때문에 특정 태스크를 반복 수행하거나 하는 등의 작업이 힘들고,다른 단계에 태스크를 넣는 것도 직관적이지 못하다.
단점이 늘고 있음 …어쩌라는 건지…
BuildTool ?
특징1. JAVA VM 상에서 동작한다.
2. Groovy 스크립트로 유연하게 기술할 수 있다.(If,Else와 같은 논리 분기가 가능하다)
3. 프로젝트의 라이프 사이클 전체를 커버하고 있다.
그래서 나온게 ..
BuildTool ?
특징1. JAVA VM 상에서 동작한다. (Groovy 언어 사용)
2. Groovy 스크립트로 유연하게 기술할 수 있다.(If,Else와 같은 논리 분기가 가능하다)
3. 프로젝트의 라이프 사이클 전체를 커버하고 있다.
그래서 나온게 ..
Maven처럼 규약에 근거한 프로젝트 라이프 사이클을 서포트하는 기능Ant처럼 빌드 처리를 자유롭게 표현하는 파워풀함을 겸비한 빌드 툴
BuildTool ?
출처 : https://solidsoft.wordpress.com/2015/03/09/spock-1-0-with-groovy-2-4-configuration-comparison-in-maven-and-gradle/
눈에 띄게 줄어든 코드 ….
결론 …?
골라서 쓰세요 ~ 근데 .. gradle 많이 쓰더라구요 ..
그냥 그렇다구요 ..
마치며
Eclipse나 Spring , Android Studio …. 에서 한번 쯤 봣었던Build Tool에 대해서 정리해 보았습니다.Ant 나 grandle 의 경우 직접적으로 사용해본적이 없어서생소하면서 신기한 부분들이 많았습니다. (maven 도 …)
어쩌다보니 ..“ grandle을 써보고 싶다 .. “ 라는 생각을 하고있네요
읽어주셔서 감사합니다 ~
참고
메이븐이란?
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