Gradle勉強中

Gradle

最近Gradle勉強中です。
僕はそもそもMavenやIvyもよく分かっていないのですが、無理やり飛び級してみました。
今はドキュメント読み進め中です。英語不得意なのでなかなか進まない。

Gradleのプロジェクト作成スクリプト

$GRADLE_HOME/samples/groovy/quickstart
のフォルダをどこかにコピーして、リネームするとGroovyのプロジェクトが完成。
この方法でもよいが、Groovyプロジェクト作成スクリプトも作成してみた。
PATHの通った場所において、

groovy mkpjGradle.groovy testproject

でOK。(testprojectの部分には、自分のプロジェクト名を入力。)
カレントディレクトリ以下にプロジェクトフォルダが作成される。

mkpjGradle.groovy

#!/usr/bin/env groovy
def error = null;
try{
if( args.size() <= 0 ){
error = 1
throw new Exception("Parameter args[0] is not set.");
}
def projectHome = new File(args[0])
if( projectHome.exists() ){
error = 2
throw new Exception("Directory is exists.");
}
print "Please input Groovy Version to want to use(default ${GroovySystem.version}):"
def groovyVersion = System.in.newReader().readLine()?:GroovySystem.version
if( !(groovyVersion ==~ /^\d\.\d\.\d$/) ){
error = 3
throw new Exception("Groovy Version is invalid.");
}
print "Please input Project Version(default 1.0.0):"
def projectVersion = System.in.newReader().readLine()?:"1.0.0"
if( !(projectVersion ==~ /^\d\.\d\.\d$/) ){
error = 4
throw new Exception("Project Version is invalid.");
}
projectHome.mkdirs()
new File("${projectHome}/build.gradle").write """\
usePlugin("groovy")
sourceCompatibility = 1.6
version = "${projectVersion}"
repositories {
flatDir(dirs: "\$rootDir/lib")
mavenCentral()
}
dependencies {
groovy "org.codehaus.groovy:groovy:${groovyVersion}"
testCompile "junit:junit:4.8.1"
}
task jarWithZipFileSet(type : Jar){
zipFileSet(dir: "\$rootDir/lib")
new File("\$rootDir/build/classes").listFiles().findAll{ it.directory }.each{
zipFileSet(dir: it.path)
}
}
"""
new File("${projectHome}/src/main/java").mkdirs()
new File("${projectHome}/src/main/groovy").mkdirs()
new File("${projectHome}/src/main/resources").mkdirs()
new File("${projectHome}/src/test/java").mkdirs()
new File("${projectHome}/src/test/groovy").mkdirs()
new File("${projectHome}/src/test/resources").mkdirs()
new File("${projectHome}/lib").mkdirs()
new File("${projectHome}/bin").mkdirs()
showreports = new File("${projectHome}/bin/showreports")
showreports.write """\
#!/bin/bash
firefox build/reports/tests/index.html &
"""
showreports.executable = true
println "SUCCESSFUL"
} catch (Exception e){
println "FAILURE:${e.message}"
System.exit(error?:99)
}

使ってみた感想

作成したGroovyスクリプトをプロジェクトメンバーに公開するのは、実行環境のセットアップなどの問題で難しかったりする。でもGradleでマニフェスト付jarで提供できるとそういう問題も解決かな?と思ってみている。

2010/01/31追記

ちょっとスクリプト名をgrails、griffonっぽくしてみた。

2010/02/01追記

またちょっと変更。プロジェクト内で使用するGroovyのバージョン指定がない場合には、実行中のGroovyのバージョンがデフォルト値となるようにしてみた。(id:kiy0takaさん、id:uehajさんに教えていただいた。)

2010/07/26追記

gralde test実行結果がbuild/reports/tests/index.html に出力されるがそれをfirefoxで閲覧するためのスクリプトも追加出力。

$ bin/showreports

で閲覧可能。

プロジェクトのバージョンも指定できるようにした。

2010/07/30追記

以下の lib フォルダが作成されるように変更。
ここにjarファイルを配置するとbuild.graldeに設定したjarはまずlibフォルダにあるかどうかを参照する。
なければMaven Central Repositoryを探しにいく。

プロジェクトホーム
|-- bin
|-- build
|-- build.gradle
|-- lib
`-- src

2010/08/05追記

*いい加減githubとかにあげないとなぁww

以下のコマンドを実行すれば、jarファイル作成時にプロジェクトフォルダのlib以下のjarファイルを含めてくれる。
配布が楽。

gradle jarWithZipFileSet

Gradle

Posted by genzouw