我希望为我的项目创建版本和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/