2019年7月8日月曜日

Theia と vscode-java で Java 開発環境を整える

theia-ide/theia を試す。

theia-ide/theia-apps にいろんな Dockerfile があるので、それを参考に Java 開発環境を構築していく。

前提

Visual Studio Code プラグインが使えるようなのでそれを使う。

必要なファイルの作成

theia-ide/theia-apps/theia-go-docker に VS Code プラグインを有効にしたいときの参考になる Dockerfile, package.json がある。

それを参考に作って、同じディレクトリに格納する。

Dockerfile

ARG NODE_VERSION=10
FROM node:$NODE_VERSION
WORKDIR /home/theia
ADD package.json ./package.json
ARG GITHUB_TOKEN

# OpenJDK12 をダウンロード・配置・環境変数設定
RUN mkdir -p /opt/java && \
    curl -L https://download.java.net/java/GA/jdk12.0.1/69cfe15208a647278a19ef0990eea691/12/GPL/openjdk-12.0.1_linux-x64_bin.tar.gz -o /tmp/openjdk-12.0.1_linux-x64_bin.tar.gz && \
    tar xf /tmp/openjdk-12.0.1_linux-x64_bin.tar.gz -C /opt/java/ && \
    rm /tmp/openjdk-12.0.1_linux-x64_bin.tar.gz
ENV JAVA_HOME=/opt/java/jdk-12.0.1
ENV PATH=${JAVA_HOME}/bin:${PATH}

RUN yarn --pure-lockfile && \
    NODE_OPTIONS="--max_old_space_size=4096" yarn theia build && \
    yarn --production && \
    yarn autoclean --init && \
    echo *.ts >> .yarnclean && \
    echo *.ts.map >> .yarnclean && \
    echo *.spec.* >> .yarnclean && \
    yarn autoclean --force && \
    yarn cache clean

# See : https://github.com/theia-ide/theia-apps/issues/34
RUN adduser --disabled-password --gecos '' theia && \
    chmod g+rw /home && \
    mkdir -p /home/project && \
    chown -R theia:theia /home/theia && \
    chown -R theia:theia /home/project;
USER theia

# configure Theia
ENV SHELL=/bin/bash \
    THEIA_DEFAULT_PLUGINS=local-dir:/home/theia/plugins

EXPOSE 3000
ENTRYPOINT [ "node", "/home/theia/src-gen/backend/main.js", "/home/project", "--hostname=0.0.0.0" ]

package.json

{
    "private": true,
    "dependencies": {
        "@theia/git": "next",
        "@theia/editor-preview": "next",
        "@theia/getting-started": "next",
        "@theia/json": "next",
        "@theia/plugin-ext-vscode": "next",
        "@theia/preview": "next",
        "@theia/textmate-grammars": "next"
    },
    "devDependencies": {
        "@theia/cli": "next",
        "@theia/debug": "next"
    },
    "scripts": {
        "postinstall": "download-debug-adapters"
    },
    "adapterDir": "plugins",
    "adapters": {
        "vscode-java": "https://redhat.gallery.vsassets.io/_apis/public/gallery/publisher/redhat/extension/java/0.46.0/assetbyname/Microsoft.VisualStudio.Services.VSIXPackage"
    }
}

ポイントは以下三点。

  • scripts/postinstall: プラグインダウンロードに使うスクリプト、 adapterDir, adapters でプラグインを導入する場合必須
  • adapterDir: プラグインを入れるディレクトリ
  • adapters: インストールするプラグイン(vsix)を列挙

イメージビルド

Dockerfilepackage.json のあるディレクトリでビルドコマンドを実行。

docker build -t mikoto2000/theia-java:latest .

コンテナ実行

docker run --rm -p "3000:3000" mikoto2000/theia-java:latest

ブラウザで接続

localhost:3000 にアクセス。プラグインを確認すると、 vscode-java が入っているのがわかる。

以上。

参考資料

0 件のコメント:

コメントを投稿