我创建的上述项目用于开发 Eclipse 插件。要创建 LS 以在 Dockerfile 中运行,需要从 Eclipse Xtext 项目中创建一个二进制文件(我使用 fatJar),该文件应按照本教程中的说明创建(应仅完成“打包 LS”,包括)。请注意,打包 LS 时,只需在 *.ide 项目的 build.gradle 文件中添加以下代码片段即可:-
shadowJar {
baseName = 'dsl-language-server'
classifier = null
version = null
}
之后,应gradle shadowJar
在命令提示符下通过命令构建父项目。完成后,将在以下路径中创建一个 .jar 文件:*.ide/build/libs
然后您需要创建一个单独的目录并将构建文件夹复制并粘贴到其中,并创建一个名为dockerfile
(无文件扩展名)的文件并在其中包含以下代码:-
FROM barais/eclipse-xtend
ADD build/libs/dsl-language-server-ls.jar dsl-language-server-ls.jar
RUN sudo apt-get install socat
RUN apt-get update && \
apt-get upgrade -y && \
apt-get install -y software-properties-common && \
add-apt-repository ppa:webupd8team/java -y && \
apt-get update && \
echo oracle-java7-installer shared/accepted-oracle-license-v1-1 select true | /usr/bin/debconf-set-selections && \
apt-get install -y oracle-java8-installer && \
apt-get clean
CMD socat TCP4-LISTEN:4417,reuseaddr,fork EXEC:"java -jar dsl-language-server-ls.jar"
然后使用 Docker 构建此文件,并将其作为 repo 推送到您的 Docker Hub 帐户。使用以下配方在 Eclipse Che 中创建一个新堆栈,以使用来自 Docker Hub 的推送存储库作为语言服务器:-
services:
dsl-language-server-ls:
image : <youraccountname>/mydsl
mem_limit : 1073741824
dev-machine:
image : eclipse/ubuntu_jdk8
mem_limit : 2147483648
depends_on:
- dsl-language-server-ls
编辑原始配置并在配置中的相应位置使用以下代码对其进行更新(阅读che 文档以获取更多信息:-
"id": "mydsl-ls",
"internal": "true",
"type": "ls",
"languageRegexes": "[ {\"languageId\":\"mydsllang\", \"regex\":\".*\\\\.mydsl$\"}]"
在 Eclipse Che 的新项目中使用您添加的文件扩展名 (.mydsl) 创建一个文件,LS 将开始运行,允许您在 DSL 中编写代码。
耶!