Lazybonesのテンプレートを配布する
TL;DR
Lazybonesのテンプレートを共有するには、つぎの3つの方法があります。
- zipファイルをLazybonesのローカルキャッシュへ置く
- ファイルシステム(file://path/to/zip)か、HTTP(http://host/path/to/zip)でアクセスできる場所に公開し、Lazybonesのテンプレートエイリアス設定に加える
- JFrog Bintrayに公開し、Lazybonesのリポジトリー設定に加える
一般に公開できないテンプレートは2番目の方法で共有するのがよいです。 インターネットで公開してよいテンプレートであれば、3番目の方法で共有するのがよいです。
出来上がったサンプルはGitHubに置いてあります。 また、JFrog Bintrayで公開しています。
zipファイルをLazybonesのローカルキャッシュへ置く
Lazybonesのローカルキャッシュは、~/.lazybones/templatesディレクトリーにあります。 そのディレクトリーにビルドしたテンプレート(zipファイル)をコピーします。
ビルドしたテンプレートは、build/packagesディレクトリーに出力されています。 そのディレクトリーにあるzipファイルは <template-name>-template-<template-version>.zip と名前が付いています。
※下記のコマンド実行例はGradleタスクを使って、ビルドしたテンプレートをローカルキャッシュへインストールした結果を表示しています。 Gradleタスクを使ってインストールしたり、公開すると、zipファイル名は <template-name>-<template-version>.zip となるようです。
$ tree -a .lazybones/templates/ .lazybones/templates/ ├── gradle-java-app-1.0.0.zip ├── gradle-java-lib-1.0.0.zip └── lazybones-project-1.1.zip 0 directories, 3 files
ローカルキャッシュにzipファイルをコピーしたら、lazybones list --cached
を実行し、Lazybonesが把握しているキャッシュ済みテンプレートを一覧してみます。
$ lazybones list --cached Cached templates gradle-java-app 1.0.0 gradle-java-lib 1.0.0 lazybones-project 1.1
ファイルシステムやHTTPでアクセスできる場所に公開する
Lazybonesは、設定されたリポジトリーからテンプレート名称を探し、該当するテンプレートがあれば、それをプロジェクト生成に用います。 Lazybonesのcreateコマンドにはテンプレート名称を渡せますが、zipファイルのパス(URL)は渡せません。 そこで、テンプレートエイリアス設定を用いて、テンプレート名称とzipファイルのパス(URL)を紐付けます。
適当な場所にzipファイルを置いたら、lazybones config set templates.mappings.<alias> <zip file url>
を実行して、テンプレートのエイリアスを設定します。
$ lazybones config set templates.mappings.example https://github.com/ohtomi/lazybones-templates/releases/download/v1.0.0/gradle-java-app-1.0.0.zip
テンプレートのエイリアスを設定したら、lazybones list --cached
を実行し、Lazybonesが把握しているキャッシュ済みテンプレートを一覧してみます。
$ lazybones list --cached Cached templates gradle-java-app 1.0.0 gradle-java-lib 1.0.0 lazybones-project 1.1 Available mappings example -> https://github.com/ohtomi/lazybones-templates/releases/download/v1.0.0/gradle-java-app-1.0.0.zip
テンプレートのエイリアスは、設定ファイルに保存されています。
設定ファイルは、~/.lazybones/managed-config.jsonです。
$ cat ~/.lazybones/managed-config.json { "bintrayRepositories": [ "pledbrook/lazybones-templates" ], "templates": { "mappings": { "example": "https://github.com/ohtomi/lazybones-templates/releases/download/v1.0.0/gradle-java-app-1.0.0.zip" } } }
JFrog Bintrayに公開する
まず、Bintrayに任意の名前でGenericタイプのリポジトリーを作ります。 つづいて、テンプレートをビルドするためのGradleプロジェクトのビルドスクリプト(build.gradle)にBintrayへ公開するための情報を書き加えます。
# build.gradle buildscript { repositories { maven { url "http://dl.bintray.com/pledbrook/plugins" } } dependencies { # 更新 classpath "uk.co.cacoethes:lazybones-gradle:1.2.4" } } apply plugin: "uk.co.cacoethes.lazybones-templates" lazybones { # つぎの3行は更新 repositoryName = "ohtomi/lazybones-templates" repositoryUsername = "ohtomi" repositoryApiKey = "<bintray api key>" # つぎの3行は新たに加える licenses = ["MIT"] vcsUrl = "https://github.com/ohtomi/lazybones-templates" publish = true }
LazybonesのGradleプラグインのバージョンを1.2.1から1.2.4へ上げておかないと、vcsUrlへ設定できないので、要注意です。 APIキーは、Bintrayのユーザー設定の編集画面から取得して、repositoryApiKeyへ設定します。 (ビルドスクリプトにパスワードの類をハードコードするのは好ましくないため、ソースコードを公開する場合はgradle.propertiesを使ったほうがよいです)。
ビルドスクリプトを編集したら、テンプレートをBintrayへパブリッシュします。
Gradleプロジェクトのルートディレクトリーへ移動して、gradle publishTemplate<task-name>を実行します。
※<task-name>の部分はテンプレートのディレクトリー名をキャメルケースに変換した値を指定します。 (例: gradle-java-lib -> GradleJavaLib)。
$ gradle --daemon publishTemplateGradleJavaLib :packageTemplateGradleJavaLib :publishTemplateGradleJavaLib Streaming artifact /Users/ohtomi/localrepo/lazybones-templates/build/packages/gradle-java-lib-template-1.0.0.zip to Bintray at URL https://api.bintray.com/content/ohtomi/lazybones-templates/gradle-java-lib-template/1.0.0/gradle-java-lib-template-1.0.0.zip;publish=1 BUILD SUCCESSFUL Total time: 5.097 secs
パブリッシュしたテンプレートは、http://bintray.com/<user-name>/<repository-name>
から確認できます。
正しくパブリッシュされていれば、テンプレート名と同じ名前のパッケージが表示されます。
最後に、パブリッシュしたテンプレートのBintrayリポジトリーをLazybonesに設定し、テンプレートを探す対象に含めます。
設定ファイル(~/.lazybones/managed-config.json)を開いて、bintrayRepositoriesへビルドスクリプト中のrepositoryNameと同じ値を加えます。
$ cat ~/.lazybones/managed-config.json { "bintrayRepositories": [ "ohtomi/lazybones-templates", "pledbrook/lazybones-templates" ] }
リポジトリーを設定したら、lazybones list
を実行し、Lazybonesが把握しているリポジトリーごとのテンプレートを一覧してみます。
$ lazybones list Available templates in ohtomi/lazybones-templates gradle-java-lib Available templates in pledbrook/lazybones-templates aem-multimodule-project afterburnerfx afterburnergfx angular-grails ..(snip)..