文系プログラマによるTIPSブログ

文系プログラマ脳の私が開発現場で学んだ事やプログラミングのTIPSをまとめています。

javaのビルドをgradleで行う:調査編1:maven・SBTとの違い

Gradle調査シリーズその1です〜


f:id:treeapps:20180426142529p:plain

javaのビルドツールといえば、Apache ant、Apache mavenが定番です。

しかし両者はビルドの定義をxmlで行い、非常に冗長な定義ファイルが必要になります。そのxml地獄を解消するため、GradleとSBTという先進的なビルドツールが生まれました。

Gradleとは?

Gradle Build Tool
javaのJVM上で動作するgroovyを使ったビルドツールです。

Mavenのようにjarの依存性の解決、別プロジェクトの参照、独自のタスク定義、antタスクの呼び出し、javaの実行、等が可能になっています。

極力キャッシュするよう実装されているので、更新が無いのにビルドし直す事も軽減できます。

非常に多機能で、eclipseの設定ファイル自体を編集する事もできます。

公式サイトに日本語のドキュメントがあります。

SBTとは?

sbt - The interactive build tool
javaのJVM上で動作するscalaを使ったビルドツールです。

Mavenのようにjarの依存性の解決、独自のタスク定義、等が可能になっています。

使った事はありませんが、ドキュメントを見る限り、Gradleと比較して圧倒的に機能が不足しているように見えます。

公式サイトに日本語のドキュメントがありますが、全機能が網羅されているか不明です。

Gradleを使ってみて

軽く使った程度ですが、以下の事が解っています。(mavenをちゃんと使った事が無いので間違った記述がある可能性があります)

  • mavenと違ってxmlで記述しないので、半分以下のコード量で記述できる。
  • pluginの機能がmaven程多機能でないので、依存性の解決の定義を全て手動で記述する必要がある。
  • 依存を除外する際、mavenは1jar1exclude定義だが、gradleを1行で全jarに対してexclude定義ができる。
  • mavenだとDeployment Assembryに別pjを簡単に追加できるがgradleはeclipseの設定を編集する必要有り。
  • mavenはpluginに頼る事が非常に多いが、Gradleはgroovy or javaで記述できる事は標準でできる。
  • mavenでマルチプロジェクトをビルドする際は親+子のpom.xmlが必要だが、Gradleはbuild.gradleで一括管理可能。
  • Gradleはできる事が多すぎて覚えるのがちょっと大変。(できない事があるよりマシか)

大体こんな感じです。mavenがgradleより優れている部分は、

  • pluginが豊富
  • 情報が多い
  • eclipseのpluginが多機能

くらいだと思います。Gradleはpluginのサポートがまだ弱いので、ビルド環境を構築した経験が少ない方には向きません。

逆にその経験が有る方は是非使った方がいいかと思います。

javaのビルドをgradleで行う:調査編1:maven・SBTとの違い - 文系プログラマによるTIPSブログ
javaのビルドをgradleで行う:調査編2:依存から1行で特定jarを除外! - 文系プログラマによるTIPSブログ
javaのビルドをgradleで行う:調査編3:seasar系の依存の注意点 - 文系プログラマによるTIPSブログ
javaのビルドをgradleで行う:調査編4:Groovy Librariesの罠 - 文系プログラマによるTIPSブログ



javaのビルドをgradleで行う:実践編1:jsとcssのcombineとminify - 文系プログラマによるTIPSブログ
javaのビルドをgradleで行う:実践編2:静的ファイルの圧縮 - 文系プログラマによるTIPSブログ
javaのビルドをgradleで行う:実践編3:jspの文字列置換(ReplaceTokens) - 文系プログラマによるTIPSブログ
javaのビルドをgradleで行う:実践編4:あれどうやるの?の疑問と自己解決 - 文系プログラマによるTIPSブログ
javaのビルドをgradleで行う:実践編5:マルチプロジェクト時のprovidedCompileについて - 文系プログラマによるTIPSブログ
javaのビルドをgradleで行う:実践編6:高速に実用的な実行可能jarを生成する - 文系プログラマによるTIPSブログ