1. 빌드 도구 ㄱㅁㅆ
그래서 빌드 도구가 먼데?
소프트웨어 개발에 있어서 소스 코드를 실행할 수 있는 애플리케이션으로 만들어주는 도구
그냥 단순하게 생각해서
내가 쓴 코드를 싸악 감싸서 보따리 하나에 다 집어넣어 주는 것
이라고 기억하고 있자.
2. 빌드 도구가 중요해?
음... 생각보다 중요하다. 왜냐? 체감상 가장 큰 장점은 편리하게 해주거든!!
우선 우리가 코드를 친거를 다른사람한테 줘야할 때 어떻게 줘야할까?
클래스, 인터페이스 하나하나씩 다 복붙해서 Student.java, Teacher.java 등등 이런식으로 줄건가?
만약 클래스가 5000개 있으면?? 테스트 코드도 따로 있으면?? 외부 라이브러리도 가져다 사용하고 있으면??
이러한 불편한 점들을 딸깍! 클릭 한번하는 수준으로 해결해 줄 수 있는데 빌드 도구이다.
- 자동화 : 루틴한 작업을 자동화하여 수동 참여와 오류를 제거한다. <--- 특히 코드 수정이 자주 이러질 때 유용하다.
- 일관성 : 지정된 빌드 프로세스를 엄격리 준수하여 다양한 개발 환경 및 플래폼에서 재현 가능한 결과를 보장한다. <--- 배포 문제를 줄일 수 있겠지?
- 의존성 관리 : 외부 라이브러리와 프레임워크의 요구사항을 처리함으로써 프로젝트에 타사 코드를 포함하기 더욱 간단하다.
이 부분은 뒤에서 실습으로 더 자세히 다뤄 볼 예정이다.
- 작업 병렬 처리 : 빌드를 하려면 여러 작업들이 필요한데 이것들을 동시에 실행해서 빌드 시간을 줄이고 생산성을 높여준다. <--- 대형 프로젝트일 수록 유리하겠지?
- 점진적 빌드 : 전체 애플리케이션을 다시 컴파일 하는 대신에 소스 코드의 변경 사항을 감지하고 영향 받은 부분만 다시 컴파일한다. 그렇다면 시간과 자원을 절약할 수 있겠지?
- CI/CD 통합 : 빌드 도구는 CI/CD 파이프라인과 투명하게 통합되서 개발자에게 완전한 빌드 및 배포 프로세스 자동화를 지원하고 신뢰성을 보장한다.
- 코드 컴파일 : 소스 코드를 이진 실행 파일이나 중간 표현으로 변환하는 과정이다. 이 과정은 개발 단계에서 구문 오류 및 기타 문제를 감지하는데 엄청난 도움을 준다.
- 테스트 및 품질 보증 : 빌드 프로세스 일부로 자동화된 테스트를 실행하여 새로운 기능과 코드 수정이 문제를 일으키지 않도록 하고 코드가 수립된 품질 기준을 충족하는지 확인할 수 있다.
- 호환성 및 확장성 : 다양한 언어, 프레임워크 및 운영체제에 호환된다. 플러그인이나 직접 작성한 스크립트와 같은 새로운 기능을 추가하여 프로젝트 요구사항에 맞게 수정 가능하다.
- 배포 및 패키징 : 빌드 도구는 소프트웨어를 최종 사용자나 다른 그룹에 전달하기 쉽게 만들어 준다. 배포할 수 있는 형식으로 패키징하는 과정을 도와준다.
3. 빌드 도구 종류 및 차이점
- Java를 위한 빌드 툴
- XML 파일을 통해 빌드 내용을 기술
- make의 플랫폼 의존 문제를 해결
- 복잡한 처리를 하려면 빌드 스크립트가 장황해지는 단점
- 라이브러리 의존 관계를 관리하는 구조의 부재
- ant의 후속으로 ant의 문제점을 해결하기 위해 개발
- ant와 마찬가지로 XML 파일을 통해 빌드 내용을 기술
- 빌드 라이프사이클과 POM(프로젝트 객체 모델) 개념 도입
- 라이브러리 관리를 위해 메이븐 중앙 저장소 제공
- groovy나 kotlin과 같은 스크립트 언어를 통해 빌드 내용을 기술
- DSL(Domain Specific Language) 제공
- 현재 안드로이드 앱을 만드는 데 필요한 안드로이드 스튜디오의 공식 빌드 시스템
- 메이븐 중앙 저장소를 동일하게 사용할 수 있음
'개인공부 > Maven' 카테고리의 다른 글
| 5. Maven Archetype Plugin, Maven 프로젝트 생성 (1) | 2024.10.13 |
|---|---|
| 4. Maven (3) | 2024.10.13 |
| 3. 빌드 도구없이 jar파일 만들어보기 2탄 (0) | 2024.10.13 |
| 2. 빌드 도구없이 jar파일 만들어보기 1탄 (4) | 2024.10.12 |
댓글