본문 바로가기

Backend

[ IntelliJ ] Springboot 초기설정 - 빌드 방식 차이점

반응형

인텔리제이를 처음 활용할 때 빌드 시간을 단축하려면 Gradle이 아닌 Intellij IDEA를 선택해서 활용하라는 글을 읽었고, 지금까지 이렇게만 활용해왔다. 프로젝트들을 하나씩 정리해가며 회고를 하는 단계에 다가오니 테크니컬한 지식도 좋지만, 프로젝트 세팅과 관련된 원론적인 원리에 대해서도 하나 둘 눈길이 가기 시작했다.

 

 

Compile(컴파일)

우선 컴파일이란 자바와 같은 사람이 이해할 수 있는 프로그래밍 언어로 작성된 코드를 컴퓨터가 이해할 수 있는 더욱 저차원적인 코드 또는 기계어로 변환하는 것을 의미한다. 자바의 경우는 JVM(Java Virtual Machine)이 이 컴파일러 역할을 수행해주고 있다. 이와 같은 컴파일 과정을 거치면서 프로그래밍 언어로 작성된 코드가 문법적으로 이상은 없는지 또는 Checked Exception은 없는지 검사를 하고 그걸 알려준다.

 

Build(빌드)

빌드는 컴파일이 포함된 일종의 과정으로, 프로그래밍 된 코드를 컴파일하고 실행 가능한 결과물로 만드는 과정을 칭한다. IDEA에서는 보통 실행을 시키면 컴파일을 포함한 빌드 과정을 거쳐 실행 가능한 결과물을 만들고 그것을 실행시킨다.

 

Gradle과 IntelliJ IDEA 빌드 설정은 실행하기 위해서 실행 가능한 결과물을 만드는 방식의 차이인데, 

Gradle은 오픈 소스 빌드 자동화 도구이고 IntelliJ IDEA는 인텔리제이 자체에서 제공하는 빌드 자동화 도구이다.

 

Gradle 빌드 방식과 IntelliJ IDEA 빌드 방식의 테크니컬한 차이는 증분 빌드 유무이다. 

IntelliJ IDEA 빌드 방식은 증분 빌드를 활용한다.

증분 빌드

이름에서도 알 수 있듯이, 변경된 부분만을 대상으로 빌드를 수행하는 방식이다. 변경되지 않은 부분은 건너뛰기 때문에, 빌드 시간을 단축할 수 있는 것이다. 하지만 증분빌드의 한계점이 존재하는데, '최신의 변경 사항만을 반영한다.'는 원칙 때문이다. 이미 삭제된 파일이 빌드 과정에서 무시되어 실제 빌드 결과물에는 여전히 포함되어 프로젝트 실행시 에러가 발생하는 경우가 발생한다고 한다. 

따라서 빌드의 정확성을 보장받고자 한다면 전체 빌드 방식을 선택하는 것이 안전하다. 테스트할 땐, 인텔리제이IDEA 빌드를 활용하다가, 배포를 위해 jar를 생성할 땐 gradle로 바꿔서 선택적으로 활용하면 유용하게 쓰인다.

 

추가로 Gradle은 build 폴더로 빌드 결과물이 나오고 IntelliJ IDEA는 out 폴더로 빌드 결과물이 나오는 차이도 있다.

반응형