冥冥乃志

ソフトウェア開発会社でチームマネージャをしているエンジニアの雑記。アウトプットは少なめです。

follow us in feedly

【縛りプレイ中】Codenvy(Eclipse Che)でGradleのプロジェクトをまともに使えるようにしたい(その1)

まだまだ諦めておりませんよ?むしろコード書くより楽しくなってきています。

Codenvy(Eclipse Che)でGradleプロジェクトを扱う場合の問題点

そもそもGradleは公式で対応していないから修羅の道な訳です。大きくは以下2点。

  • Stackも公式から出てない(dockerhubから引っ張ることは可能なので、ビルドはできる)
  • インテリセンスがmaven基準(jarファイル単位でしか追加できない)

つまり、ビルドと実行コマンドを作ることはできて、その中ではパスは通ってますし、クラスパスもちゃんとgradleから見えているんですが、インテリセンスで見ているクラスパスにGradleが使えない状況です。一つ一つjarファイルをクラスパスに追加する絵しか思い浮かばなくて軽く絶望しかけました。

コード書く目的ではなくて、Githubから軽くコードを引っ張ってきて実行環境込みで動かしてみるにはいいんですが、コードを書く目的となるとエディタでコンパイルが通らないからとにかく不便です。

Github Issuesから漁ってみる

github.com

とか

github.com

とかで同じことを考えている人たちがいたんですね、やっぱり。

で、読んでみると、今後対応するつもりはあるようですが、今のところはアシスタンス機能はmavenでサポート可能なプロジェクトでのみ動く、ということのようです。対処法として示されているのは、

  • 依存関係を書いた pom.xml を用意する
  • jarファイルを一つ一つクラスパスに追加する

のどちらか。

いや、後者SpringBootとか辛すぎるでしょう。。。後者のIssueだと16のサブモジュールと13のソースディレクトリを持つGradleプロジェクトとか言ってるんですよ、一つずつjarを追加しろとか何でしょうか、その刺身タンポポ *1

Gradleからpom.xml出力すればいけるのでは?

前者をどうにか楽にできないものかと思って少し調べて見ました。mavenプラグインというのがあるんですね。

第53章 Mavenプラグイン

mavenプラグインで設定なしだとデフォルトローカルリポジトリに保存される模様。スタックのローカルリポジトリ/home/user/.m2/repository になるようです。Gradleのサンプルプロジェクトを使って gradle install してみたところ、メインのソースディレクトリのビルド結果についてはリポジトリにインストールされていますし、build/pomspom.xml は作成されています。ただ、テストに依存するライブラリはローカルリポジトリにインストールされないんですね。やりたいことに近づきはしましたが、まだまだです。

まとめ

やってやれないことはない気がしてきました。プラグインで大まかに事足りそうなのでいいですね。

テストのライブラリをローカルリポジトリに持っていければ基本的にやりたいことは全てできそうなので、次はこの辺りを調べてみようと思います。

追記

とりあえず、 gradle install タスクでできた pom.xml をプロジェクトルートにコピーするビルドコマンドを書いて、プロジェクト自体はmavenで読み込ませたところ、外部ライブラリにも追加されました。シングルソースディレクトリのプロジェクトであればこれでおそらく問題ないかと。

f:id:mao_instantlife:20161112151429p:plain

*1:ダイアログでのjarの選択がマルチでできない