gradle 4.8 릴리즈 그리고 dependency lock

분류없음 2018.06.29 17:43 posted by dev.bistro

6월 gradle 4.8이 릴리즈 되었다. (현재 4.8.1) 가장 눈에 들어오는 점은  nebula의 gradle-dependency-lock-plugin 으로 사용하고 있던 `Dependency locking` 이거다. 

> ./gradlew build --write-locks


사용하기 위해서는 build.gradle 에서 해당 내용을 활성화 시켜야 한다.
(참고 : https://docs.gradle.org/4.8.1/release-notes.html#locking-of-dynamic-dependencies )

dependencyLocking {
    lockAllConfigurations()
}


처럼 실행하면 ./gradle/dependency-locks 에 현재 실행된 task 들의 각 단계에서 필요한 dependencies 정보가 lockfile로 생성된다. 예를 들어 build를 실행하니, 아래와 같이 생성되었다.

annotationProcessor.lockfile
checkstyle.lockfile
compileClasspath.lockfile
cpd.lockfile
jacocoAgent.lockfile
pmd.lockfile
runtimeClasspath.lockfile
testAnnotationProcessor.lockfile
testCompileClasspath.lockfile
testRuntimeClasspath.lockfile

만약 dependencies tasks를 실행할 때 --write-locks 옵션을 붙인다음 좀 더 많은 lockfile이 생긴다.

annotationProcessor.lockfile
archives.lockfile
bootArchives.lockfile
checkstyle.lockfile
compile.lockfile
compileClasspath.lockfile
compileOnly.lockfile
cpd.lockfile
default.lockfile
jacocoAgent.lockfile
jacocoAnt.lockfile
pmd.lockfile
runtime.lockfile
runtimeClasspath.lockfile
testAnnotationProcessor.lockfile
testCompile.lockfile
testCompileClasspath.lockfile
testCompileOnly.lockfile
testRuntime.lockfile
testRuntimeClasspath.lockfile

이 후 디펜던시 버전을 변경하여 다시 실행하고자 하면 아래와 같은 메시지를 확인 할 수 있을 것이다.


FAILURE: Build failed with an exception.


* What went wrong:
Could not determine the dependencies of task ':cpdCheck'.
> Could not resolve all dependencies for configuration ':cpd'.
   > Dependency lock state for configuration 'cpd' is out of date:
       - Did not resolve 'net.sourceforge.pmd:pmd-php:5.6.1' which is part of the lock state
       생략




티스토리 툴바