언제나 다를 바 없이 인턴으로 지내는중 팀장님께서 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를 하게 되면??
이런 에러가 발생하게 됩니다. 이를 통해 버전이 이제 동결이 되어 앞으로 계속 build를 하여도 멋대로 버전이 올라가거나 하는 일이 없어지도록 방지를 하였습니다.
gradle 환경에서도 버전 명시를 안하여도 버전을 동결
하라는 요구사항을 만족하게 변경시킬 수 있었습니다!