You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
개발자 A는 org.lib.foo:1.5.0가 1.6.0 이상부터 치명적인 에러가 존재함을 인지하고 있다.
하지만, 위와 같이 남겨놓을 경우 누군가가 시간이 흐르고 버전을 1.6.0으로 올린다면..? 배포 후에 문제가 발생할 수도 있다.
이를 방지하기 위해 개발자 A는 라이브러리 버전 옆에 주석을 달았다. 아래와 같이 말이다.
dependencies {
implementation 'org.lib.foo:1.5.0'
//1.6.0 버전 이상부터는 버그가 존재합니다. 추후 버그 패치가 된 이후에 버전 변경이 필요합니다.
}
이렇게만 해놔도 이슈 공유는 될 수 있고, 누군가가 gradle 에서 library 버전을 변경하려고 한다고 해도
관련된 버그가 패치되었는지 경각심을 갖게 만들 수는 있다.
하지만 주석을 사용하지 않고 하는 방법은 없을까? gradle 에서는 이런 니즈를 위해 아래와 같은 configuration을 만들었다
dependencies {
implementation 'org.lib.foo'
constraints {
implementation('org:lib:foo:1.5.0') {
because '해당 라이브러리는 1.6.0 부터 치명적인 버그가 존재하기 때문에 1.5.0으로 버전을 강제합니다.'
}
}
}
constraints는 해당 라이브러리의 버전을 강제하는 기능을 가지고 있다.
BOM 템플릿이 아니지만, org.lib.foo 옆에 버전을 명시하지 않으면 아래 constraints 에서 설정한
버전을 따라가도록 되어있다.
또한 implementation configuration 에서 제공하는 because를 이용하면 이유도 적을 수 있으므로
주석보다는 좀 더 깔끔한 처리가 가능하다.