先日、Microsoft, Red Hat, CodeEnvyが協力して、「Language Services」と呼ばれるサービスにJSON-RPCベースなオープンな仕様のプロコトルを発表しました。Visual Studio Codeで使っているものを公開して、より汎用的に使えるようにしていきたいという流れのようです。
IDE側には、ブラウザ上で操作できる Eclipse Cheが対応を表明しています。
デモで動かしたというブランチで動作するといっているので、今回はこれを試してみることにしました。
リポジトリはここにあるのですが、開発中のブランチであるためドキュメントが対応していません。
Issueに投げたら、ルートのリポジトリでmvn clean install
すればいけるよと教えてもらいましたが、いくつかはまったのでメモしておきます*1。
ツールのセットアップ
環境ですが、RHEL7.2です。この後mavenから実行するbowerの都合上、rootではないユーザーで実行するのがよいかと思います*2。おそらくLinux系は同様の手順でよいかと。一部OSXでビルドすること前提の処理があったので、OSXは楽になる可能性があります。Windowsはツールのインストールのところを変えれば同様でしょう。まずはドキュメントにもある通り、Oracle JDK と Mavenを入れておきます。
$ java -version java version "1.8.0_92" Java(TM) SE Runtime Environment (build 1.8.0_92-b14) Java HotSpot(TM) 64-Bit Server VM (build 25.92-b14, mixed mode)
# mvn -v Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-11T01:41:47+09:00) Maven home: /opt/apache-maven-3.3.9 Java version: 1.8.0_92, vendor: Oracle Corporation Java home: /usr/java/jdk1.8.0_92/jre Default locale: en_US, platform encoding: UTF-8 OS name: "linux", version: "3.10.0-327.18.2.el7.x86_64", arch: "amd64", family: "unix"
また、 maven経由でいくつかのコマンドを実行するため、それのコマンドもインストールしておきます。nodejsはお好きな方法でインストールしてください。今回はscl経由でインストールしています。
# yum install patch # npm install -g bower # npm install -g gulp
git cloneしておきます。
$ git clone https://github.com/eclipse/che.git $ cd che $ git checkout devnation
さらにmavenを実行するとわかるのですが、patchを当てるときにReversePatchになっている部分があってエラーになるのであらかじめReversePatchを許可するようにしておきます。git diffの結果をはっておきますが、1行追加すればよいです。
$ git diff diff --git a/plugins/plugin-orion/che-plugin-orion-editor/pom.xml b/plugins/plugin-orion/che-plugin-orion-editor/pom.xml index 2087b93..c4a0b63 100644 --- a/plugins/plugin-orion/che-plugin-orion-editor/pom.xml +++ b/plugins/plugin-orion/che-plugin-orion-editor/pom.xml @@ -128,6 +128,7 @@ <strictPatching>true</strictPatching> <strip>1</strip> <targetDirectory>${project.build.directory}/classes</targetDirectory> + <reverse>true</reverse> </configuration> </execution> </executions>
あとはmavenを実行するのですが、途中でテストコードがfailしたり、ライセンスヘッダのチェックがfailしたりします。そしてfindbugsの実行に時間がかかるなどするので、思い切って全部無効にしておきます。プロジェクトのルートのpom.xmlで実行したあとは、起動するためのパッケージを作成します。
$ mvn clean install -DskipTests -Dfindbugs.skip -Dlicense.skip -Denforcer.skip -Dmdep.analyze.skip $ cd assembly/assembly-main/src/assembly/assembly-main $ mvn install
これでいけると思うのですが、もしかするとnpmの実行やgulpの実行で失敗するかもしれません。試行錯誤していたときは、いったんそのディレクトリにcdしてシェルから直接npm install --no-optional
とか実行していました。実は必要な手順かもしれません。
あとは、出来た実行ファイルを実行します。実行するユーザーがdockerグループにはいっていなかったり、dockerのsocketファイルの権限が足りないと警告がでるので対応します。
# A new assembly is placed in: cd target/eclipse-che-<version>/eclipse-che-<version> # Executable files are: bin/che.sh
これでブラウザから接続すれば表示されるはずですが、Eclipse Cheのworkspaceを作成した後に入ろうとするとき、localhost以外からのアクセスをしていると入ることができません。workspaceごとにdocker環境を作成しているようですが、これとの通信ができなくなる関係のようです*3。同じマシン上のブラウザからlocalhostでアクセスしましょう。
workspaceに入ったら、ASP.NET Webプロジェクトを作成するとこんな風になって、dotnet restore, dotnet runができます。コード編集するときに補完が効かないのですが、これの原因まではまだ追えていないです。
すでにここまで動いているということで、秋のリリースが楽しみです。