gradle - 对gradle关闭的怀疑

标签 gradle spring-boot closures

我希望为我的项目创建版本和sha文件。我正在使用spring boot的repackage方法来构建我的jar。

subproject.tasks.create(name: 'writeVersion') {
    new File("$rootDir/upload/").mkdirs()

    def sha = calcSha1(new File("$rootDir/deploy/${jar.archiveName}"));
    def gitId = grgit.head().abbreviatedId

    def shaFile = new File("$rootDir/upload/$rootProject.serviceName-$gitId-$sha"+".sha256");
    def versionFile = new File("$rootDir/upload/version.txt");

    shaFile.text = $sha;
    versionFile.text = "$rootProject.serviceName-$gitId-$sha"
}

感谢dagezi

我有以下内容:
def calcSha1 = { file ->
    MessageDigest md = MessageDigest.getInstance("SHA-1");
    file.eachByte 4096, {bytes, size ->
        md.update(bytes, 0, size);
    }
    return md.digest().collect {String.format "%02x", it}.join();
}

每次尝试运行任务时,都会收到一条错误消息,指出找不到该jar。我了解发生这种情况是因为它正在尝试在配置时生成SHA,但不确定如何解决此问题。

最佳答案

尝试这样的事情:

subprojects {
   task writeVersion << {
      new File("$rootDir/upload/").mkdirs()

      def sha = calcSha1(new File("$rootDir/deploy/${jar.archiveName}"));
      def gitId = grgit.head().abbreviatedId

      def shaFile = new File("$rootDir/upload/$rootProject.serviceName-$gitId-$sha"+".sha256");
      def versionFile = new File("$rootDir/upload/version.txt");

      shaFile.text = $sha;
      versionFile.text = "$rootProject.serviceName-$gitId-$sha"
   }
}
<<(左移)运算符等效于将您的语句放入doLast { }闭包内。这些块在执行阶段运行。

关于gradle - 对gradle关闭的怀疑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39424167/

相关文章:

java - 使用Spring data Rest @RepositoryRestResource 创建rest端点时是否需要注释@EnableMongoRepositories

pointers - 不能在 for 循环中重用单个变量

ios - 以下swift代码是什么意思?

Gradle:需要帮助才能理解

java - Gradle bndProjectBuilder 测试

android - 应用程序未导入android studio

Spring Webflux : Assertion for redirectUriTemplate to be not null, 即使我使用 OAuth 2.0 客户端凭据

spring-boot - 使用 prometheus 查询缓存命中率图

javascript - 自调用函数+闭包改善垃圾收集导致的挂起

ant - 如何在gradle中复制隐藏的资源文件?