GradleにはMavenリポジトリ公開のためのプラグインが用意されている。
今現在のbuild.gradleが以下のようになっているはず。
build.gradle
1
2
3
4
5
6
7
8
9
10
11
12
| 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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| @@ -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をまったく使ってこなかったためによく分からない。いろんなサイトからかき集めてきた。
設定が終わったら、以下のコマンドを実行してみる。
1
2
3
| $ 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と同一階層にフォルダを作成し、そこに公開することにした。
1
2
3
4
5
6
7
| $ 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
1
2
3
4
5
| #!/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を使おうとすると依存性が解決しきれなくて困った件 - 豆無日記)
ほいで実行。
1
2
3
| $ chmod 700 encode.Groovy
$ ./encode.groovy src/test/resources/txt/utf8.txt
UTF-8
|
ちゃんと参照できた!