我希望为我的项目创建版本和sha文件。我正在使用spring boot的重新打包方法来构建我的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,但不知道如何解决这个问题。
答案 0 :(得分:1)
尝试这样的事情:
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 { }
闭包内。这些块在执行阶段运行。