最近ずっと使ってます。Gradle。
今仕事でやってるプロジェクトも Gradle を使っているので、なんという俺得なタイミング、ということで行ってきました。
Gradle 本出版記念ということで、参加者だけのありがたい特典もありました。行ってよかったデス。
コンテンツ
- @nobusue さんの Gradle イントロダクションと 2.0,2.1 の主な変更点
- @literalice さんの Gradle プラグインハンズオン
LT
- @kyon_mm さんの Gradle 2.2, 2.3 の変更点おさらい
- @nobeans さんの OSS 開発の嗜み話
- すいません、資料見つけられませんでした
以下、学び
plugins ブロックとプラグインポータル
- Gradle2.1 で追加された
- 3rd party のプラグインを使うときにより簡単になった
buildscript {
repositories {
jcenter()
}
dependencies {
classpath "com.bmuschko:gradle-tomcat-plugin:2.0"
}
}
apply plugin: "com.bmuschko.tomcat"
〜2.0までこう書いていたのが、
plugins {
id "com.bmuschko.tomcat" version "2.0"
}
これで良くなった。ただしプラグインポータルに登録されていることが前提。
インクリメンタルコンパイル
- Gradle 2.1 で追加された
- 変更のあった Java ソースのみ再コンパイルする
- 効果
- ビルド時間短縮
- バイトコード処理や動的クラスリロードを行う場合の影響範囲の最小化
- Ant の javac タスクではなく、Gradle 独自コンパイラに変更された
- デフォルトでは無効となっている
有効にする場合は、
allprojects {
tasks.withType(JavaCompile) {
options.incremental = true
}
}
と設定する。
Gradle プラグインの作成方法
org.gradle.api.Plugin<Project>インタフェースをimplementsして、apply(Project project)を実装するbuildSrcディレクトリにプラグインのソースコードを突っ込むと、Gradle が自動的にビルドしてくれるmaven-publishプラグインを使って、ローカルの Maven リポジトリにpublishすることで standalone 的にプラグインが実行できる
plugins {
id "groovy"
id "maven-publish"
}
dependencies {
compile gradleApi() // Gradle の API にクラスパス通す
}
group = "com.example.hoge" // Maven リポジトリの名前空間
version = "0.1"
/*
* 以下は maven-publish プラグインの設定
* http://www.gradle.org/docs/current/userguide/publishing_maven.html
*/
publishing {
publications {
mavenJava(MavenPublication) {
from components.java
}
}
}
この build.gradle が含まれているパスで publishToMavenLocal を叩くと ~/.m2/repository/ 以下に publish される。
- プラグインを作るときは Gradle の DSL リファレンス嫁(まずは Project Core Type)
- Plugin に外部から設定値を渡したい場合は、
Extensionを使う
import org.gradle.api.* class HogePlugin implements Plugin<Project> { @Override void apply(Project project) { project.extensions.create("hoge", HogePluginExtension) // Project に対して extension を "hoge" という名前で設定 println project.hoge.value // 設定した名前+プロパティ } } class HogePluginExtension { // 単なるPOJO(POGO) String value }
利用側の build.gradle は、
hoge { // create 時に指定した名前
value = "Hello hoge"
}
で利用する。
- プラグインのテストは、
org.gradle.testfixtures.ProjectBuilderを使って Project オブジェクトを作って、そのオブジェクトに対して操作することでテストできる。
Gradle2.2, 2.3 release notes
いいなーと思った変更点
- Component Selection Rules
- Declaring module replacements
- Specify version control system for Intellij IDEA
- support for renaming imported Ant targets
- Sharing configuration files across builds
OSS 嗜み話
- default task と gradle wrapper は設定しておこう
- Java だけ入ってればとりあえずオッケーよ、の Gradle Wrapper はやっぱり強力だなぁと再認識
- あと今度ドキュメント gaiden で書いてみよう
懇親会
- @uehaj さんや @nobusue さんと話せて楽しかった
まとめ
- 行ってよかった特典ゲット
- Gradle 徹底入門買います
Gradle徹底入門 次世代ビルドツールによる自動化基盤の構築
- 作者: 綿引琢磨,須江信洋,林政利,今井勝信
- 出版社/メーカー: 翔泳社
- 発売日: 2014/11/05
- メディア: 大型本
- この商品を含むブログを見る
- 世界一詳しい Gradle 本でかつ日本語で出るって素晴らしい
- Gradle プラグインなんか作ってみる
こちらからは以上です。