環境
- Eclipse Oxygen.3a (4.7.3a)
- Buildship 2.2.1
問題
カスタムタスクが Gradle タスクのビューに表示されない。
tasks を実行しても表示されない。
原因
どうやら、タスクの定義がイマイチらしい。
Doma Gen のタスクはドキュメントでは次のようになっている。
task gen << {
ant.taskdef(resource: 'domagentask.properties',
classpath: configurations.domaGenRuntime.asPath)
ant.gen(url: 'jdbc:postgresql://127.0.0.1/example', user: '', password: '',
templatePrimaryDir: 'mytemplate') {
entityConfig()
daoConfig()
sqlConfig()
}
}
これは次のように定義するのがベター。
task gen {
group = 'doma'
description = 'タスクの説明をここに書く'
doLast {
ant.taskdef(resource: 'domagentask.properties',
classpath: configurations.domaGenRuntime.asPath)
ant.gen(url: 'jdbc:postgresql://127.0.0.1/example', user: '', password: '',
templatePrimaryDir: 'mytemplate') {
entityConfig()
daoConfig()
sqlConfig()
}
}
}
まず << は現在推奨されていない(?)ので doLast で代替する。ポイントは group と description を定義すること。ちなみに、<<
とか doLast
はタスクの定義にはほぼ必須で、これがないと、build.gradle が読み込まれた時点で即実行されてしまい、任意のタイミングでタスクとして実行できない。
感想
正直なところ、私は Gradle の体系的な知識に欠けているよなと自省。業務ではライブラリの jar ファイルがそのまんま Subversion に上がっているようなプロジェクトばっかりで、Gradle がライブラリの管理をしてくれるだけで、つまり、jar ファイル自体はバージョン管理外にできるという点だけで、Gradle は良い仕事をしてくれるようなぁと思ってしまうレベルです。そもそも SVN かよ。