Skip to content

Commit

Permalink
Update JAVA_HOME settings
Browse files Browse the repository at this point in the history
  • Loading branch information
cypher256 committed Jan 16, 2024
1 parent 49b1aea commit be54c8a
Show file tree
Hide file tree
Showing 4 changed files with 34 additions and 33 deletions.
4 changes: 2 additions & 2 deletions resources/.bashrc
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
if [ -r ~/.bashrc ]; then
AUTOCONF_JAVA_HOME=$JAVA_HOME
JAVA_HOME_BACKUP=$JAVA_HOME
source ~/.bashrc
export JAVA_HOME=$AUTOCONF_JAVA_HOME
export JAVA_HOME=$JAVA_HOME_BACKUP
fi
export PATH="$JAVA_HOME/bin:$PATH"
4 changes: 2 additions & 2 deletions resources/.zshrc
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
if [ -r ~/.zshrc ]; then
AUTOCONF_JAVA_HOME=$JAVA_HOME
JAVA_HOME_BACKUP=$JAVA_HOME
source ~/.zshrc
export JAVA_HOME=$AUTOCONF_JAVA_HOME
export JAVA_HOME=$JAVA_HOME_BACKUP
fi
export PATH="$JAVA_HOME/bin:$PATH"
4 changes: 2 additions & 2 deletions src/extension.ts
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,8 @@ async function setEnvVariables(
} else {
// [macOS/Linux] Use custom rcfile
// profiles JAVA_HOME > jbang > prependPathEnv (with default JAVA_HOME) > original PATH
// Prepending PATH env var with environmentVariableCollection doesn't work on macOS
// https://github.com/microsoft/vscode/issues/99878#issuecomment-1378990687
const stableLtsRuntime = runtimes.findByVersion(javaConfig.stableLtsVer);
const latestLtsRuntime = runtimes.findByVersion(javaConfig.latestLtsVer);
const terminalDefaultRuntime = latestLtsRuntime || stableLtsRuntime;
Expand All @@ -76,8 +78,6 @@ async function setEnvVariables(
defaultJavaBinDir = path.join(terminalDefaultRuntime.path, 'bin');
}
system.prependPathEnv(defaultJavaBinDir, mavenBinDir, gradleBinDir);
// Prepending PATH env var with environmentVariableCollection doesn't work on macOS
// https://github.com/microsoft/vscode/issues/99878#issuecomment-1378990687
}
}

Expand Down
55 changes: 28 additions & 27 deletions src/userSetting.ts
Original file line number Diff line number Diff line change
Expand Up @@ -147,44 +147,45 @@ export async function updateJavaRuntimes(
const CONFIG_KEY_MAVEN_CUSTOM_ENV = 'maven.terminal.customEnv';
const customEnv:any[] = _.cloneDeep(get(CONFIG_KEY_MAVEN_CUSTOM_ENV) ?? []);
const customEnvOld = _.cloneDeep(customEnv);
const mavenJavaHomeElement = customEnv.find(i => i.environmentVariable === 'JAVA_HOME');
const originPath:string | undefined = mavenJavaHomeElement?.value;
const JAVA_HOME_ENV_NAME = 'JAVA_HOME';
function _getEnvElement(envName: string) {
return customEnv.find(i => i.environmentVariable === envName);
}
if (OS.isWindows) {
// Remove Linux JAVA_HOME when switching from WSL to Windows
// Remove when switching from WSL to Windows
// Change the scope of maven.terminal.customEnv to machine-overridable
// https://github.com/microsoft/vscode-maven/issues/991
if (originPath && !await jdkExplorer.isValidHome(originPath)) {
customEnv.splice(customEnv.indexOf(mavenJavaHomeElement), 1); // Remove
update(CONFIG_KEY_MAVEN_CUSTOM_ENV, customEnv);
const javaHomeElement = _getEnvElement(JAVA_HOME_ENV_NAME);
const javaHome = javaHomeElement?.value;
if (javaHome && !await jdkExplorer.isValidHome(javaHome)) {
customEnv.splice(customEnv.indexOf(javaHomeElement), 1); // Remove
}

} else if (mavenJavaRuntime) {

// [macOS/Linux] maven context menu JAVA_HOME
if (originPath) {
const fixedOrDefault = await jdkExplorer.fixPath(originPath) || mavenJavaRuntime.path;
if (fixedOrDefault !== originPath) {
mavenJavaHomeElement.value = fixedOrDefault;
}
} else { // If unset use default
customEnv.push({
environmentVariable: 'JAVA_HOME',
value: mavenJavaRuntime.path,
});
let javaHomeElement = _getEnvElement(JAVA_HOME_ENV_NAME);
if (!javaHomeElement) {
javaHomeElement = {environmentVariable: JAVA_HOME_ENV_NAME};
customEnv.push(javaHomeElement);
}
if (OS.isMac && !customEnv.find(i => i.environmentVariable === 'ZDOTDIR')) {
javaHomeElement.value = await jdkExplorer.fixPath(javaHomeElement.value) || mavenJavaRuntime.path;

if (OS.isMac) {
// Custom .zshrc for JAVA_HOME (macOS maven menu)
// maven.terminal.useJavaHome doesnt work if JAVA_HOME already set by shell startup scripts
// https://github.com/microsoft/vscode-maven/issues/495#issuecomment-1869653082
customEnv.push({
//// Disable .zshrc JAVA_HOME (macOS maven menu only) //TODO remove
// Custom .zshrc for JAVA_HOME (macOS maven menu)
environmentVariable: 'ZDOTDIR',
//value: path.join(process.env.HOME ?? '', '.zdotdir_dummy'), //TODO remove
value: resourcesDir,
});
}
if (!_.isEqual(customEnv, customEnvOld)) {
update(CONFIG_KEY_MAVEN_CUSTOM_ENV, customEnv);
let zdotdirElement = _getEnvElement('ZDOTDIR');
if (!zdotdirElement) {
zdotdirElement = {environmentVariable: 'ZDOTDIR'};
customEnv.push(zdotdirElement);
}
zdotdirElement.value = resourcesDir;
}
}
if (!_.isEqual(customEnv, customEnvOld)) {
update(CONFIG_KEY_MAVEN_CUSTOM_ENV, customEnv);
}
}

// Gradle Daemon Java Home (Keep if set)
Expand Down

0 comments on commit be54c8a

Please sign in to comment.