java - 如何让 gradle 输出每个依赖项的依赖项哈希

标签 java gradle bitbucket-pipelines

我有生以来第一次看到这样的情况

gradlecompileJavacheck 在本地运行良好,但是当我尝试使用 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)}" }
    }
}

关于java - 如何让 gradle 输出每个依赖项的依赖项哈希,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45248234/

相关文章:

java - Ajax 后 Spring MVC Controller ?

java - 克隆与仅仅赋值有何不同(为什么要费心实现 Cloneable 接口(interface))?

java - 新对象中的 Spring-instrument 和自动注入(inject)

android - 为什么Proguard在Android Studio中没有proguard-base.jar仍然可以工作

docker - Bitbucket管道-步骤- docker -无法找到图像

python-3.x - 在 Bitbucket 管道中为 python 代码编写测试用例

java - Spring session + Spring Web 套接字。根据 session ID 向特定客户端发送消息

jenkins - 如何将 Gradle 构建 currentVersion 写入文件

Android Studio 过渡及使用子库/共享库

node.js - Bitbucket Pipeline + Firebase 托管