2016-09-10 8 views
0

私のプロジェクトのバージョンとshaファイルを作成したいと思います。私は私の瓶を構築するために春のブートのリパッケージメソッドを使用しています。灰色の閉鎖の疑問

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を生成しようとしているが、これを解決する方法がわからないため、これが起こることを理解しています。

答えて

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 { }クロージャの内部であなたの文を置くことと等価です。これらのブロックは実行フェーズで実行されます。