Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Gradle 2.2, 2.3 News #Jggug

kyonmm
October 26, 2014

Gradle 2.2, 2.3 News #Jggug

2014/10/24 G* WorkshopでLTしました。

kyonmm

October 26, 2014
Tweet

More Decks by kyonmm

Other Decks in Technology

Transcript

  1. 1 自己紹介 きょん kyon_mm 27 歳 テスト、 アジャイルコー チ、 ソフトウェア工学、

    開発環境 改善など テストで気になることがあれば聞いてください TDD/BDD が好きです。 っていうか、 オタクです。 一番使っているGradle のバー ジョンはmaster ブランチで す。
  2. 2.1 だが、 しかし 今週、Gradle2.2 RC-1 がリリー スされました! ということで、 今日は「 本物の最新動向」

    っていうやつを 見せてやりますよ。 単なるRelease Note の要約です。 てへっ。
  3. 3 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
  4. 3.1 COMPONENT SELECTION RULES 依存関係にあるコンポー ネント( ライブラリ) で、Gradle が利用 すると判断する基準をスクリプトでカスタマイズできます。

    例えば あるライブラリだけはナイトリー ビルドを利用する あるライブラリの特定バー ジョンはバグがあるから利用し ない とかできます。
  5. 3.2 DECLARING MODULE REPLACEMENTS 依存関係にあるモジュー ルのグルー プID などが変わってしま ったときに、 置換した上でリポジトリから検索するようにで

    きます。 例えば dependencies { modules { module("com.google.collections:google-collections") { replacedBy("com.google.guava:guava") } } }
  6. 3.3 SONAR RUNNER PLUGIN IMPROVEMENTS SonarQube( 静的解析ツー ルの統合アプリケー ション) を

    Gradle から実行するときに、Gradle とは別プロセスで実行 されるようになってSonarQube への引数と、Gradle への引 数を分割できます。( メモリ量指定とか) 実行するSonarQube のバー ジョンを指定する事もできるよ うになりました。 apply plugin: "sonar-runner" sonarRunner { toolVersion = "2.4" // Fine grained control over the runner process forkOptions { maxHeapSize = '1024m' } }
  7. 3.4 NATIVE LANGUAGE CROSS-COMPILATION IMPROVEMENTS GCC でクロスコンパイルをするときに、 ター ゲットプラット フォー

    ム毎の情報をビルドスクリプト上で取得出来るように なりました。 model { toolChains { gcc(Gcc) { eachPlatform { tc -> if (tc.platform.name == "arm") { cCompiler.executable = 'gcc-arm' } } } } }
  8. 3.5 SUPPORT FOR BUILDING X64 BINARIES ON WINDOWS USING GCC

    Windows OS 上で GCC を利用したときに、64bit バイナリを生 成できるようになりました。
  9. 3.6 SPECIFY VERSION CONTROL SYSTEM FOR INTELLIJ IDEA idea プラグインを利用して、idea

    プロジェクトファイルを生 成するときに、VCS の種類を指定できるようになりました。 apply plugin: "idea" idea { project { vcs = "Git" } }
  10. 3.7 SPECIFY LOCATION OF LOCAL MAVEN REPOSITORY INDEPENDENTLY Maven リポジトリのロー

    カルパスを指定できるようになりま した。(~/.m2 以外を指定できるようになりました。)
  11. 3.9 SUPPORT FOR RENAMING IMPORTED ANT TARGETS Gradle では既存のAnt ビルドスクリプトをインポー

    トできます が、 タスク名がかぶっているときに困っていました。 タスク名が重複しているときには、 インポー トしたAnt のタ スク名を変更する事ができます! apply plugin: "java" // adds 'clean' task ant.importBuild("build.xml") { it == "clean" ? "ant-clean" : it } 0
  12. 3.10 SHARING CONFIGURATION FILES ACROSS BUILDS 複数のビルドスクリプトで共有したい設定などがある場合に は、 設定ファイル専用zip などを共有しつつ、

    その中身のファ イルを利用出来るようになりました! 例としては、 静的解析の設定ファイルなどを組織で共有する などです。 apply plugin: "checkstyle" configurations { checkstyleConfig } dependencies { checkstyleConfig "com.company:checkstyle-config:1.0@zip" } checkstyle { // affects all Checkstyle tasks config = resources.text.fromString("""<module name="Checker">...</module>""") config = resources.text.fromFile("path/to/file.txt") config = resources.text.fromFile(someTask) config = resources.text.fromArchiveEntry(configurations.checkstyleConfig, "path/to/archive/en try.txt") }
  13. 4.1 だが、 しかし Gradle はRC 版が出る数週間前には既にその次のリリー スへ のRelease Note が書かれ始めるのです。

    そして、 ついにGradle 2.3 のRelease Notes が出そろいはじ めてきたのである!!! ナ、 ナンダッテー!
  14. 5 GRADLE 2.3 の新機能 Component metadata rule enhancements New PluginAware

    methods for detecting the presence of plugins ANTLR plugin supports ANTLR version 3.X and 4.X AntlrTask running in separate process
  15. 5.2 NEW PLUGINAWARE METHODS FOR DETECTING THE PRESENCE OF PLUGINS

    Plugin がロー ドされているときなどのイベントを拾えるよう なメソッドが増えます。 findPlugin() hasPlugin() withPlugin()
  16. 5.3 ANTLR PLUGIN SUPPORTS ANTLR VERSION 3.X AND 4.X ANTLR

    プラグインがANTLR3, 4 にも対応します。 apply plugin: "java" apply plugin: "antlr" repositories() { jcenter() } dependencies { antlr 'org.antlr:antlr4:4.3' }
  17. 6 CONCLUSION Gradle2.2, 2.3 によって 巨大プロジェクトやライブラリ開発における依存関係解決 がより楽になる。 複数プロジェクトで設定ファイルの共有がやりやすくな る。 既存Ant

    タスクと名前が被って使えなかったタスクが扱え るようになる。 Groovy のANTLR4 移行、ANTLR4 を使った独自言語開発が やりやすくなる。