Hatena::ブログ(Diary)

Gradleが好き

このページの紹介

Gradleに関する様々な情報を集めたページにしようと思っています。各記事毎に案件を一つとそれに対するコードを載せていきます。コードはできるだけgithub:gistを使用していきますが、他のページへのリンクの場合はgistでない可能性があります。
記事には私が考えうる限りのカテゴリー付けをして登録します。のんびり待ってくださいませ。
Sorry! This page use Japanese!! I think, you can make sites of reverce-lookup about Gradle in your language, Yes, You can!

2012-05-16

vi vim で gradle ファイルを groovy シンタックス で 表示する

vimの設定ディレクトリを以下のように作成する。

mkdir ~/.vim/ftdetect

その中に、以下の内容でgradle.vimとして保存する。

"gradleのファイルタイプ識別用スクリプト
au BufRead,BufNewFile *.gradle set filetype=groovy

これにより、*.gradleファイルが.groovyファイルと同じようにシンタックス等の表示ができるようになる。*1

*1:もちろん、groovyシンタックスは事前インストールが必要

2012-04-08

お知らせ

長い間更新を遅らせて申し訳ありません。
Gradle-ja翻訳プロジェクトに参加させていただけることになりました。そちらの充実を図りながら、合間をみていろいろなサンプルを作れたらと思います。
もう少々お待ちください。

2011-11-20

artifactブロックでGradleからのファイル生成時に処理を追加する

以前紹介したGradle Build Language Reference(英語)にartifactというブロックが紹介されていたので、それを利用するスクリプトを考えてみました。
参考にしたページ
Gradle Build Language Reference(英語)内のartigactsのページ
gradleの本家ページ(英語)artifactのページ

スクリプト



実行方法


1、上記スクリプトダウンロードして、あるディレクトリに置いてください。
2、build.gradleを置いたディレクトリに、readme.txtだけ作成をお願いします。
3、以下の様に実行します。

$gradle

実行結果


スクリプト実行時

$ gradle
:filemake UP-TO-DATE

BUILD SUCCESSFUL

Total time: 13.536 secs

作成されたファイル

$ ls
20111120235108.txt  build.gradle  readme.txt

readme.txtの内容

20111120235108 task ':filemake' 作業ディレクトリのフルパス/20111120235108.txt add

まとめ


何回か上記リンクから内容を理解しようとしたのですが、残念ながらまだ100%ではありません。artifactsコードブロックは、gradleによるファイル等の生成やアーカイブを行う際に、AOPの様に処理を追加するものだと理解しています。ですので、スクリプトファイル作成時に、「readme.txt」に作成履歴を保管するように作成しました。その際、上記リンクにあったようにconfigrationブロックにクロージャを宣言し、artifactsブロックでタスクとの結びつけを行っています。
また、configrationブロックでのクロージャ定義で、task filemakeの作成するファイルfにアクセスしている所もポイントです。このクロージャ内のタスク名.オブジェクトの記述を有効にするには、task filemakeでいつものように<<演算子(dolastでの追加)ではなく、何も演算子を書かないtask本体への追加をしないと参照できませんのでご注意ください。

2011-11-14

マルチプロジェクトでルート及びサブプロジェクトで共通の処理を記述する

マルチプロジェクト環境で、サブプロジェクトを含むすべてのプロジェクトで共通に実行させたい処理がある場合に使用するallprojectsスクリプトを試してみました。

ルートプロジェクトにおけるサブプロジェクトのタスクとの依存性解決で使用した例の一部を変えてテストします。

ルートプロジェクトのbuild.gradle



実行結果

$ gradle --daemon
all!
all!
all!
all!
:a:A
From A
:b:B
From B
:c:C
From C
:allProject
from allProject

BUILD SUCCESSFUL

Total time: 6.413 secs

先にallprojectsのクロージャ内が実行され、それから各タスクの処理が走るようです。今回実行するプロジェクトはルートプロジェクト含めて4つなので、その分だけ"all!"が出力されています。

応用:subprojects


上記コードのallprojectsスクリプト部分をsubprojectsスクリプトに変えると、以下のようになります。

$ gradle --daemon
sub!
sub!
sub!
:a:A
From A
:b:B
From B
:c:C
From C
:allProject
from allProject

BUILD SUCCESSFUL

Total time: 5.808 secs

このsubprojectsは、サブプロジェクトすべてで実行させることができます。この例では3つのサブプロジェクトを実行しているため「sub!」が3回出力されています。

2011-11-13

ルートプロジェクトにおけるサブプロジェクトのタスクとの依存性解決

サブプロジェクトのタスクの簡単な利用法として、ルートプロジェクトのタスクをサブプロジェクトのタスクに依存させる方法を紹介します。

ルートプロジェクトのbuild.gradle



ルートプロジェクトのsettings.gradle



ルートプロジェクトのディレクトリ構造

APP_PROJECT_ROOT
|-- build.gradle       
|-- settings.gradle    
|-- a
    `-- build.gradle
|-- b
    `-- build.gradle
`-- c
    `-- build.gradle

サブプロジェクトのbuild.gradle


下記の例はサブプロジェクトaの例です。bおよびcは下記スクリプトのアルファベットを変えるだけです。

実行


ルートプロジェクトのディレクトリで、

$ gradle

実行結果

:a:A
From A
:b:B
From B
:c:C
From C
:allProject
from allProject

BUILD SUCCESSFUL

Total time: 4.171 secs

そのうち、githubのパブリックリポジトリを作成し、Jarをアップしておきます。