[IntelliJ] IntelliJ Build, Gradle Build 차이점

uijin kim·2023년 6월 8일
1
post-thumbnail

인텔리제이를 사용하며 빌드 혹은 테스트 코드를 실행할 때 속도가 많이 느린 경우가 있다.
이럴 때마다 인터넷에서는 인텔리제이의 빌드 혹은 테스트 옵션을 default로 되어 있는 Gradle 대신 IntelliJ로 바꿔서 사용하라는 조언을 많이 볼 수 있다.

이 두개의 차이는 무엇일까? 하는 고민이 생기는 찰나 해당 옵션중 Run tests using을 Gradle로 두고 테스트 실행시 테스트가 간헐적으로 실패하는 경우가 확인 되었다.

Gradle 옵션과 IntelliJ 옵션의 차이

결과적으로 Run tests using 옵션을 IntelliJ로 두고 테스트 실행시 순서가 보장된 테스트 환경에서 작성된 테스트 코드들은 모두 통과했지만 Gradle 환경에서 실행시 테스트 순서가 빌드시점마다 변경 되기때문에 통합테스트의 경우 서로 다른 테스트 데이터들이 충돌하게 되어 실패하는 것으로 확인 하였다.

Gradle Build와 IntelliJ Build의 차이를 이해하기 위해서는 빌드와 컴파일의 차이를 우선 알아야 한다.

Complie(컴파일)이란 사람이 프로그래밍 언어를 통해 작성한 코드를 컴퓨터가 이해할 수 있는 기계어로 변환하는 것을 의미한다.
Build(빌드)란 컴파일을 포함하는 과정으로, 작성된 프로그래밍 언어를 컴파일하고 실행 가능한 결과물로 만드는 것을 의미한다.

증분 빌드

Gradle Build와 IntelliJ Build의 차이점은 '증분빌드' 이다.
증분 빌드란 변경된 부분만을 변경하는 것을 의미하는데, IntelliJ Build가 증분 빌드에 해당한다. 그렇기 때문에 흔히 IntelliJ로 빌드 설정을
했을 경우 더 빠르게 느낄 수 있는 것이다.
반대로 Gradle Build의 경우 변경 요소와 상관없이 전체를 대상으로 빌드를 하기 때문에 상대적으로 느리게 느껴지게 된다.

추가 내용

추가적으로, 위에 언급한 내용과 같이 Gradle Build의 경우 테스트시 테스트 순서가 뒤죽박죽 섞이지만 IntelliJ의 경우 테스트 순서가 고정되어 있다는 것 또한 차이점이다.

IntelliJ에서 Gradle 빌드를 지원하게 된 이유는, IntelliJ에서의 빌드 환경과 실제 서버에서 Gradle을 이용해 Build 하게 되었을 때의 환경에 차이가 있을 수 있기 때문에 이런 부분에 대해 사전에 확인 할 수 있도록 지원하고 있다.

https://www.jetbrains.com/help/idea/work-with-tests-in-gradle.html
https://learn.microsoft.com/ko-kr/visualstudio/msbuild/incremental-builds?view=vs-2022

profile
느리더라도, 꾸준하게

0개의 댓글