PT #165978425: Exploded JAR LS for Theia extensions
This commit is contained in:
2
theia-extensions/theia-bosh/.gitignore
vendored
2
theia-extensions/theia-bosh/.gitignore
vendored
@@ -1,7 +1,7 @@
|
||||
node_modules
|
||||
.browser_modules
|
||||
lib
|
||||
jars
|
||||
server
|
||||
*.log
|
||||
*-app/*
|
||||
!*-app/package.json
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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',
|
||||
|
||||
@@ -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
@@ -4,4 +4,4 @@ lib
|
||||
*.log
|
||||
*-app/*
|
||||
!*-app/package.json
|
||||
/**/jars
|
||||
/**/server
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
@@ -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",
|
||||
|
||||
@@ -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
1
theia-extensions/theia-concourse/.gitignore
vendored
1
theia-extensions/theia-concourse/.gitignore
vendored
@@ -1,6 +1,7 @@
|
||||
node_modules
|
||||
.browser_modules
|
||||
lib
|
||||
server
|
||||
*.log
|
||||
*-app/*
|
||||
!*-app/package.json
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"
|
||||
},
|
||||
|
||||
@@ -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
@@ -2,6 +2,7 @@ node_modules
|
||||
.browser_modules
|
||||
lib
|
||||
jars
|
||||
server
|
||||
*.log
|
||||
*-app/*
|
||||
!*-app/package.json
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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
Reference in New Issue
Block a user