如何让 gradle 为每个依赖输出依赖散列
How to get gradle to output dependency hash for each dependency
我有生以来第一次看到
gradle compileJava check
运行 在本地很好,但是当我尝试 运行 使用 bitbucket 管道执行相同的命令时,我得到 NoSuchClassDefError
我在本地和管道上 gradle user-login-server:dependencies
我怀疑工件的版本是相同的
所以我能想到的唯一解释就是实际的人工制品不同。
因此:如何强制 gradle 输出每个依赖项的哈希值,以便我可以查明哪里出了问题?
您可以遍历 jar 并像这样打印出哈希。
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)}" }
}
}
我有生以来第一次看到
gradle compileJava check
运行 在本地很好,但是当我尝试 运行 使用 bitbucket 管道执行相同的命令时,我得到 NoSuchClassDefError
我在本地和管道上 gradle user-login-server:dependencies
我怀疑工件的版本是相同的
所以我能想到的唯一解释就是实际的人工制品不同。
因此:如何强制 gradle 输出每个依赖项的哈希值,以便我可以查明哪里出了问题?
您可以遍历 jar 并像这样打印出哈希。
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)}" }
}
}