본문 바로가기

개발관련 지식들

빌드관리툴(Maven, Gradle...)이란?

출처:       https://www.youtube.com/watch?v=3Jp9kGDb01g&t=187s 

 

빌드툴의 가장 대표적인 기능은? 프로젝트에서 필요한 파일들을 자동으로 인식하게 해줌

필요한 라이브러리 가져와주고 build의 대상이 되는 프로젝트의 LifeCycle까지 관리해줌. Maven을 예전에는 많이 사용했지만(legacy project) 지금은 Gradle을 사용. 요즘의 빌드툴은 (라이브러리간의)의존관계를 관리해줌. 따라서 내가 프로젝트를 생성할때 특정 라이브러리가 받기로 했는데

에 가보면 무수히 많은 내가 선택하지도 않은 라이브러리가 함께 딸려오게 되는데 이것이 Gradle과 같은 빌드툴이 내가 선택한 라이브러리와 의존관계에 있는 라이브러리를 모두 가져오기 때문에 그런것임. 그래서 결국은 Spring core까지 결국은 땡겨오게 되는것임. 

(복습. 빌드란? 컴파일된 소스코드를 실행될 수 있는 소프트웨어 형태로 변환(실행할 수 있는 독립적인 구조로 변환)하는 과정, 혹은 그 결과)

빌드 툴이 하는 기능은 라이브러리 관리(라이브러리 업데이트) 외에도 다음과 같은 주요한 기능들이 있음.(프로젝트에서 필요한 파일들을 자동으로 인식하게 해줌, 이것을 활용하여 빌드해줌. 이것이 대표적인 기능임)

라이프 사이클이란 이미 정해져 있는 프로젝트 빌드 순서임. (복습: https://e2e2e2.tistory.com/29  )

 

왜 대규모 프로젝트에서 복잡해지는 경향이 있나? 돔형태로 태그들이 추가되면서 위상들이 올라가면서 관리가 되기 때문

라이프 사이클이란? 이미 정해져 있는 프로젝트 빌드 순서.

  ==>왜? Maven은 XML기반의 빌드 스크립트를 사용하지만 그래들은 Groovy스크립트(자바 영역의 스크립트임)를 사용하기 때문. 아무래도 XML태그는 그 형식상 열고 닫는 태그가 있고, 태그간의 위상정렬이 있다 보니 더 복잡해 질수 밖에 없음.

Groovy스크립트(자바 영역의 스크립트임): 자바 영역의 스크립트라고 하면 자바와 비슷한 문법을 사용한다는 의미임!!!

(안드로이드 버전이라서 일반적으로 보는 그래들과는 다를 수 있음)

동영상이 옛날버전이라 Maven의 점유율이 더 높다고 잘못나온 것임
내가 아래와 같이 실제 프로젝트에서 본 build.gradle!!!
위와 같은 repositories, mavenCentral, dependencies모두 실제 build.gradle파일에 있는 용어들임^^

repositories: 라이브러리 참조를 하기 위해서 내가 어떠어떠한 라이브러리가 필용하다고 코딩해 놓았을때 그 라이브러리가 실제 어디에 있는지 탐색되어지게 곳을 정의해 놓는 영역. 회사내부에서는 자체적인 Nexus repository solution을 사용하여 자체적으로 관리하기도 합니다. url을 통해서 repository를 추가 할 수 있습니다.