明日から使えるgradle

82
明日から使えるGradle 2011/07/22 @kimukou_26

Transcript of 明日から使えるgradle

Page 1: 明日から使えるgradle

明日から使えるGradle

2011/07/22

@kimukou_26

Page 2: 明日から使えるgradle

はじめにお断り書き下記環境上で試行錯誤した設定を記述してております

MBA等で開発されている方にとっては、冗長で不必要な設定もあると思われます

その点に関してましては御容赦頂けると幸いです

環境WinXPSP3 32bit、Win7 32bit

JDK6u26 gradle1.0-milestone-3

Page 3: 明日から使えるgradle

今日はGradle凄いぞ!な話は話しませんw

基本の紹介スライドの紹介@literalice さん

「GradleによるG*なビルドシステムの構築」

http://www.slideshare.net/literalice/gradle-introduction

サンプル http://bit.ly/gNu4Ad

@nobeans さん

“How about Gradle?"http://d.hatena.ne.jp/nobeans/20110225/12985

98901

Page 4: 明日から使えるgradle

ユーザドキュメントの和訳サイト

@literalice さん

http://www.monochromeroad.com/artifacts/gradle/userguide/userguide.html

GitHubで翻訳活動されています

https://github.com/literalice/gradle-ja/wiki

Page 5: 明日から使えるgradle

まずGroovyを知っている方~知らない方はGroovy1.8本がつい最近出

ましたの是非読んでください~

この本を読んでから「Groovy In Action」を読み直すと理解度増すこと請け合いw

Page 6: 明日から使えるgradle

表紙はこんな本です

Page 7: 明日から使えるgradle

ではなく

@torazuka さん

Page 8: 明日から使えるgradle

こちらです。絶賛発売中です

Page 9: 明日から使えるgradle

ここで表紙特集組まれてます~

@orange_clover さん

お前の「プログラミングGROOVY」は何色だ?

http://d.hatena.ne.jp/orangeclover/20110706/1309954580

Page 10: 明日から使えるgradle

@mike_neckさん @40balmungさん

Page 11: 明日から使えるgradle

発売記念Ghello企画

@orange_clover さんまとめ

広がるGroovyプログラマの輪 #ghellofinalize()!! コードと実行結果の一部を紹介

http://d.hatena.ne.jp/orangeclover/20110714/1310649352

Page 12: 明日から使えるgradle

その他のGroovy特集Groovyistのみなさま申し訳ございません。3Dは目に有害だそうです。お詫びにGroovyの3美少女で。

http://d.hatena.ne.jp/orangeclover/20110724/1311461093

アイコンにGroovyのロゴを追加するjarを作りましたhttp://d.hatena.ne.jp/fumokmm/20110526/1306421368

Groovy物語

http://d.hatena.ne.jp/fumokmm+tale-of-groovy/

@torazuka

さん

@dekchi

さん}@fumokmm

さん

@ orange_cloverさん

Page 13: 明日から使えるgradle

ここから[本編]ページ

Page 14: 明日から使えるgradle

さて本題

Groovyって業務に使っている人

居ますか?

たぶん趣味で触っている人がほとんど?

Play FrameworkでViewにGroovy使われ

ているという話もあるけど・・・

Page 15: 明日から使えるgradle

業務で使っている人でTLで

有名な人TDDで

Grailsで

Jenkinsで@tyamaさん

@kyon_mmさん

@kiy0takaさん

7/29(金)JGGUGで

講演予定(こくちーずで募集中)

Page 16: 明日から使えるgradle

TDDに関しては@kyon_mmさん

JavaプロジェクトでGroovyを導入すべき5つの理由 http://goo.gl/q8Mrt から抜粋

1. 簡潔なループ処理

2. 明示的なPowerAssert(エラーが見やすい)

3. privateにも簡単アクセス(書き換え可能)

4. 強力なデバックプリント(dump()関数)

5. 簡単なリスト、マップ定義

Page 17: 明日から使えるgradle

でもちょっと普通の人だと導入の敷居が高いですよね

それ以外で普通の人でも導入しやすいものは?

そこでGradle の登場です

Page 18: 明日から使えるgradle

Gradleの特徴①

イメージ的には「mavenが使えるbuild.xml」

doc,src jar はivy的にDLはしないようです

Gant(AntBuilder)を拡張した物です。

DSL記述が出来ます(クロージャ記述)

Build.xmlやpom.xmlと同じように記述する事はほぼ同じなので「Groovy凄く詳しくな

いと使えない」という事はありません

Page 19: 明日から使えるgradle

Gradleの特徴②

既存の構成にファイルを少し追加するイメージで使えます

既存構成を変更する必要がありません

実行パターンが2つ選べます

Gradle本体をインストールする場合

Gradleコマンドで実行

gradleをインストールしない場合

Gradle warperで作成した gradlew bat等で実行

Page 20: 明日から使えるgradle

Gradleが得意な処(vs Maven)Groovyスクリプトなので、どこまで通ったかprint文でデバック出来る!

Gradle自体をインストール無でも実行可能

@bluepapa32さん インストールレスで Gradleしてみる http://goo.gl/XYd8s

Pom.xml、build.xmlのパースエラーや動かないときは泣きそうになりますw

Page 21: 明日から使えるgradle

Gradleが不得意な処(vs Maven①)

日本語使うときには、Javaの文字コードに引きずられてしまう(winならSJIS

GradleファイルもUTF-8管理なら実行時に要

環境変数定義

豊富なmaven用PLUGINが使えない(Pluginもまだ少ない)

set JAVA_OPTS=-Dgroovy.source.encoding=UTF-8 -Dfile.encoding=UTF-8

Jenkinsで使う「hpi:run 」等

Page 22: 明日から使えるgradle

Gradleが不得意な処(vs Maven②)

Maven用pluginの記述を移植等するのが

困難

Gcc使ったり、makefile連携が難

ant.execで遣るのはちょっとw な感じ

Page 23: 明日から使えるgradle

Gradleが得意な処(vs G系①)

Gantのように「ANT_HOME」「GROOVY_HOME」指定してがない!

Pluginも書けるよ(機能拡張はPluginでってRailsとかの考え方に近い?

@bluepapa32 さん プロパティファイルをnative2ascii するためのプラグインを作ってみた http://goo.gl/NFGg6

Page 24: 明日から使えるgradle

Gradleが得意な処(vs G系②)

「Groovy試してみたいけどフルDLしてイン

ストールする手間まではちょっと」にも対応可能

[buildscript]の機能を使って、インストールが少ない可搬性のよいgroovyscript実行環

境を作ることも可能

「Gradle Wrapper」の仕組みを使います

Page 25: 明日から使えるgradle

実際のMavenプロジェクトで試してみる①

今回使うプロジェクト@hakurai さん fest-swing-example をforkした

ものhttps://github.com/kimukou/fest-swing-example

元の解説スライド

Automate the Swing application

http://www.slideshare.net/hakuraipod/automate-the-swing-application-testing

Page 26: 明日から使えるgradle

実際のMavenプロジェクトで試してみる②

コンパイル設定(maven)<build>

<plugins> <plugin>

<groupId>org.apache.maven.plugins</groupId>

<artifactId>maven-compiler-plugin</artifactId>

<version>2.3.2</version>

<configuration>

<source>1.6</source> <target>1.6</target>

</configuration>

</plugin> </plugins>

</build><properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

</properties>

Page 27: 明日から使えるgradle

実際のMavenプロジェクトで試してみる③

コンパイル設定(gradle)②、③は

コンパイルバージョンJDK1.6

ソースはUTF-8だよ

の設定apply plugin: 'java'

def jdkVersion = 1.6

def enc = 'UTF-8'

sourceCompatibility = jdkVersion

targetCompatibility = jdkVersion

[compileJava, compileTestJava].each{ it.options.encoding = enc }

Page 28: 明日から使えるgradle

実際のMavenプロジェクトで試してみる④

依存記述(maven)<dependencies> <dependency>

<groupId>org.easytesting</groupId>

<artifactId>fest-swing</artifactId>

<version>1.2.1</version>

<scope>test</scope>

</dependency>

<dependency>

<groupId>junit</groupId>

<artifactId>junit</artifactId>

<version>4.5</version>

<scope>test</scope>

</dependency></dependencies>

Page 29: 明日から使えるgradle

実際のMavenプロジェクトで試してみる⑤

依存記述(gradle)

④、⑤はMavenからDL、クラスパス参照するjar記述

の設定

dependencies {

testCompile 'org.easytesting:fest-swing-junit-4.3.1:1.2.1'

testCompile 'junit:junit:4.8.1'

}

Page 30: 明日から使えるgradle

実際のMavenプロジェクトで試してみる⑥

実行(gradle)

set MVN_HOME=D:¥Tooldev/apache-maven-3.0.3

Set JAVA_HOME=c:¥opt¥jdk

set PATH=%JAVA_HOME%/bin;%MVN_HOME%/bin

mvn

実行(maven)

Set JAVA_HOME=c:¥opt¥jdk

set PATH=%JAVA_HOME%/bin

gradlew

gradlew –b build.gradle //ファイル名指定実行(指定しないときは build.gradle)

Page 31: 明日から使えるgradle

TestRunnerのようなGUIで実行する場合は

gradlew --gui

時間があればデモ(たぶん無いはず)

Page 32: 明日から使えるgradle

時間があればgroovyでのtestcase追加したかったけど。。

Groovyプロジェクトに変更して

GriffonのFestPluginのjarを追加すれば、DSL記述でテストコード追加できるのです

が。。

残念ながら 今回はTimeUp です

そのうち追加してみます

Page 33: 明日から使えるgradle

ここから[スクリプト実行環境としてのGradle]

ページ

たぶん話す時間はないと思う~

Page 34: 明日から使えるgradle

スクリプト実行環境としてのGradle①

GroovyConsoleやgroovyコマンドでmavenから落とせないjarを使おうとすると

ちょっと面倒

起動前に USER_HOME/.groovy/lib にjarをいれておく必要があり

でも他のGスクリプトにも影響がw

WinだとUSER_HOME=%USERPROFILE%

Page 35: 明日から使えるgradle

スクリプト実行環境としてのGradle②

下記なら実行可能だけど一般的じゃないかも

set JAVA_OPTS=-Dgroovy.source.encoding=UTF-8 -Dfile.encoding=UTF-8

%JAVA_HOME%/bin/java -cp ".;./lib/*" groovy.ui.GroovyMain %*

Lib

+- groovy-all-1.8.0.jar

+- ivy-2.2.0.jar

+- 追加するjar

set JAVA_OPTS=-Dgroovy.source.encoding=UTF-8 -Dfile.encoding=UTF-8

%JAVA_HOME%/bin/java -cp ".;./lib/*" groovy.ui.Console %*

groovy

groovyConsole

Page 36: 明日から使えるgradle

インストレスで手軽に試せる環境で下記があるんだけど・・orz

@bluepapa32さんGroovyConsole JWS

http://goo.gl/G5Boz <入力履歴機能あり

JWSの仕様のせいで下記のスクリプトは動かない><(systemClassLoader 指定が出来ない)

実行難なコード例)・・ローカルのなら出来ますSQL使ってCSVファイルからデータ抽出方法

http://goo.gl/JNaES

@GrabConfig(systemClassLoader = true)

これ駄目><

Page 37: 明日から使えるgradle

スクリプト実行環境としてのGradle③

buildscript という仕組みがあります

Gradleファイル実行時にmavenにアクセス&ク

ラスローダにライブラリ追加する仕組み

buildscript {

repositories {

mavenRepo urls:'http://msgpack.org/maven2/'

}

dependencies {

classpath("org.msgpack:msgpack:0.5.2-devel")

}

}

Page 38: 明日から使えるgradle

スクリプト実行環境としてのGradle④

従ってjavaバッチファイルとしても使えます

スクリプト例)

Msgpack を試した例

https://github.com/kimukou/gradlestudy/tree/master/msgpack

MsgPack自体の説明

http://d.hatena.ne.jp/viver/20101025/p1

Page 39: 明日から使えるgradle

gradle jar

raw=[-109, -89, 109, 115, 103, 112, 97, 99, 107, -90, 107, 117, 109, 111, 102, 1

15, -91, 118, 105, 118, 101, 114]

dst2=<java.util.ArrayList@c95717d0 elementData=[msgpack, kumofs, viver] size=3modCount=3>

BUILD SUCCESSFUL

Total time: 1 mins 37.735 secs

"====jar running start =="

src=<MyClass@196c1b0 str=msgpack num=0.4 flag=0>

raw=[-109, -89, 109, 115, 103, 112, 97, 99, 107, -53, 63, -39, -103, -103, -103,

-103, -103, -102, 0]

dst=<MyClass@1db05b2 str=msgpack num=0.4 flag=0>

"====jar running end =="

実行結果出力

Page 40: 明日から使えるgradle

ここから[IDE連携]ページ

Page 41: 明日から使えるgradle

IDE GUI Pluginに関して

Eclipse

Gradle Eclipse Pluginhttp://www.breskeby.com/downloads/gradle/eclipse/update/

解説サイト @shinyaa31 さん http://goo.gl/zeV8Z

IntelliJ

Gradle GUI plugin http://goo.gl/Y48CP

Grab plugin http://goo.gl/41swX

Community Edition でも使えます。

Groovy Pluginは標準で入っています

Page 42: 明日から使えるgradle

IDE Support Pluginに関して

こちらはProjetctFile等IDEで開くのに必要なファイルを生成するのをサポートするGradleのPluginです

gradle plugin解説ページ @waman10da さん http://goo.gl/yCLOL

未翻訳ページ http://goo.gl/tXI0b

Eclipse Plugin翻訳中ページ http://goo.gl/f1Bjn

設定値、使用例(公開が少ない)の検証まで全然出来てません><

Page 43: 明日から使えるgradle

ここから[Jenkins連携]ページ

Page 44: 明日から使えるgradle

Jenkins Gradle pluginに関して

現状GradleWarpperがSlaveノードで動かせ

ない制限がマスタノードでは実行可能

./gradlew でシェル(バッチ)実行してね

環境変数がSWITCHESで設定できるけどgradle.propertiesに設定記述しておいてbuild.gradle内で判別する方がちゃんと動く感じ

Page 45: 明日から使えるgradle

使用例

使用Jenkins Plugin

copy-to-slave

マスタからファイルをコピーするPlugin

Envfile ・・設定ファイル値を環境変数にセット

Setenv ・・JOB上で環境設定

Gradle ・・gradleビルド

Growl ・・通知

Page 46: 明日から使えるgradle

Jenkinsの管理=>システム設定

Gradle Pluginインストール

別DL、展開したGradleのパスを設定する

Page 47: 明日から使えるgradle

JOBの記述例①

Page 48: 明日から使えるgradle

JOBの記述例②

Copy-to-slave

envfilesetenv

Page 49: 明日から使えるgradle

copy-to-slaveGradleのbuild.gradle、build.propertiesファイル等の記述はほぼ同じなので、マスターからコピーする形にする構成

env-file今回のbuild.gradleファイルはgrailsをtest-appするものなので、GRAILS_HOMEの定義が必要(素のOSイメージ

Set-envPATHにGRAILS_HOMEを通す為に使用

Page 50: 明日から使えるgradle

envfile.txt の記述例

GIT_HOME=D:/Tooldev/Git

GRADLE_HOME=D:/Tooldev/gradle-1.0-milestone-3

ANT_HOME=D:/Tooldev/ant

MVN_HOME=D:/Tooldev/apache-maven-3.0.3

GRAILS_HOME=C:/opt/grails-1.3.7

GRIFFON_HOME=C:/opt/griffon-0.9.3-beta-2

GROOVY_HOME=C:/opt/groovy-1.8.0

#JAVA_HOME=c:/opt/jdk

JAVA_OPTS=-Dgroovy.source.encoding=UTF-8 -Dfile.encoding=UTF-8

Page 51: 明日から使えるgradle

JOBの記述例③-1Gradle warperを使った例

Wrapper構成は事前にコミット必要

VM引数等

Page 52: 明日から使えるgradle

JOBの記述例③-2

インストール済Gradleを使う例

Page 53: 明日から使えるgradle

現在のJenkins Gradle PluginだとJOB上の環境変数を引き継いでくれるように@kiy0taka さんが直してくれたので

SWITCHESの指定は特に要らないはずですとりあえず設定できるというのを図示しました

Page 54: 明日から使えるgradle

JOBの記述例④Growlの通知設定

ここではWin版を起動済みとします

Page 55: 明日から使えるgradle

Jenkins関連メモ①Growl for Windows

DLページ http://www.growlforwindows.com/gfw/

インストール後、通知許可設定が必要

Page 56: 明日から使えるgradle

Jenkins関連メモ②

スレーブ等の指定位置にソフトを入れるJENKINS_HOME/userContent にzip構成入れる

URLの設定をしておくJenkinsの管理=>システム設定

IP指定でもOK(スレーブ側が認知できる形で)

JOB側でwget等で取得

Page 57: 明日から使えるgradle

ここから[ワンポイント]ページ

Page 58: 明日から使えるgradle

ローカルjar参照の話

repositories {

flatDir(dirs: file("$projectDir/libs"))

dependencies {

groovy group:'', name:'sdloader', version:'jsp21‘

compile group:'', name:'swt', version:''

}

ProjectDir/lib

+- sdloader-jsp21.jar

+- swt.jar

Jar 名+「-」+バージョン名で参照されます(groupはなくてもOK)

下記の構成の時

Page 59: 明日から使えるgradle

よく使うタスク順序制御

タスク名.doFirst{ //記述 }

タスク開始時に実行する処理を書きます

タスク名.doLast { //記述 }

タスク終了後に実行する処理を書きます

タスク名.dependsOn タスク名

Build.xmlでの depensOnと同じ

Page 60: 明日から使えるgradle

Jar作成に関する記述例アーカイブ名 とバージョン名

Fat.jarと実行可能jarの話 (swt.jarだけ別同梱にする場合)

version = “jsp21“ //バージョンarchivesBaseName = ”sdloader“ //アーカイブ名

manifest.mainAttributes('Main-Class' : "sdloader.SystemTrayOpen",'Implementation-Version': version,'Class-Path': "swt.jar“

)

jar {//from configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } ・・全参照でfatの場

from configurations.compile.collect { it.isDirectory() ? it : it.name=="swt.jar" ?:zipTree(it) }

}

Page 61: 明日から使えるgradle

既存の構成が微妙で動かないとき

GroovyファイルとJavaファイルが相互参照しているとき(位置が違うときも同じく)

resourceDir(未確認)

apply plugin: 'groovy'

sourceSets.main.groovy.srcDirs += 'src/main/java‘

sourceSets.main.java.srcDirs =[]

apply plugin: 'groovy'sourceSets.main.resources.srcDirs

Page 62: 明日から使えるgradle

参照設定等を外だしする方法build.gradleが実行ファイルとした場合

init.gradle <build.gradleより前に実行

gradle.properties

-PXXXX による指定

参考サイト http://goo.gl/MlhaB

gradle -Pyourname=literalice hello

R_HOME=C:/opt/R-2.13.0

ant.property(environment:'env')

ant.properties['env.GRADLE_OPTS']=GRADLE_OPTS

Page 63: 明日から使えるgradle

build.gradleファイルの分割

1. apply from: 'gradle/other.gradle'

2. apply plugin: 'something'

1. 参考: @bulepapa32 さん Gradle で環境ごとにあれもこれも変更するhttp://goo.gl/Nyizr から

3. @osimajp さん build.gradle から外部の Groovy スクリプトを呼び出して使う http://goo.gl/z4U9L

Page 64: 明日から使えるgradle

Win環境で動かして嵌る処「Gradle --deamon」コマンド(または下記セット)

GradleファイルをUTF-8保存

Gradleファイル上に日本語記述有り

– エラーが出て実行できないことがあり

– SJIS保存なら実行可能

– 下記の環境変数設定しても見てくれないっぽい

正規表現の記述がMac等と微妙に違う

set JAVA_OPTS=-Dgroovy.source.encoding=UTF-8 -Dfile.encoding=UTF-8

set GRADLE_OPTS=-Dorg.gradle.daemon=true

Page 65: 明日から使えるgradle

Win環境でじゃなくても嵌る処@fumokmm さん Gradleで--daemonオプションを付けた際にnew Fileするとうまくいかない

http://d.hatena.ne.jp/fumokmm/20110727/1311717020

Gradle標準関数を出来るだけ使いましょう の話

どうも –daemonオプション依存ではないよう

Page 66: 明日から使えるgradle

参考にすると良いサイト

Gradle:Goodnesshttp://mrhaki.blogspot.com/2009/11/gradle-goodness-creating-gradle-plugin.html

Gradle Cookbookhttp://docs.codehaus.org/display/GRADLE/Cookbook

Practicalgradlehttp://www.practicalgradle.org/blog/

Page 67: 明日から使えるgradle

ここから[メモ]ページ

Page 68: 明日から使えるgradle

Gradle Wrapperに関して①$GRADLE_HOME/bin/gradle wrapper

で作られる構成

Gradleフォルダは同じverの物コピーで基本OK

gradle-wrapper.jarはしばらく書換っていないっぽい

gradlew

gradlew.bat

gradle/

+- wrapper/

+- gradle-wrapper.jar

+- gradle-wrapper.properties

Page 69: 明日から使えるgradle

Gradle Wrapperに関して②

distributionUrl 書き換えるだけで基本問題無いです

従って閉鎖空間でも、指定位置にランタイムzip置けば使えます

#Thu Mar 10 09:37:26 JST 2011

distributionBase=GRADLE_USER_HOME

distributionPath=wrapper/dists

zipStoreBase=GRADLE_USER_HOME

zipStorePath=wrapper/dists

distributionUrl=http¥://gradle.artifactoryonline.com/gradle/distributions/gradle-1.0-milestone-3-bin.zip

Page 70: 明日から使えるgradle

mavenからのDL時の話①

USER_HOME/.ivy2にダウンロードされますGroovyソースコード上でGrab記述して実行した場合

Mavenだと

G系のFWだとアプリキャッシュは下記に置かれます

USER_HOME/.gradle

USER_HOME/.grails

USER_HOME/.griffon

USER_HOME/.groovy/grapes

Ivy系のjarの参照情報持っている節があります

(upgrade時に動かない時にプロジェクトの参照情報を消して再実行すれば、動くようになる事も)

USER_HOME/.m2

Page 71: 明日から使えるgradle

mavenからのDL時の話②

一度DLしたモジュールは他の端末の同じ位置にコピーすればDL必要ありません

よくモジュールのDLが失敗することを経験してい

るので、コンパイルエラーで引っかかった対象フォルダ(plugin、jar)等を消して再実行する

G系のFWだとDLしたタイミングでの同時コンパ

イルはコンパイルエラーになることがある

一度 cleanコマンドを実行して再実行する事が必要

これで閉鎖空間端末でも実行OK!

この場合、短気に全消しすると嵌ります

Page 72: 明日から使えるgradle

mavenからのDL時の話②

Mavenに登録されていないjar使いたい時

GroovyConsle等

USER_PROFILE/.groovy/lib にいれて立ち上げ

G系のFW等(grails、griffon等)

PROJECT_HOME/lib にいれます

Gradle

PROJECT_HOME/lib にいれて下記記述追加

repositories {flatDir(dirs: file("$rootDir/lib"))

}

Page 73: 明日から使えるgradle

ここから[参考]ページ

Page 74: 明日から使えるgradle

G系FWでmaven参照記述①

Grails、Griffonアプリレベル[アプリ側]grails-app/conf/BuildConfig.groovy

Grails、Griffon install-plugin レベル[Plugin側]grails-app/conf/BuildConfig.groovy

Grails、Griffon pluginフォルダ参照レベル[アプリ側]

BuildConfig.groovyに下記記載

[プラグイン側]GriffonScript/_Events.groovy にmaven参照を記載

grails.plugin.location.glassfish="../grails-glassfish"

Page 75: 明日から使えるgradle

repositories {

grailsPlugins()

grailsHome()

grailsCentral()

//mavenLocal()

//mavenCentral()

//mavenRepo "http://download.java.net/maven/2/"

//mavenRepo "http://repository.jboss.com/maven2/"

}

dependencies {

runtime 'org.atmosphere:atmosphere-jgroups:0.7.2‘

}

}

アプリ側BuildConfig.groovy

Page 76: 明日から使えるgradle

def manager = griffonSettings.dependencyManager

manager.parseDependencies {

inherits "global“

resolvers {mavenRepo http://repo1.maven.org/maven2/”griffonCentral()mavenCentral()mavenRepo "http://tinkerpop.com/maven2"mavenRepo http://fortytwo.net/maven2mavenRepo http://www.orientechnologies.com/listing/m2/

}compile 'com.tinkerpop:gremlin:1.2'

}

Griffon Plugin_Events.groovy(http://goo.gl/4KK79 )

Page 77: 明日から使えるgradle

repositories {

flatDir(dirs: file("$rootDir/libs"))

mavenCentral()

mavenRepo urls: [ "http://msgpack.org/maven2/",

"http://download.java.net/maven/2/",

"http://repository.jboss.org/maven2/",

"http://repository.jboss.org/nexus/content/groups/public-jboss/"]

}

dependencies {

groovy group: 'org.codehaus.groovy', name: 'groovy-all', version: '1.8.0'

groovy group:‘’, name:‘sdloader’, version:‘jsp21‘ //ローカルjar参照例

}

比較 Gradle記述①

Page 78: 明日から使えるgradle

比較 Gradle記述②mavenRepoの記載

[Gradlle]mavenRepo の指定が複数指定可能

[Grails、Griffon」1行単位

Depenciesの記載 参考URL http://goo.gl/qCJOn

[Groovy]:Grab・・ http://mvnrepository.com/ 記述のまま

[Grails、Griffon、Gradle]

Groovyでも1.7.5からは繋げ記述で共通化できる

@Grab(group='com.sun.jna', module='jna', version='3.0.9')

Runtime group:'com.sun.jna‘ name:'jna', version:'3.0.9'

‘com.sun.jna:jna:3.0.9'

‘com.sun.jna:jna:[3.0.9,)’ //3.0.9以上の意味

Page 79: 明日から使えるgradle

参照除外の話(Groovy1.8)

GroovConsoleの場合

@irof さん SpockをGroovy1.8のGroovyConsoleから使ってみようhttp://d.hatena.ne.jp/irof/20110721/p1

@Grab('org.spockframework:spock-core:0.5-groovy-1.8')@GrabExclude('org.codehaus.groovy:groovy-all')import spock.lang.*

class HelloSpec extends Specification { }

Page 80: 明日から使えるgradle

参照除外の話(gradle)

Gradleの場合

@bluepapa32 さんGradle の依存関係を使いこ

なしてみる

http://d.hatena.ne.jp/bluepapa32/20110511/1305135686

//testCompile 'org.spockframework:spock-core:0.5-groovy-1.7'testCompile('org.spockframework:spock-core:0.5-groovy-1.8') {

exclude module: ‘org.codehaus.groovy:groovy-all'

}

Page 81: 明日から使えるgradle

Init.gradleの使い方Groovyserv0.9に適応するときの例(for win

gradle.projectsLoaded {

rootProject.allprojects {

buildscript {

repositories {}

dependencies {}

ant.property(environment:'env')

ant.properties['env.JAVA_HOME']="c:/opt/jdk"

ant.properties['env.GROOVY_HOME']="C:/opt/groovy-1.8.1“

~略~

ant.properties['env.PATH']="${ant.properties['env.GNUSTEP_PATH']};${ant.properties['env.JAVA_HOME']}/bin"

println ant.properties['env.PATH']

}

}

}

gradlew -I init.gradle -x test build

http://goo.gl/6VI2e

Page 82: 明日から使えるgradle

groovy1.8-unlimited

Groovy 1.8 finalを無視するオプション付のunlimited版がキターーーーーーッ!

http://d.hatena.ne.jp/orangeclover/20110628/1309208628

記事書いた人 @orange_cloverさん

作った人@nagai_masato さん

Gbench(http://goo.gl/c1V5q )作者

@Grab('com.googlecode.gbench:gbench:0.2.0‘)