자바 빌드의 어려움
프로그램을 개발하다보면 여러 라이브러리를 쓰게된다.
그러다 보면 빌드 순서나 라이브러리 버전 등 고려할 사항이 많아지며 빌드가 복잡해진다.
개발자가 개발에 집중하지 못하고 빌드 매뉴얼에 더 신경써야 한다는 것이다.
또, 환경에 따라 빌드가 달라질 수 있어서 이것도 고려를 해야 한다.
유닉스에서 사용되던 C언어 빌드 스크립트 대표주자인 Makefile을 사용할 수도 있지만,
빌드가 더 복잡해짐에 따라 새로운 빌드 툴이 등장하게 된다.
Ant
처음 등장한건 아파치에서 만든 Ant 였다.
Ant는 당시 막 뜨던 XML을 설정파일로 사용했고, Make와 비슷하다.
근데.. 워낙 유연해서 빌드 과정을 하나하나 XML파일에 정확히 구성해야 했다.
그러다 보니 프로젝트가 진행됨에 따라 XML파일이 점점 커지고 이해하기 어려워졌다.
(유연함 때문에 Make와 마찬가지로 아직도 쓰기도 한다)
Maven
Ant를 보완하려 나온 빌드툴이다.
빌드 설정파일은 여진히 XML을 사용한다.
차이점이 있다면, 빌드 과정에 규칙을 더해서 유연성은 줄었지만 이해하기 쉬워졌다.
또, 가장 좋은 점은 외부라이브러리 관리를 해주었다.
(Ant에는 이러한 기능이 없어서 모든 라이브러리를 Jar파일로 다운받아서 써야 했다)
Gradle
위의 빌드 툴의 단점을 버리고 장점을 잡은 빌드툴이다.
실제로 Maven보다 더 빠르다고 한다.
일단 빌드 설정 파일로 Xml을 버리고 그루비 스트립트 언어를 채용했다.
Xml은 나름 구조적이지만 태그가 너무 많아서 빌드 설정 반, 태그 반이 되버린다. (용량도 커지고 보기도 어렵다)
그래서 구조도 있고, 태그가 없는 스크립트 언어를 채용했다.
하지만, Maven으로 작성된 프로젝트 때문인지 자바의 약세 때문인지는 몰라도 Maven프로젝트가 아직까지 많이 보인다.
참고
https://starrykss.tistory.com/276
https://tecoble.techcourse.co.kr/post/2020-09-17-java-build-tool/
'프로그래밍 > 기타' 카테고리의 다른 글
synchronized, CAS, ABA (0) | 2022.08.21 |
---|---|
[MVC] MVC 패턴에서 프론트엔드 vs 백엔드? (0) | 2022.08.19 |
[kubernetes] Error: unknown flag: --image (0) | 2022.08.08 |
[pgAdmin] Utility file not found. Please correct the Binary Path in the Preferences dialog 오류 (0) | 2022.08.04 |
direct mapped cache / set associative cache (0) | 2022.06.24 |