More Related Content Similar to 明日から使えるgradle (20) More from kimukou_26 Kimukou More from kimukou_26 Kimukou (10) 明日から使えるgradle3. 今日は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
12. その他の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/
@ orange_clover @torazuka @dekchi @fumokmm
さん さん} さん
さん
15. 業務で使っている人でTLで
有名な人
TDDで
Grailsで
Jenkinsで @kyon_mmさん
@tyamaさん
7/29(金)JGGUGで
講演予定
@kiy0takaさん
(こくちーずで募集中)
25. 実際の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
26. 実際の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>
27. 実際の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 }
28. 実際の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>
29. 実際のMavenプロジェクトで試してみる⑤
依存記述(gradle)
④、⑤は
MavenからDL、クラスパス参照するjar記述
の設定
dependencies {
testCompile 'org.easytesting:fest-swing-junit-4.3.1:1.2.1'
testCompile 'junit:junit:4.8.1'
}
30. 実際のMavenプロジェクトで試してみる⑥
実行(maven)
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
実行(gradle)
Set JAVA_HOME=c:¥opt¥jdk
set PATH=%JAVA_HOME%/bin
gradlew
gradlew –b build.gradle //ファイル名指定実行(指定しないときは build.gradle)
35. スクリプト実行環境としてのGradle②
下記なら実行可能だけど一般的じゃないかも
Lib
+- groovy-all-1.8.0.jar
+- ivy-2.2.0.jar
+- 追加するjar
groovy
set JAVA_OPTS=-Dgroovy.source.encoding=UTF-8 -Dfile.encoding=UTF-8
%JAVA_HOME%/bin/java -cp ".;./lib/*" groovy.ui.GroovyMain %*
groovyConsole
set JAVA_OPTS=-Dgroovy.source.encoding=UTF-8 -Dfile.encoding=UTF-8
%JAVA_HOME%/bin/java -cp ".;./lib/*" groovy.ui.Console %*
36. インストレスで手軽に試せる環境で
下記があるんだけど・・orz
@bluepapa32さん
GroovyConsole JWS
http://goo.gl/G5Boz <入力履歴機能あり
JWSの仕様のせいで下記のスクリプトは動かな
い><(systemClassLoader 指定が出来ない)
実行難なコード例)・・ローカルのなら出来ます
SQL使ってCSVファイルからデータ抽出方法 これ駄目
http://goo.gl/JNaES ><
@GrabConfig(systemClassLoader = true)
37. スクリプト実行環境としてのGradle③
buildscript という仕組みがあります
Gradleファイル実行時にmavenにアクセス&ク
ラスローダにライブラリ追加する仕組み
buildscript {
repositories {
mavenRepo urls:'http://msgpack.org/maven2/'
}
dependencies {
classpath("org.msgpack:msgpack:0.5.2-devel")
}
}
39. 実行結果出力
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=3
modCount=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 =="
41. IDE GUI Pluginに関して
Eclipse
Gradle Eclipse Plugin
http://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は標準で入っています
45. 使用例
使用Jenkins Plugin
copy-to-slave
マスタからファイルをコピーするPlugin
Envfile ・・設定ファイル値を環境変数にセット
Setenv ・・JOB上で環境設定
Gradle ・・gradleビルド
Growl ・・通知
60. Jar作成に関する記述例
アーカイブ名 と バージョン名
version = “jsp21“ //バージョン
archivesBaseName = ”sdloader“ //アーカイブ名
Fat.jarと実行可能jarの話 (swt.jarだけ別同梱にする場合)
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) }
}
63. 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
64. Win環境で動かして嵌る処
「Gradle --deamon」コマンド(または下記セット)
set GRADLE_OPTS=-Dorg.gradle.daemon=true
GradleファイルをUTF-8保存
Gradleファイル上に日本語記述有り
– エラーが出て実行できないことがあり
– SJIS保存なら実行可能
– 下記の環境変数設定しても見てくれないっぽい
set JAVA_OPTS=-Dgroovy.source.encoding=UTF-8 -
Dfile.encoding=UTF-8
正規表現の記述がMac等と微妙に違う
68. Gradle Wrapperに関して①
$GRADLE_HOME/bin/gradle wrapper
で作られる構成
gradlew
gradlew.bat
gradle/
+- wrapper/
+- gradle-wrapper.jar
+- gradle-wrapper.properties
Gradleフォルダは同じverの物コピーで基本OK
gradle-wrapper.jarはしばらく書換っていないっぽい
69. Gradle Wrapperに関して②
distributionUrl 書き換えるだけで基本問題無いです
#Tue Jun 28 09:56:40 EST 2011
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
distributionVersion=1.0-milestone-4
zipStorePath=wrapper/dists
#urlRoot=http¥://dist.codehaus.org/gradle
urlRoot=http¥://repo.gradle.org/gradle/distributions/
distributionName=gradle
distributionClassifier=bin
従って閉鎖空間でも、指定位置にランタイムzip置けば
使えます
70. mavenからのDL時の話①
USER_HOME/.ivy2にダウンロード
USER_HOME/.ivy2
Groovyソースコード上でGrab記述実行時
USER_HOME/.groovy/grapes
Gradleだと
USER_HOME/.gradle/cache
USER_HOME/.gradle/caches
Mavenだと
USER_HOME/.m2
71. mavenからのDL時の話②
G系のFWだとアプリキャッシュは
下記に置かれます Ivy系のjarの参照情報持っ
ている節があります
USER_HOME/.grails (upgrade時に動かない時
にプロジェクトの参照情報
USER_HOME/.griffon を消して再実行すれば、
動くようになる事も)
Pluginもこんな感じでDLです
Svnレポ/mavenレポ
.ivy2/cache/org.codehaus.griffon.plugins
.griffon/0.9.3/projects/プロジェクト名/plugins
73. mavenからのDL時の話④-1
Windows環境限定らしい話
Pluginのアップデート
例)griffonで下記のコマンド実行時
griffon list-plugin-updates -install
griffon install-plugin XXX
レポジトリに新しいpluginがある場合yesとすると削
除をしようとして「フォルダ掴んでる」でてエラー
1. 手動で .griffon/0.9.3/projects/Prj名/plugins の対
象プラグインを手動で削除
2. Griffon install-plugin XXXX で個別に入れる
74. mavenからのDL時の話④-2
Windows環境限定らしい話
Griffon Pluginインストール失敗時のロールバック
Windowsはどうもフォルダ掴む癖がある
Pluginフォルダうまく消えない(フォルダが残る
Plugin.xmlが消えていて参照エラー
続行不可 にで嵌ることがある
1. 手動で .griffon/0.9.3/projects/Prj名/plugins の対象プラグイ
ンを手動で削除
2. mavenRepoの追加等をメインアプリ側で行う
3. Griffon install-plugin XXXX で個別に入れる
79. アプリ側BuildConfig.groovy
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‘
}
}
80. Griffon Plugin
_Events.groovy(http://goo.gl/4KK79 )
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/maven2
mavenRepo http://www.orientechnologies.com/listing/m2/
}
compile 'com.tinkerpop:gremlin:1.2'
}
81. 比較 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参照例
}
82. 比較 Gradle記述②
mavenRepoの記載
[Gradlle]mavenRepo の指定が複数指定可能
[Grails、Griffon」1行単位
Depenciesの記載 参考URL http://goo.gl/qCJOn
[Groovy]:Grab・・ http://mvnrepository.com/ 記述のまま
@Grab(group='com.sun.jna', module='jna', version='3.0.9')
[Grails、Griffon、Gradle]
Runtime group:'com.sun.jna‘ name:'jna', version:'3.0.9'
Groovyでも1.7.5からは繋げ記述で共通化できる
‘com.sun.jna:jna:3.0.9'
‘com.sun.jna:jna:[3.0.9,)’ //3.0.9以上の意味
83. 参照除外の話(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 { }
84. 参照除外の話(gradle)
Gradleの場合
@bluepapa32 さんGradle の依存関係を使いこ
なしてみる
http://d.hatena.ne.jp/bluepapa32/20110511/130
5135686
//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'
}
85. Init.gradleの使い方
Groovyserv0.9に適応するときの例(for win
gradlew -I init.gradle -x test build
gradle.projectsLoaded {
rootProject.allprojects { http://goo.gl/6VI2e
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.J
AVA_HOME']}/bin"
println ant.properties['env.PATH']
}
}
}