JAVA BUILD TOOL
개발을 좀 더 편하게…

BUILD

That is, the construction of something that has an observable and tangible result. Historically, build has often referred either to the process of converting source code files into standalone software artifact(s) that can be run on a computer, or the result of doing so.

“자바 소스코드를 컴퓨터가 실행할 수 있는 형태로 변환하는 절차” 라고 해석할 수 있을 듯.

BUILD TOOL (BUILD AUTOMATION)

Build automation is the act of scripting or automating a wide variety of tasks that software developers do in their day-to-day activities including things like:

  • compiling computer source code into binary code
  • packaging binary code
  • running tests
  • deploying to production systems
  • creating documentation and/or release notes

“빌드하는 일련의 과정을 진행해주는 스크립트나 도구” 라고 해석할 수 있을 듯.

BUILD TOOL 을 알기 전
IDE(이클립스)에서 컴파일된 클래스 파일을 FTP 를 이용하여 업로드.

filetransfer
  • ! FTP 접속, 파일 업로드 등 단순한 일련의 작업 반복으로 인한 시간낭비 발생
  • ! 잘못된 경로로의 업로드 등 업로드하는 개발자의 실수 발생 가능

이의 해결을 위한 검색도중 “ANT” 발견!

ANT (Another Neat Tool)

Apache ANT Logo

James Duncan Davidson 가 구동환경에 독립적인 make 와 같은 소프트웨어로 최초 구상.
톰캣 빌드를 위한 툴로 탄생, 2000년 독립형 소프트웨어로 발표.
빌드 / 배포 / 단위 테스트 등을 포함하는 통합 툴로 발전

ANT 를 알고 나서

빌드하는 절차를 build.xml 로 작성

배포 필요시 버튼 클릭 한번하고 커피 한잔의 여유를…
cat-latte

그러나,
개발자간 라이브러리 파일 공유, CI 도구 사용 등의 요구사항 해결을 위해
좀 더 게을러지고 싶어서…
검색하던 중에…

MAVEN 발견!

MAVEN

java-build-tools-part-1-maven-logo

ANT build.xml 의 많은 설정을 규약화함으로써
빌드 관리를 단순화하고 라이브러리간 의존성 관리를 위해 탄생정해진 디렉토리 구조가 있다.

  • pom.xml – 메이븐 설정 파일
  • src/main/java – 자바 소스 파일
  • src/main/resources – 자바 리소스(xml 또는 properties)
  • src/main/webapp – 웹 사이트 파일 (jsp, image, css, js 등)
  • src/test/java – 자바 테스트 소스 파일
  • src/test/resources – 자바 테스트 리소스

pom.xml 에 의존 라이브러리 명시시 IDE 가 자동으로 해당 라이브러리 로드.

mvn install 로 pom.xml 에 명시된 plugin 설정에 따라 빌드 진행

더이상 jar 를 소스 버젼 관리 저장소에 유지 할 필요가 없다.

단 maven repository 에 연결이 될 수 있어야 한다.

Nexus

nexus-small

중앙 Maven repository 를 접속할 수 없거나,
사설 Maven repository 를 운영하고자 할 경우 사용할 수 있는 소프트웨어

Oracle JDBC Driver 의 경우 라이센스 문제로 중앙 maven repository 에 없음

Gradle

gradle

Maven 의 규약을 벗어나고,
XML 로의 설정을 탈피하는 등의 목적으로 탄생한 Build Tool.

Groovy 로 빌드 코드 작성 등 아직 확인해야 할게 많아서…
다음 기회로… ^^

참고 자료:
Java Build Tools – Part 2: A Decision Maker’s Comparison of Maven, Gradle and Ant + Ivy