2016-07-08 5 views
7

私の無知のために前もって謝罪します。私はグラデーションにはとても新しいです。build.gradleのタスクによってプロジェクトディレクトリにversion.txtファイルを作成します。

私の目標は、プロジェクトルートにgradle端末コマンドを実行するたびに、自分のプロジェクトディレクトリにファイル 'version.txt'が作成されているbuild.gradleファイルにいくつかのタスクを持たせることです。

Version: 1.0 Revision: 1z7g30jFHYjl42L9fh0pqzmsQkF Buildtime: 2016-06-14 07:16:37 EST Application-name: foobarbaz app

私が試した(^リビジョンがGitはHEADのハッシュを犯すだろう):この「version.txtの」ファイルは、以下のようなビルドのバージョンのメタデータを、含まれている必要がありますこれらのリソースは古くなっている可能性があるため、次のリソースから、しかし無駄にスニペットを再利用: http://mrhaki.blogspot.com/2015/04/gradle-goodness-use-git-commit-id-in.html http://mrhaki.blogspot.com/2010/10/gradle-goodness-add-incremental-build.html

を私は(最新版である)Gradleのバージョン2.14を使用しています。

どのようなヘルプや洞察力があれば幸いです。ありがとう!

答えて

17

あなたが参照している例はほぼ正しいです。それが期待どおりに動作微調整のカップルと:

import java.text.SimpleDateFormat 
import org.ajoberstar.grgit.Grgit 

plugins { 
    id "org.ajoberstar.grgit" version "1.5.1-rc.3" 
} 

version = 1.0 

task versionTxt() { 
    doLast { 
     new File("$projectDir/version.txt").text = """ 
Version: $version 
Revision: ${Grgit.open(dir: '.').head().id} 
Buildtime: ${new SimpleDateFormat("dd-MM-yyyy HH:mm:ss").format(new Date())} 
Application-name: foobarbaz app 
""" 
    } 
} 

実行gradle versionTxt所望の出力を取得します。

+0

期待どおりに機能しました。私が言及していた例は確かにほぼ正しいものでした。再度、感謝します! –

+0

マイナーな調整:leftShiftは廃止され、 'doLast'内部クロージャで置き換える必要があります。また、ファイルの作成を1行の 'new File(filename).text =" blah "' – MarkHu

+0

に短縮することができます。ありがとうございます。 – Jk1

関連する問題