Gradle勉強中
最近Gradle勉強中です。
僕はそもそもMavenやIvyもよく分かっていないのですが、無理やり飛び級してみました。
今はドキュメント読み進め中です。英語不得意なのでなかなか進まない。
Gradleのセットアップ
Groovyベースのビルド管理ツールGradleを使ってみる - 豆無日記がとてもわかりやすい。
Gradleのプロジェクト作成スクリプト
$GRADLE_HOME/samples/groovy/quickstart
のフォルダをどこかにコピーして、リネームするとGroovyのプロジェクトが完成。
この方法でもよいが、Groovyプロジェクト作成スクリプトも作成してみた。
PATHの通った場所において、
groovy mkpjGradle.groovy testproject
でOK。(testprojectの部分には、自分のプロジェクト名を入力。)
カレントディレクトリ以下にプロジェクトフォルダが作成される。
mkpjGradle.groovy
#!/usr/bin/env groovydef error = null; try{ if( args.size() <= 0 ){ error = 1thrownewException("Parameter args[0] is not set."); } def projectHome = new File(args[0]) if( projectHome.exists() ){ error = 2thrownewException("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 = 3thrownewException("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 = 4thrownewException("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 = trueprintln"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
ディスカッション
コメント一覧
まだ、コメントがありません