PT #165978425: Exploded JAR LS for Theia extensions

This commit is contained in:
BoykoAlex
2019-05-13 20:10:36 -04:00
parent 668f853935
commit 73187f79bb
23 changed files with 2616 additions and 3505 deletions

View File

@@ -1,7 +1,7 @@
node_modules
.browser_modules
lib
jars
server
*.log
*-app/*
!*-app/package.json

View File

@@ -10,10 +10,10 @@
"files": [
"lib",
"src",
"jars"
"server"
],
"dependencies": {
"@pivotal-tools/theia-languageclient": "0.0.8",
"@pivotal-tools/theia-languageclient": "0.0.9",
"@theia/core": "latest",
"@theia/languages": "latest",
"@theia/monaco": "latest"

View File

@@ -18,8 +18,9 @@ export class BoshLanguageContribution extends StsLanguageServerContribution {
readonly id = BOSH_SERVER_ID;
readonly name = BOSH_SERVER_NAME;
protected readonly lsJarContainerFolder = path.resolve(__dirname, '../../jars');
protected readonly lsJarGlob = 'bosh-language-server*.jar';
protected readonly lsLocation = path.resolve(__dirname, '../../server/bosh-language-server');
protected readonly configFileName = 'application.properties';
protected readonly mainClass = 'org.springframework.ide.vscode.bosh.BoshLanguageServerBootApp';
protected readonly jvmArguments = [
// '-Xdebug',
// '-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=7999',

View File

@@ -5,13 +5,16 @@ workdir=`pwd`/bosh
cd ${workdir}
# Clear LS folder
rm -fr ${workdir}/server
mkdir -p ${workdir}/server/bosh-language-server
# Use maven to build fat jar of the language server
cd ../../../headless-services/bosh-language-server
./build.sh
rm -fr ${workdir}/jars
mkdir -p ${workdir}/jars
cp target/*-exec.jar ${workdir}/jars
cd ${workdir}/server/bosh-language-server
server_jar_file=$(find ${workdir}/../../../headless-services/bosh-language-server/target -name '*-exec.jar');
jar -xvf ${server_jar_file}
cd ${workdir}/..
yarn

File diff suppressed because it is too large Load Diff

View File

@@ -4,4 +4,4 @@ lib
*.log
*-app/*
!*-app/package.json
/**/jars
/**/server

View File

@@ -5,13 +5,16 @@ workdir=`pwd`/cf-manifest-yaml
cd ${workdir}
# Clear LS folder
rm -fr ${workdir}/server
mkdir -p ${workdir}/server/cf-manifest-yaml-language-server
# Use maven to build fat jar of the language server
cd ../../../headless-services/manifest-yaml-language-server
./build.sh
rm -fr ${workdir}/jars
mkdir -p ${workdir}/jars
cp target/*-exec.jar ${workdir}/jars
cd ${workdir}/server/cf-manifest-yaml-language-server
server_jar_file=$(find ${workdir}/../../../headless-services/manifest-yaml-language-server/target -name '*-exec.jar');
jar -xvf ${server_jar_file}
cd ${workdir}/..
yarn

View File

@@ -10,11 +10,11 @@
"files": [
"lib",
"src",
"jars"
"server"
],
"dependencies": {
"@pivotal-tools/jvm-launch-utils": "0.0.11",
"@pivotal-tools/theia-languageclient": "0.0.8",
"@pivotal-tools/theia-languageclient": "0.0.9",
"@theia/core": "latest",
"@theia/languages": "latest",
"@theia/monaco": "latest"

View File

@@ -18,8 +18,9 @@ export class CfManifestYamlContribution extends StsLanguageServerContribution {
readonly id = CF_MANIFEST_YAML_LANGUAGE_ID;
readonly name = CF_MANIFEST_YAML_LANGUAGE_NAME;
protected readonly lsJarContainerFolder = path.resolve(__dirname, '../../jars');
protected readonly lsJarGlob = 'manifest-yaml-language-server*.jar';
protected readonly lsLocation = path.resolve(__dirname, '../../server/cf-manifest-yaml-language-server');
protected readonly configFileName = 'application.properties';
protected readonly mainClass = 'org.springframework.ide.vscode.manifest.yaml.ManifestYamlLanguageServerBootApp';
protected readonly jvmArguments = [
// '-Xdebug',
// '-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=7999',

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,6 @@
{
"name": "@pivotal-tools/theia-languageclient",
"version": "0.0.8",
"version": "0.0.9",
"description": "Theia IDE language client for STS4 language servers",
"license": "EPL-1.0",
"repository": "https://github.com/spring-projects/sts4",
@@ -20,9 +20,7 @@
"@theia/core": "latest",
"@theia/editor": "latest",
"@theia/languages": "latest",
"@theia/monaco": "latest",
"@types/glob": "^5.0.30",
"glob": "^7.1.2"
"@theia/monaco": "latest"
},
"devDependencies": {
"rimraf": "^2.6.2",

View File

@@ -9,7 +9,6 @@
* Pivotal, Inc. - initial API and implementation
*******************************************************************************/
import * as path from 'path';
import * as glob from 'glob';
import { injectable } from 'inversify';
import { DEBUG_MODE } from '@theia/core/lib/node';
import { parseArgs } from '@theia/process/lib/node/utils';
@@ -22,20 +21,14 @@ export abstract class StsLanguageServerContribution extends BaseLanguageServerCo
protected readonly preferJdk: boolean = false;
protected readonly lsJarContainerFolder: string = path.resolve(__dirname, '../../jars');
protected readonly lsLocation: string;
protected readonly lsJarGlob: string = 'language-server*.jar';
protected readonly mainClass: string;
protected readonly configFileName: string;
protected readonly jvmArguments: string[] = [];
protected getJarPath() {
const jarPaths = glob.sync(this.lsJarGlob, { cwd: this.lsJarContainerFolder });
if (jarPaths.length === 0) {
throw new Error(`The ${this.name} server launcher is not found`);
}
return path.resolve(this.lsJarContainerFolder, jarPaths[0]);
}
protected findJvm(javaHome?: string) {
return this.preferJdk ? findJdk(javaHome) : findJvm(javaHome);
}
@@ -53,7 +46,6 @@ export abstract class StsLanguageServerContribution extends BaseLanguageServerCo
}
async start(clientConnection: IConnection, { parameters }: JavaLsStartOptions) {
const jarPath = this.getJarPath();
const userJavaHome =
(parameters && parameters.javahome)
@@ -81,18 +73,30 @@ export abstract class StsLanguageServerContribution extends BaseLanguageServerCo
env.CLIENT_PORT = addressInfo.port;
const command = jvm.getJavaExecutable();
args.push('-cp');
let classpath = path.resolve(this.lsLocation, 'BOOT-INF/classes');
classpath += path.delimiter;
classpath += `${path.resolve(this.lsLocation, 'BOOT-INF/lib')}${path.sep}*`;
let toolsJar = jvm.getToolsJar();
if (toolsJar) {
classpath += `${path.delimiter}${toolsJar}`;
}
args.push(classpath);
if (this.configFileName) {
args.push(`-Dspring.config.location=file:${path.resolve(this.lsLocation, `BOOT-INF/classes/${this.configFileName}`)}`);
}
args.push(
'-Dsts.lsp.client=theia',
'-Dlsp.completions.indentation.enable=true',
'-Dlsp.yaml.completions.errors.disable=true',
`-Dserver.port=${env.CLIENT_PORT}`
);
let toolsJar = jvm.getToolsJar();
if (toolsJar) {
args.push("-Dloader.path="+toolsJar);
}
args.push(...this.jvmArguments);
if (DEBUG_MODE) {
@@ -103,10 +107,7 @@ export abstract class StsLanguageServerContribution extends BaseLanguageServerCo
);
}
args.push(
'-jar',
jarPath
);
args.push(this.mainClass);
const serverConnection = await this.createProcessSocketConnection(socket, socket, command, args, { env });
this.forward(clientConnection, serverConnection);

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,7 @@
node_modules
.browser_modules
lib
server
*.log
*-app/*
!*-app/package.json

View File

@@ -5,13 +5,16 @@ workdir=`pwd`/concourse
cd ${workdir}
# Clear LS folder
rm -fr ${workdir}/server
mkdir -p ${workdir}/server/concourse-language-server
# Use maven to build fat jar of the language server
cd ../../../headless-services/concourse-language-server
./build.sh
rm -fr ${workdir}/jars
mkdir -p ${workdir}/jars
cp target/*-exec.jar ${workdir}/jars
cd ${workdir}/server/concourse-language-server
server_jar_file=$(find ${workdir}/../../../headless-services/concourse-language-server/target -name '*-exec.jar');
jar -xvf ${server_jar_file}
cd ${workdir}/..
yarn

View File

@@ -10,10 +10,10 @@
"files": [
"lib",
"src",
"jars"
"server"
],
"dependencies": {
"@pivotal-tools/theia-languageclient": "0.0.8",
"@pivotal-tools/theia-languageclient": "0.0.9",
"@theia/core": "latest",
"@theia/languages": "latest"
},

View File

@@ -18,8 +18,9 @@ export class ConcourseLanguageContribution extends StsLanguageServerContribution
readonly id = CONCOURSE_SERVER_ID;
readonly name = CONCOURSE_SERVER_NAME;
protected readonly lsJarContainerFolder = path.resolve(__dirname, '../../jars');
protected readonly lsJarGlob = 'concourse-language-server*.jar';
protected readonly lsLocation = path.resolve(__dirname, '../../server/concourse-language-server');
protected readonly configFileName = 'application.properties';
protected readonly mainClass = 'org.springframework.ide.vscode.concourse.ConcourseLanguageServerBootApp';
protected readonly jvmArguments = [
// '-Xdebug',
// '-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=7999',

File diff suppressed because it is too large Load Diff

View File

@@ -2,6 +2,7 @@ node_modules
.browser_modules
lib
jars
server
*.log
*-app/*
!*-app/package.json

View File

@@ -7,13 +7,17 @@ cd ${workdir}
# Clean old jars
rm -fr ${workdir}/jars
rm -fr ${workdir}/server
mkdir -p ${workdir}/jars
mkdir -p ${workdir}/server/spring-boot-language-server
# Use maven to build fat jar of the language server
cd ${workdir}/../../../headless-services/spring-boot-language-server
./build.sh
cp target/*-exec.jar ${workdir}/jars
cd ${workdir}/server/spring-boot-language-server
server_jar_file=$(find ${workdir}/../../../headless-services/spring-boot-language-server/target -name '*-exec.jar');
jar -xvf ${server_jar_file}
cd ${workdir}/../../../headless-services/jdt-ls-extension
cp org.springframework.tooling.jdt.ls.extension/target/*.jar ${workdir}/jars/jdt-ls-extension.jar

View File

@@ -11,11 +11,12 @@
"lib",
"src",
"jars",
"server",
"images"
],
"dependencies": {
"@pivotal-tools/jvm-launch-utils": "0.0.11",
"@pivotal-tools/theia-languageclient": "0.0.8",
"@pivotal-tools/theia-languageclient": "0.0.9",
"@theia/core": "latest",
"@theia/editor": "latest",
"@theia/java": "latest",

View File

@@ -20,8 +20,9 @@ export class SpringBootLsContribution extends StsLanguageServerContribution {
readonly id = SPRING_BOOT_SERVER_ID;
readonly name = SPRING_BOOT_SERVER_NAME;
protected readonly preferJdk = true;
protected readonly lsJarContainerFolder = path.resolve(__dirname, '../../jars');
protected readonly lsJarGlob = 'spring-boot-language-server*.jar';
protected readonly lsLocation = path.resolve(__dirname, '../../server/spring-boot-language-server');
protected readonly configFileName = 'application.properties';
protected readonly mainClass = 'org.springframework.ide.vscode.boot.app.BootLanguagServerBootApp';
protected readonly jvmArguments = [
// '-Xdebug',
// '-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=7999',

File diff suppressed because it is too large Load Diff