[시행착오] Gradle을 이용한 라이브러리 버전.. 얼음!

khyojun·2024년 11월 27일
4

시행착오

목록 보기
11/11
post-thumbnail

해당 글을 작성하게 된 경위

언제나 다를 바 없이 인턴으로 지내는중 팀장님께서 gradle을 사용하는 것에 있어서 라이브러리가 매번 빌드할때마다

implementation("org.springframework.boot:spring-boot-starter-log4j2")

"이런 친구들처럼 버전을 명시하지 않는 친구들은 새로운 버전의 친구를 가져오는데 이것을 굳이 버전을 명시하지 않아도 하나의 버전으로 동결시킬 수 있을까?" 는 요구사항이 있었습니다.

그래요 함 봅시다~

비슷한 친구로 lock 이라는 키워드와 함께 검색해보면 나올 거 같다는 조언을 해주셔서 한 번 레퍼런스가 뜨는지 확인해보기로 하였습니다.

초초 럭키비키~~ 바로 공식 레퍼런스~

바로 레퍼런스 문서가 나와서 들어가서 필요한 사항에 대해서 살펴볼 수 있었습니다!

모두 버전 얼음~~

현재 상황에서 필요했던 것은 바로 버전이 명시되어있지 않은 친구에 대해서 한 번 최신 버전으로 해놓고 바로 그 시점에서 동결시켜버리는 것이었습니다.

물론 특정 라이브러리에 대해서만 동결을 시키는 방법도 있었지만 현재 많은 라이브러리에 대해서 버전을 명시하지 않았기에 모든 버전을 명시하지 않은 친구들에게도 버전 동결을 시키기 위해 해당 설정을 작성하게 되었습니다.

자 하나만 더 해줘야 합니다.

문서에 나온 것처럼 gradle.lockfile이 없다면 초기에 한 번 작성을 해줘야 합니다! 또한 이후에 만약 업데이트 상황이 생겨서 버전을 바꾸거나 한다면 버전을 새롭게 동결시키기 위해 한 번 더 실행시켜주면 업데이트가 되어진다고 합니다!

그래서 해보면?

요렇게 gradle.lockfile이 생깁니다! 내부에는 현재 사용중인 라이브러리에 대한 친구들에 대한 버전 정보들이 명시가 되어집니다!

예시로

spring-boot-starter-validation 을 사용하고 버전을 명시하지 않으면
다음과 같이 gradle.lockfile 에서 버전을 3.2.1로 고정을 시켜버렸다는 것을 알 수 있었습니다.

org.springframework.boot:spring-boot-starter-validation:3.2.1=compileClasspath,implementationDependenciesMetadata,productionRuntimeClasspath,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath

그럼 진짜? 동결 되나? 다른 버전으로 바꿔보면? 어떻게 되나?

네. 당연히 안됩니다! 그렇지만 실행을 해봐야겠죠! 저 validation이라는 친구를 3.2.0 으로 변경을 해보겠습니다.

이러고 build를 하게 되면??

DependencyLockingGraph~~~ 머시기?

이런 에러가 발생하게 됩니다. 이를 통해 버전이 이제 동결이 되어 앞으로 계속 build를 하여도 멋대로 버전이 올라가거나 하는 일이 없어지도록 방지를 하였습니다.

문제 해결~

gradle 환경에서도 버전 명시를 안하여도 버전을 동결 하라는 요구사항을 만족하게 변경시킬 수 있었습니다!

출처

profile
코드를 씹고 뜯고 맛보고 즐기는 것을 지향하는 개발자가 되고 싶습니다

0개의 댓글