これはなんですか?
タイトル。
この記事を読むとよいかもしれない対象者は「なんでMavenとGradleでビルドツールが2分化されているのか」について疑問に思っている人に対してJava屋さんが一つの考察を開示するものです。
ここ2年間で5回位聞かれたことなので、記事になるかなーと、考えを記すことにしました。
本題
メリット。
- 昔から使ってるのでやりたいことの9割以上のことがMavenでかんたんにできてしまう
- 資産として溜め込んだプラグインの使い方をGradleに移植するのが面倒
- Gitで公開していあるそこそこ歴史あるプロジェクトはビルドツールにMavenを使っていることが多く、絶滅するおそれが少ない
- やりたいことのプラグインも探せばだいたい出てくる
デメリット。
- XMLだるい
- 初心者がとっつきにくい
- Java以外の言語だと最適ではない場合がある
長くJavaと寄り添ったツールとして発達し、支持されているため、その世界最強ですが、kotlinやgroovyのプロジェクトではgradle使うべきかなーとも思います。
Gradleの自由度は魅力だと思いますし、今から始める人はGradleでよいのではないでしょうか。
敢えてXMLで読みづらい Maven を無理して採用することもありませんし、他の人がプロジェクトを構築した結果、ビルドツールがGradleだったとしても、全てを赦し小姑のように build.gradle の手直しを始めるくらいには gradle も 使えるといいでしょう。
参考までに、手元のプロジェクトで使っている dependencies のビルドツールをいくつかピックアップ
Project | Build Tool |
---|---|
OpenJDK | Make |
Spring Boot | Gradle |
Jackson | Maven |
AWS SDK | Maven |
Flyway | Maven |
Openapi Generator | Maven |
Swagger | Maven |
というわけでMake最強。
解散!!
参考記事
MavenやGradleの歴史については、こちらの方が執筆された記事によくまとまっております、併せてご参照ください。
https://qiita.com/MahoTakara/items/ff73338e218b656bedfa
Maven to Gradle コンバータありましたが、dependenciesしか移してくれない・・
https://sagioto.github.io/maven2gradle/