【縛りプレイ中】Codenvy(Eclipse Che)でGradleのプロジェクトをまともに使えるようにしたい(その1)
まだまだ諦めておりませんよ?むしろコード書くより楽しくなってきています。
Codenvy(Eclipse Che)でGradleプロジェクトを扱う場合の問題点
そもそもGradleは公式で対応していないから修羅の道な訳です。大きくは以下2点。
- Stackも公式から出てない(dockerhubから引っ張ることは可能なので、ビルドはできる)
- インテリセンスがmaven基準(jarファイル単位でしか追加できない)
つまり、ビルドと実行コマンドを作ることはできて、その中ではパスは通ってますし、クラスパスもちゃんとgradleから見えているんですが、インテリセンスで見ているクラスパスにGradleが使えない状況です。一つ一つjarファイルをクラスパスに追加する絵しか思い浮かばなくて軽く絶望しかけました。
コード書く目的ではなくて、Githubから軽くコードを引っ張ってきて実行環境込みで動かしてみるにはいいんですが、コードを書く目的となるとエディタでコンパイルが通らないからとにかく不便です。
Github Issuesから漁ってみる
とか
とかで同じことを考えている人たちがいたんですね、やっぱり。
で、読んでみると、今後対応するつもりはあるようですが、今のところはアシスタンス機能はmavenでサポート可能なプロジェクトでのみ動く、ということのようです。対処法として示されているのは、
- 依存関係を書いた
pom.xml
を用意する - jarファイルを一つ一つクラスパスに追加する
のどちらか。
いや、後者SpringBootとか辛すぎるでしょう。。。後者のIssueだと16のサブモジュールと13のソースディレクトリを持つGradleプロジェクトとか言ってるんですよ、一つずつjarを追加しろとか何でしょうか、その刺身タンポポ *1 。
Gradleからpom.xml出力すればいけるのでは?
前者をどうにか楽にできないものかと思って少し調べて見ました。mavenプラグインというのがあるんですね。
mavenプラグインで設定なしだとデフォルトローカルリポジトリに保存される模様。スタックのローカルリポジトリは /home/user/.m2/repository
になるようです。Gradleのサンプルプロジェクトを使って gradle install
してみたところ、メインのソースディレクトリのビルド結果についてはリポジトリにインストールされていますし、build/poms
に pom.xml
は作成されています。ただ、テストに依存するライブラリはローカルリポジトリにインストールされないんですね。やりたいことに近づきはしましたが、まだまだです。
まとめ
やってやれないことはない気がしてきました。プラグインで大まかに事足りそうなのでいいですね。
テストのライブラリをローカルリポジトリに持っていければ基本的にやりたいことは全てできそうなので、次はこの辺りを調べてみようと思います。
追記
とりあえず、 gradle install
タスクでできた pom.xml
をプロジェクトルートにコピーするビルドコマンドを書いて、プロジェクト自体はmavenで読み込ませたところ、外部ライブラリにも追加されました。シングルソースディレクトリのプロジェクトであればこれでおそらく問題ないかと。
*1:ダイアログでのjarの選択がマルチでできない