GradleでGoogleCodeプロジェクトを作ってみる – その3
GradleにはMavenリポジトリ公開のためのプラグインが用意されている。
今現在のbuild.gradleが以下のようになっているはず。
build.gradle
usePlugin("groovy") sourceCompatibility = 1.6 version = "0.1.0" archivesBaseName = "gconv" repositories { flatDir(dirs: "$rootDir/lib") mavenCentral() } dependencies { groovy "org.codehaus.groovy:groovy:1.7.4" testCompile "junit:junit:4.8.1" }
これに以下の記述を追加する。
@@ -1,4 +1,5 @@ usePlugin("groovy") +usePlugin("maven") sourceCompatibility = 1.6 version = "0.1.0" @@ -13,3 +14,16 @@ groovy "org.codehaus.groovy:groovy:1.7.4" testCompile "junit:junit:4.8.1" } ++uploadArchives {+ repositories{+ mavenDeployer {+ repository(url: "file://localhost/tmp/gconv/svn/maven_repository/")+ pom{+ version = "0.1.0"+ groupId = "com.gmail.genzouw"+ artifactId = "gconv"+ }+ }+ }+}
このあたりはMavenをまったく使ってこなかったためによく分からない。いろんなサイトからかき集めてきた。
Contents
- 1. Mavenリポジトリ公開リソースを作成
- 2. Grapeにて利用してみる
Mavenリポジトリ公開リソースを作成
設定が終わったら、以下のコマンドを実行してみる。
$ gradle uploadArchives
$ cd /tmp/gconv/
$ tree
gconv `-- svn `-- maven_repository `-- com `-- gmail `-- genzouw `-- gconv |-- 0.1.0 | |-- gconv-0.1.0.jar | |-- gconv-0.1.0.jar.md5 | |-- gconv-0.1.0.jar.sha1 | |-- gconv-0.1.0.pom | |-- gconv-0.1.0.pom.md5 | `-- gconv-0.1.0.pom.sha1 |-- maven-metadata.xml |-- maven-metadata.xml.md5 `-- maven-metadata.xml.sha1
生成されたリソースを見ると、build.gradleの設定との関連がわかりやすい。
mavenDeployer要素については以下のとおり。
- repository:生成リソースの出力先を設定する。
- pom:公開するjarのバージョン、グループID、アーティファクトIDを指定。(Maven用語。勉強不足です…)
これをWebのどこかに公開すれば、Grapeから使用可能になるはず。手頃な場所が見つからなかったので、Google CodeのSubversionリポジトリにtrunkと同一階層にフォルダを作成し、そこに公開することにした。
$ mkdir-p /tmp/work $ cd /tmp/work $ svn co https://gconv.googlecode.com/svn svn --username genzouw $ cd svn $ mv /tmp/gconv/svn/maven_repository . $ svn add maven_repository $ svn commit -m"gconv 0.1.0 release."
Grapeにて利用してみる
以下のようなスクリプトを記述する。
encode.groovy
#!/usr/bin/env groovy @GrabResolver(name="gconv", root="http://gconv.googlecode.com/svn/maven_repository") @Grab("com.gmail.genzouw:gconv:0.1.0") import com.gmail.genzouw.gconv.* println Gconv.instance.guess(new File(args[0]).bytes )
GrabResolverを使用すると、Mavenリポジトリを追加できるようなので、この機能を利用。(GrapeでGparsを使おうとすると依存性が解決しきれなくて困った件 - 豆無日記)
ほいで実行。
$ chmod700 encode.Groovy $ ./encode.groovy src/test/resources/txt/utf8.txt UTF-8
ちゃんと参照できた!
ディスカッション
コメント一覧
まだ、コメントがありません