소프트웨어 개발에서 대부분의 작업은 정형화되어 있다. 자바 애플리케이션 개발을 예로 들면 다음과 같은 일련의 작업이 필요하다.
• 소스 코드(.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 |