SlideShare ist ein Scribd-Unternehmen logo
1 von 16
Downloaden Sie, um offline zu lesen
Gradleプラグインを
作成してみた
2015/1/15
@sakebook
http://github.com/sakebook
http://hatenablog.sakebook.com
自己紹介
酒本伸也 @sakebook
JX通信社(Vingow)
Android Developer & 初級ライフロガー
最近iOSも少し触る
Gradleプラグイン使ってますか
こんなの
apply plugin: ‘robolectric’
試しに作ってみた
android-versioning-gradle-plugin
versionNameとverisonCodeを

タスクから操作する
$./gradlew major #1.2.3 -> 2.0.0
$/.gradlew minor #1.2.3 -> 1.3.0
$./gradlew patch #1.2.3 -> 1.2.4
導入
buildscript {
repositories {
mavenLocal() // リポジトリにあげるまでは必要
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.0.0'
classpath 'com.github.sakebook:gradle-versioning:0.0.1'
}
}
builg.gradle
導入
apply plugin: ‘versioning'
MavenCentralにもあげてないし作成途中
要望募集!
${module}/build.gradle
動かせるようになるまでの共有
プロジェクト構成
- build.gradle // 公開に必要な情報を記入
| - gradle // Gradle本体
| - src
| - main
| - groovy // Groovyソースを配置
| - resource
| - META-INF
| - gradle-plugins
| -**.properties // **にはapplyで呼び出したい名前
**.propertiesの中身
Plugin<Project>を実装したクラスを指定
implementation-class=
com.sakebook.gradle.versioning.plugin.VersioningPlugin
class VersioningPlugin implements Plugin<Project> {
}
versioning.properties
VersioningPlugin.groovy
classpath の定義
classpath ‘com.github.sakebook:gradle-versioning:0.0.1'
classpath ${group}:${archivesBaseName}:{version}
ここの設定がclasspathを決める
group = 'com.github.sakebook'
archivesBaseName = 'gradle-versioning'
version = '0.0.1'
builg.gradle
ローカルのMavenリポジトリに
upload
uploadArchives {
repositories {
mavenDeployer {
repository(url: 'file://' + new
File(System.getProperty('user.home'), '.m2/
repository').absolutePath)
}
}
}
builg.gradle
$./gradlew clean uploadArchives
Taskのアクション指定方法
@TaskAction アノテーションを使い

Task実行時に行われるアクションを指定
class MajorTask extends VersioningTask {
@TaskAction
def majorVersionUp() {
readPropertyFile(BuildType.MAJOR)
}
}
MajorTask.groovy
DSL定義
versioning {} を定義
VersioningPlugin.groovy
project.extensions.create("versioning",
VersioningExtention.class)
class VersioningPlugin implements Plugin<Project> {
@Override
void apply(Project project) {
def extention = project.extensions.create("versioning", VersioningExtention.class)
project.task('info') << {
println "versionName: ${extention.versionName}"
println "tagName: ${extention.tagName}"
println "versionCode: ${extention.versionCode}"
}
project.task("major", type: MajorTask)
project.task("minor", type: MinorTask)
project.task("patch", type: PatchTask)
}
}
VersioningPlugin.groovy
作成してみて
簡単なものなら別gradleファイルにして

読み込む程度が良い粒度だと感じた。
Taskの依存関係やマルチプロジェクトを

いじる際に力を発揮しそう
Groovyが書けるときっともっと楽しくなる。
参考コード
https://github.com/DeployGate/gradle-deploygate-plugin
https://github.com/robolectric/robolectric-gradle-plugin
https://github.com/mcxiaoke/gradle-packer-plugin
https://android.googlesource.com/platform/tools/base/+/
gradle_1.0.0
https://github.com/sakebook/android-versioning-gradle-plugin
以上

Weitere ähnliche Inhalte

Was ist angesagt?

Androidアプリ入門
Androidアプリ入門Androidアプリ入門
Androidアプリ入門
YanoLabLT
 
Jenkinsを用いたAndroidアプリビルド作業効率化
Jenkinsを用いたAndroidアプリビルド作業効率化Jenkinsを用いたAndroidアプリビルド作業効率化
Jenkinsを用いたAndroidアプリビルド作業効率化
Kenichi Kambara
 

Was ist angesagt? (20)

Front-end package managers
Front-end package managersFront-end package managers
Front-end package managers
 
Android アプリを Jenkins でビルドして GitHub に “リリース” を作る
Android アプリを Jenkins でビルドして GitHub に “リリース” を作るAndroid アプリを Jenkins でビルドして GitHub に “リリース” を作る
Android アプリを Jenkins でビルドして GitHub に “リリース” を作る
 
今すぐブラウザでES6を使おう
今すぐブラウザでES6を使おう今すぐブラウザでES6を使おう
今すぐブラウザでES6を使おう
 
Gradle入門
Gradle入門Gradle入門
Gradle入門
 
One-time Binding & $digest
One-time Binding & $digestOne-time Binding & $digest
One-time Binding & $digest
 
Android App Development with Gradle & Android Studio
Android App Development with Gradle & Android StudioAndroid App Development with Gradle & Android Studio
Android App Development with Gradle & Android Studio
 
あなたもできる!GASで勤怠入力Slack App構築【WESEEK Tech Conf #14】 (pert2)
あなたもできる!GASで勤怠入力Slack App構築【WESEEK Tech Conf #14】 (pert2)あなたもできる!GASで勤怠入力Slack App構築【WESEEK Tech Conf #14】 (pert2)
あなたもできる!GASで勤怠入力Slack App構築【WESEEK Tech Conf #14】 (pert2)
 
Androidアプリ入門
Androidアプリ入門Androidアプリ入門
Androidアプリ入門
 
Gradleスクリプトを読み解く
Gradleスクリプトを読み解くGradleスクリプトを読み解く
Gradleスクリプトを読み解く
 
React native vol3
React native vol3React native vol3
React native vol3
 
Jenkinsを用いたAndroidアプリビルド作業効率化
Jenkinsを用いたAndroidアプリビルド作業効率化Jenkinsを用いたAndroidアプリビルド作業効率化
Jenkinsを用いたAndroidアプリビルド作業効率化
 
Jjug 20140430 gradle_basic
Jjug 20140430 gradle_basicJjug 20140430 gradle_basic
Jjug 20140430 gradle_basic
 
いまさら触るAwt
いまさら触るAwtいまさら触るAwt
いまさら触るAwt
 
Write slides and books in VSCode + Markdown
Write slides and books in VSCode + MarkdownWrite slides and books in VSCode + Markdown
Write slides and books in VSCode + Markdown
 
Angular + Typedoc + Github Page
Angular + Typedoc + Github PageAngular + Typedoc + Github Page
Angular + Typedoc + Github Page
 
React Nativeで始めるアプリ開発
React Nativeで始めるアプリ開発React Nativeで始めるアプリ開発
React Nativeで始めるアプリ開発
 
システム開発を前進させるためのGradle導入法
システム開発を前進させるためのGradle導入法システム開発を前進させるためのGradle導入法
システム開発を前進させるためのGradle導入法
 
Storybook web-and-circleci
Storybook web-and-circleciStorybook web-and-circleci
Storybook web-and-circleci
 
Jenkins と groovy
Jenkins と groovyJenkins と groovy
Jenkins と groovy
 
JavaScriptフレームワーク入門にVue.jsはいかが?
JavaScriptフレームワーク入門にVue.jsはいかが?JavaScriptフレームワーク入門にVue.jsはいかが?
JavaScriptフレームワーク入門にVue.jsはいかが?
 

Ähnlich wie Gradleプラグインを作成してみた

Groovy base gradle_20130309
Groovy base gradle_20130309Groovy base gradle_20130309
Groovy base gradle_20130309
Nobuhiro Sue
 
20150425 DroidKaigi つかえるGradleプロジェクトの作り方
20150425 DroidKaigi つかえるGradleプロジェクトの作り方20150425 DroidKaigi つかえるGradleプロジェクトの作り方
20150425 DroidKaigi つかえるGradleプロジェクトの作り方
Makoto Yamazaki
 
明日から使えるgradle
明日から使えるgradle明日から使えるgradle
明日から使えるgradle
kimukou_26 Kimukou
 
Gws 20120521 gradle
Gws 20120521 gradleGws 20120521 gradle
Gws 20120521 gradle
Nobuhiro Sue
 
ScalaでAndroidアプリ開発
ScalaでAndroidアプリ開発ScalaでAndroidアプリ開発
ScalaでAndroidアプリ開発
papamitra
 

Ähnlich wie Gradleプラグインを作成してみた (20)

Groovy base gradle_20130309
Groovy base gradle_20130309Groovy base gradle_20130309
Groovy base gradle_20130309
 
Gradle再入門.pptx
Gradle再入門.pptxGradle再入門.pptx
Gradle再入門.pptx
 
20150425 DroidKaigi つかえるGradleプロジェクトの作り方
20150425 DroidKaigi つかえるGradleプロジェクトの作り方20150425 DroidKaigi つかえるGradleプロジェクトの作り方
20150425 DroidKaigi つかえるGradleプロジェクトの作り方
 
明日から使えるgradle
明日から使えるgradle明日から使えるgradle
明日から使えるgradle
 
Gws 20120521 gradle
Gws 20120521 gradleGws 20120521 gradle
Gws 20120521 gradle
 
VSCodeで始めるAzure Static Web Apps開発
VSCodeで始めるAzure Static Web Apps開発VSCodeで始めるAzure Static Web Apps開発
VSCodeで始めるAzure Static Web Apps開発
 
スマホにおけるWebGL入門
スマホにおけるWebGL入門スマホにおけるWebGL入門
スマホにおけるWebGL入門
 
Android Studioの魅力
Android Studioの魅力Android Studioの魅力
Android Studioの魅力
 
Android studio で行ってみよう!!
Android studio で行ってみよう!!Android studio で行ってみよう!!
Android studio で行ってみよう!!
 
The Twelve-Factor (A|M)pp with C#
The Twelve-Factor (A|M)pp with C#The Twelve-Factor (A|M)pp with C#
The Twelve-Factor (A|M)pp with C#
 
Gws 20130315 gradle_handson
Gws 20130315 gradle_handsonGws 20130315 gradle_handson
Gws 20130315 gradle_handson
 
中・大規模でLaravelを導入するTips
中・大規模でLaravelを導入するTips中・大規模でLaravelを導入するTips
中・大規模でLaravelを導入するTips
 
ScalaでAndroidアプリ開発
ScalaでAndroidアプリ開発ScalaでAndroidアプリ開発
ScalaでAndroidアプリ開発
 
Appsody でnodejsのアプリを立ち上げよう!
Appsody でnodejsのアプリを立ち上げよう!Appsody でnodejsのアプリを立ち上げよう!
Appsody でnodejsのアプリを立ち上げよう!
 
はてなにおける Android アプリのソフトウェアテスト
はてなにおける Android アプリのソフトウェアテストはてなにおける Android アプリのソフトウェアテスト
はてなにおける Android アプリのソフトウェアテスト
 
Visual Studio を使わず .NET する
Visual Studio を使わず .NET するVisual Studio を使わず .NET する
Visual Studio を使わず .NET する
 
はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入
 
2013.01.18 G*Workshop GGX 2012 Report
2013.01.18 G*Workshop GGX 2012 Report2013.01.18 G*Workshop GGX 2012 Report
2013.01.18 G*Workshop GGX 2012 Report
 
デモで楽しむ Visual Studio 2022 & .NET 6 最新アップデート
デモで楽しむ Visual Studio 2022 & .NET 6 最新アップデートデモで楽しむ Visual Studio 2022 & .NET 6 最新アップデート
デモで楽しむ Visual Studio 2022 & .NET 6 最新アップデート
 
2021/03/19 パブリッククラウドを活かす運用プロセス自動化
2021/03/19 パブリッククラウドを活かす運用プロセス自動化2021/03/19 パブリッククラウドを活かす運用プロセス自動化
2021/03/19 パブリッククラウドを活かす運用プロセス自動化
 

Mehr von shinya sakemoto

Mehr von shinya sakemoto (14)

ScreenshotをPCから手軽に扱えるようにしたい
ScreenshotをPCから手軽に扱えるようにしたいScreenshotをPCから手軽に扱えるようにしたい
ScreenshotをPCから手軽に扱えるようにしたい
 
Gitpodでブラウザからflutterで開発する
Gitpodでブラウザからflutterで開発するGitpodでブラウザからflutterで開発する
Gitpodでブラウザからflutterで開発する
 
Flutter for Webで値を保存する
Flutter for Webで値を保存するFlutter for Webで値を保存する
Flutter for Webで値を保存する
 
チュートリアルをリッチにしよう
チュートリアルをリッチにしようチュートリアルをリッチにしよう
チュートリアルをリッチにしよう
 
Android study part5
Android study part5Android study part5
Android study part5
 
Android study part4
Android study part4Android study part4
Android study part4
 
Android study part3
Android study part3Android study part3
Android study part3
 
Android study part2
Android study part2Android study part2
Android study part2
 
Android study part1
Android study part1Android study part1
Android study part1
 
Material Designなdrawerを実装したい
Material Designなdrawerを実装したいMaterial Designなdrawerを実装したい
Material Designなdrawerを実装したい
 
Google Play Developer APIを使ってみた
Google Play Developer APIを使ってみたGoogle Play Developer APIを使ってみた
Google Play Developer APIを使ってみた
 
インストールリファラでハマった話
インストールリファラでハマった話インストールリファラでハマった話
インストールリファラでハマった話
 
ちょっと優しい入力項目
ちょっと優しい入力項目ちょっと優しい入力項目
ちょっと優しい入力項目
 
foursquareの楽しみ方
foursquareの楽しみ方foursquareの楽しみ方
foursquareの楽しみ方
 

Gradleプラグインを作成してみた