Gradleで始めるGroovy expand #jjug_ccc #ccc_r14

Afef2fcf56cef5e90af94a1640d95fbc?s=47 grimrose
November 15, 2014

Gradleで始めるGroovy expand #jjug_ccc #ccc_r14

Afef2fcf56cef5e90af94a1640d95fbc?s=128

grimrose

November 15, 2014
Tweet

Transcript

  1. GradleではじめるGroovy expand @grimrose 2014-11-15 JJUG CCC 2014 Fall R1-4 #ccc_r14

  2. あなた誰? • twitter: @grimrose • 好きな言語: Groovy • 好きなIDE: IntelliJ

    IDEA
  3. Agenda • Gradleとは? • Gradle徹底入門 • Groovy REPL • Gradle

    Groovysh Plugin • Groovyとは?
  4. Gradleとは?

  5. Gradleについて • 全く知らない? • 聞いたことがある? • 触ったことがある? • 使っている? •

    Plugin書いてる? • 俺がGradleだ!
  6. Gradleとは? • 次世代ビルドツール • not XML • Groovy DSL •

    Apache License, Version 2.0
  7. Gradleとは? • 主にJava、Groovyで実装 • Java8対応 • Groovy: 2.3.x

  8. Gradleとは? • version 2.2 ◦ 2014-11-10 リリース ◦ リリースは約6~8週間毎

  9. Gradle 2.2 • Component Selection Rules • Declaring module replacements

    • Sonar Runner plugin improvements • Native language cross-compilation improvements • Support for building x64 binaries on Windows using GCC • Specify version control system for IntelliJ IDEA • Specify location of local maven repository independently • Compatibility with OpenShift • Support for renaming imported Ant targets • Sharing configuration files across builds • Plugin to package and publish plugins
  10. Gradle 2.2 • Declaring module replacements • Plugin to package

    and publish plugins
  11. Declaring module replacements ライブラリのグループIDが 変わってしまった時に、 置換して検索する方法を指定できる

  12. Declaring module replacements • com.google.collections:google-collections ◦ -> com.google.guava:guava • org.jboss.netty

    ◦ -> io.netty • spring ◦ -> spring-core
  13. Plugin to package and publish plugins plugindev pluginを使用することで、 今までよりPluginの公開が簡単に

  14. Gradle 2.2 Gradle 2.2, 2.3 news #jggug www.slideshare.net/KyonMm/gradle-22-23- news-jggug

  15. 師曰く 「世界で一番イケてる ビルドツール」

  16. あなたとGradle 今すぐインストール

  17. GVM Groovy enVironment Manager

  18. GVMのインストール $ curl -s get.gvmtool.net | bash

  19. posh-gvm Windows環境でのGroovy/Grails開発を 幸せにする!? GVMクローンposh-gvmを使ってみる qiita. com/_y_u_/items/7a4ffd6b79c829c99 62f

  20. Gradleのインストール $ gvm i gradle

  21. Gradle徹底入門

  22. Gradle徹底入門 Gradle徹底入門 次世代ビルドツールによる自動化基盤の構築

  23. Gradle徹底入門

  24. Gradle徹底入門 ご出版 おめでとうございます!

  25. Gradle徹底入門 既に購入済みの人?

  26. Gradle徹底入門 • 導入編 • 基礎編 • 実践編 • 発展編

  27. Gradle徹底入門 592ページ

  28. Gradle徹底入門 Gradleを とりあえず使ってみたい

  29. Gradle徹底入門 • 導入編 ◦ Gradleの世界 ◦ インストールと設定 ◦ スタートアップGradle •

    基礎編 ◦ Javaプロジェクトのビルド
  30. Gradle徹底入門 Gradleの設定方法が いまいち分からない

  31. Gradle徹底入門 • 基礎編 ◦ Gradleの基礎 ◦ スクリプトファイルの記述 ◦ 依存関係の管理 •

    実践編 ◦ Androidプロジェクトでの適用
  32. Gradle徹底入門 開発プロセスに取り入れたい

  33. Gradle徹底入門 • 実践編 ◦ Gradleでのテスト ◦ 統合開発環境(IDE)との連携 • 発展編 ◦

    Jenkinsとの連携 ◦ アーカイブの作成とファイルの公開
  34. Gradle徹底入門 厚いし重い

  35. Gradle徹底入門 Kindle

  36. Gradle徹底入門 ぜひ、お手元に一冊

  37. Gradle徹底入門 Gradle Plugin

  38. Gradle Plugin 標準プラグイン

  39. Gradle Plugin 3rd party Plugin

  40. Gradle Plugin plugins.gradle.org

  41. Gradle Plugin 個人的におすすめ

  42. Gradle Plugin coverallsのバッジ

  43. Gradle Plugin coveralls-gradle-plugin (github.com/kt3k/coveralls-gradle-plugin)

  44. Gradle Plugin 標準のJetty Pluginの versionが古い

  45. Gradle Plugin Gretty (github.com/akhikhl/gretty)

  46. Gradle Plugin APサーバにデプロイしたい

  47. Gradle Plugin Gradle Cargo plugin (github.com/bmuschko/gradle-cargo-plugin)

  48. Gradle Plugin Androidでも Groovyを使いたい

  49. Gradle Plugin Groovy on Android (github.com/melix/groovy-android-gradle-plugin)

  50. Gradle + Arquillian Gradleでも Arquillianを使いたい

  51. Gradle + Arquillian ShrinkWrap Resolvers (github.com/shrinkwrap/resolver)

  52. 話すこと • 導入編 ◦ Gradleの世界 ◦ スタートアップ Gradle • 基礎編

    ◦ Gradleの基礎 ◦ スクリプトファイルの記述 • Appendix ◦ E. Groovy リファレンス
  53. 話さないこと • 実践編 • 発展編

  54. Gradle徹底入門 続きは本で

  55. Groovy REPL

  56. 言語を学ぶ ちょっと試しながら

  57. 言語を学ぶ REPL

  58. Read Eval Print Loop REPL 欲しいですよね?

  59. Java REPL albertlatacz/java-repl

  60. Java REPL $ java -jar javarepl.jar

  61. Java REPL Project Kulla

  62. Groovy REPL Groovy Shell

  63. Groovy Shell $ gvm i groovy

  64. Groovy Console $ groovyConsole

  65. Groovy Shell $ groovysh

  66. Gradle Groovysh Plugin

  67. Gradle Groovysh Plugin gradle-groovysh-plugin (github.com/tkruse/gradle-groovysh-plugin)

  68. build.gradle buildscript { repositories { jcenter() } dependencies { classpath

    'com.tkruse.gradle:gradle-groovysh-plugin:1.0.1' } } apply plugin: 'com.github.tkruse.groovysh' apply plugin: 'java'
  69. build.gradle (2.1〜) plugins { id 'com.github.tkruse.groovysh' version '1.0.1' } apply

    plugin: 'java'
  70. 注意点 • プロジェクトをロックしてしまう。 ◦ 使用中は、IntelliJ IDEA等でGradleプロ ジェクトの更新が出来ない。 • -q オプションを使う

    ◦ Gradleのログが出力されて使いづらい • --no-daemon オプションを使う ◦ Gradleをdaemonで動かしてる人は注意。
  71. 起動 $ ./gradlew -q shell

  72. 終了 • Ctrl + c • :exit ◦ :x •

    :quit ◦ :q
  73. Groovy Shell groovy-lang.org/groovysh.html

  74. Groovyとは?

  75. Groovyとは • 選択的型付け言語 • Javaより簡潔 • Javaの資産が使える • スクリプトも書ける •

    セミコロンレス • etc...
  76. Groovy groovy-lang.org

  77. プログラミングGROOVY

  78. Groovy Java SEの標準APIを 拡張

  79. GDK Groovy Development Kit

  80. Groovy Stream API と GDK

  81. Stream API と GDK • filter • forEach • map

    • reduce • flatMap • findAll • each • collect • inject • flatten ◦ (+ collect)
  82. Stream API と GDK • allMatch • anyMatch • collect

    • distinct • count • max • min • sorted • every • any • collect • unique • size • max • min • sort
  83. Gradle Groovy DSL

  84. Gradle task hello << { println “Hello Gradle !” }

  85. Closure groovy.lang.Closure

  86. Closure { 引数 -> 式 }

  87. ファイル操作 task createTextFile << { def f = file ‘sample.txt’

    f.write ‘Hello Gradle !’ println f.text }
  88. ファイル操作 copy { from ‘src’ into ‘dist’ }

  89. ファイル操作 CopySpec

  90. Template engines • xxx.properties • jetty.xml • context.xml • application.yml

    • etc…
  91. Template engines • 複数行String • groovy.text ◦ SimpleTemplateEngine • groovy.text.markup

    ◦ MarkupTemplateEngine
  92. Template engines groovy-lang.org/templating.html

  93. Power Assert Spock

  94. Power Assert assert 式

  95. Power Assert groovy:000> a = 1 ===> 1 groovy:000> b

    = 2 ===> 2 groovy:000> assert a == b ERROR org.codehaus.groovy.runtime.powerassert. PowerAssertionError: assert a == b | | | 1 | 2 false groovy:000>
  96. 演算子オーバーロード log4jdbcを 本番には入れられない でも、 開発中は使いたい

  97. 演算子オーバーロード configurations { excludeFromProd } dependencies { runtime 'com.googlecode.log4jdbc:log4jdbc:1.2' runtime

    'org.postgresql:postgresql:9.3-1102-jdbc41' excludeFromProd 'com.googlecode.log4jdbc:log4jdbc:1.2' } war { if (env == 'prod') { classpath -= configurations.excludeFromProd } }
  98. まとめ

  99. • www.gradle.org/docs/ ◦ current ◦ release-candidate ◦ nightly Gradleチョットデキル

  100. github.com/gradle/gradle Gradleチョットデキル

  101. Groovy in Action Second Edition Groovyチョットデキル

  102. Groovyチョットデキル

  103. まとめ Gradle Wrapperがあれば Groovyが使える

  104. まとめ Gradleに慣れると 知らないうちに Groovyが使えるようになる

  105. まとめ Groovyが使えると 仕事が捗る

  106. まとめ Let’s enjoy Groovy!

  107. 最後に宣伝 #jggug

  108. 最後に宣伝 #yokohamagroovy #mattarigrails

  109. 最後に ご清聴 ありがとうございました。