如何让gradle为每个依赖项输出依赖项哈希

时间:2017-07-21 23:47:05

标签: java gradle bitbucket-pipelines

我生来第一次看到

的情况

gradle compileJava check在本地运行正常,但当我尝试使用bitbucket管道运行相同的命令时,我得到NoSuchClassDefError

我在本地和管道上做gradle user-login-server:dependencies我怀疑的工件的版本是相同的

所以我能想到的唯一解释是实际的工件是不同的。

因此:我如何强制gradle输出每个依赖项的哈希值,以便我可以追踪出错的地方?

1 个答案:

答案 0 :(得分:2)

你可以在罐子上循环并打印出这样的哈希。

task printDependencyHashes() {
    def hash = { File file ->
        def md = java.security.MessageDigest.getInstance('MD5')
        file.eachByte(1024 * 4) { buffer, len ->
            md.update(buffer, 0, len)
        }
        return md.digest().encodeHex().toString()
    }

    doLast {
        configurations.compileClasspath.each { println "${it.name}: ${hash(it)}" }
    }
}