ビルドツールエントリを見直してみて思ったことなどなど

ちょっと前に書いた

に関連して、はてブコメントへの反応とか、その他追加で考えたことについて。


IDE連携

どのIDEを用いるかの議論はあるにせよ、今どきJavaプロジェクトの開発で何もIDEを用いないのはさすがにしんどいかと思われます。ただ、IDEだけ用意すればいいわけでもありません。IDEとは独立してビルドツール・ビルドスクリプトも用意しておかないと、ビルドがIDE依存になってしまったりCIが回せなかったりと、色々不都合な面も出てきます。

ただ、IDEとビルドスクリプトを別途用意するのは意外と面倒なことも。単純に、IDEとビルドスクリプトを2セット揃えるのが手間ということもありますし、IDE(もしくはIDEプラグイン)でできることがビルドツールで同等の処理が実現できるかというとそうとも限りません。ビルドツールとIDEでコンパイラが違っているために、ビルド結果が異なることも。

そんなとき、Mavenではコンパイラを変更することができます。Eclipse用もありますし、これで初めて知ったJikesというやつもあります。果ては、Javaに限らずC#用のコンパイラも提供されているようです。

  • aspectj with artifactId plexus-compiler-aspectj.
  • csharp with artifactId plexus-compiler-csharp.
  • eclipse with artifactId plexus-compiler-eclipse.
  • jikes with artifactId plexus-compiler-jikes.
Using Non-Javac Compilers

上記で列挙されているもの以外でも、Groovy - Groovy-Eclipse compiler plugin for Mavenで提供されている「groovy-eclipse-compiler(Groovy-Eclipseプラグインで採用されているコンパイラ)」を用いたりすることもできます。


ビルドツールを支援するツール


これはSBTの話ですが、概ねGradleにも同じことが言えるのではないかと。

ビルドツールの自由度が高いということは、ユーザにとってはいいことでしょうが、ビルドツールをサポートするようなツールを実装するのは厄介だということです。この視点はありませんでした。GradleのEclipseプラグインがいまいちな出来なのも、この辺に理由があるのかも*1

Eclipseプラグインについては、Dosanko*SE:覚書を参考に。

*1:他のIDE × Gradleはちゃんと触ったことないので、今度見てみることにします