소프트웨어 개발에서 대부분의 작업은 정형화되어 있다. 자바 애플리케이션 개발을 예로 들면 다음과 같은 일련의 작업이 필요하다.
• 소스 코드(.java)를 컴파일해서 클래스 파일(.class)을 생성한다.
• 코딩 규약에 맞게 작성했는지 확인한다.
• 코드를 정적으로 해석한다.
• 테스트를 하고 테스트 결과나 커버리지 측정 결과를 리포트로 출력한다.
• Javadoc과 같은 문서를 작성한다.
• 클래스 파일과 리소스 파일을 패키징해서 압축 파일을 만든다(.jar나 .war 파일).
• 압축 파일을 테스트 환경이나 스테이징staging 환경에 배포한다.
• 압축 파일을 저장소에 등록한다.
루비Ruby 같은 스크립트 언어의 경우 컴파일은 필요 없지만, 테스트 실행, 패키징, 배포와 같은 정형화된 작업은 필요하다.
Build Toold이란?
빌드 툴
이란 이런 정형화된 작업을 자동화하기 위한 소프트웨어다. 빌드 툴의 필요성을 좀 더 이해하기 위해서 빌드 툴을 사용하지 않았을 때 부딪힐 수 있는 문제를 생각해보자.
아마 다음과 같은 문제를 겪어본 사람이 꽤 있을 것이다.
• 코드를 수정해서 테스트할 때마다 수작업으로 컴파일 > 테스트 > 패키징 > 배포 작업을 하려니 시간과 수고가 많이 든다. 수작업이라 실수도 잦다.
• 개발 팀에 팀원이 추가되어 개발 중인 애플리케이션을 만져보게 했다. 하지만 작업 매뉴얼이 오래되어 코드 저장소에서 체크아웃한 후의 처리가 제대로 동작하지 않는다.
• 개발자의 로컬 장비에서는 빌드가 되는데 테스트 환경에서는 빌드에 실패한다. 운영체제나 기타 개발 환경이 달라서인 듯한데 자세한 원인은 모르겠다.
• 프로젝트 빌드에 필요한 오픈 소스 라이브러리를 일일이 내려받기가 쉽지 않다. 게다가 해당 라이브러리와 다른 라이브러리 사이의 의존관계를 고려해야 하므로 필요한 환경을 갖추기까지 컴파일을 몇 번씩 하면서 시행착오를 거쳐야 한다.
• 개발한 라이브러리를 오픈 소스로 공개했지만, 코드를 바이너리로 만들기가 어려워 사용자가 거의 없다.
Gradle 철저 입문 안드로이드 공식 빌드 시스템
와타비키 타쿠마 , 스에 노부히로 , 하야시 마사토시 , 이마이 마사노부 지음 | 김완섭 옮김 | 길벗 | 2015년 12월 28일 출간
'WEB' 카테고리의 다른 글
JSP와 Servlet이란 무엇인가? (0) | 2020.06.17 |
---|---|
XML이란 무엇인가? (0) | 2020.06.17 |