From f130d40e4629653c0e38a80dd168c49a010fad2b Mon Sep 17 00:00:00 2001 From: Chao Wang Date: Thu, 18 Sep 2025 15:21:49 +0800 Subject: [PATCH] feat: retrieve IDE maven user settings file and local repository. Signed-off-by: Chao Wang --- .../tools/intellij/exhort/ApiService.java | 14 +++++++ .../intellij/settings/MavenSettingsUtil.java | 37 ++++++++++++++----- 2 files changed, 41 insertions(+), 10 deletions(-) diff --git a/src/main/java/org/jboss/tools/intellij/exhort/ApiService.java b/src/main/java/org/jboss/tools/intellij/exhort/ApiService.java index abe6d979..3817f5eb 100644 --- a/src/main/java/org/jboss/tools/intellij/exhort/ApiService.java +++ b/src/main/java/org/jboss/tools/intellij/exhort/ApiService.java @@ -147,6 +147,20 @@ private void setRequestProperties(final String manifestName) { System.clearProperty("EXHORT_PREFER_MVNW"); } + String userSettingsFile = MavenSettingsUtil.getUserSettingsFile(); + if (!userSettingsFile.isBlank()) { + System.setProperty("EXHORT_MVN_USER_SETTINGS_FILE", userSettingsFile); + } else { + System.clearProperty("EXHORT_MVN_USER_SETTINGS_FILE"); + } + + String localRepository = MavenSettingsUtil.getLocalRepository(); + if (!localRepository.isBlank()) { + System.setProperty("EXHORT_MVN_LOCAL_REPOSITORY", localRepository); + } else { + System.clearProperty("EXHORT_MVN_LOCAL_REPOSITORY"); + } + if (settings.gradlePath != null && !settings.gradlePath.isBlank()) { System.setProperty("EXHORT_GRADLE_PATH", settings.gradlePath); } else { diff --git a/src/main/java/org/jboss/tools/intellij/settings/MavenSettingsUtil.java b/src/main/java/org/jboss/tools/intellij/settings/MavenSettingsUtil.java index fb2ae16f..4f5f7b01 100644 --- a/src/main/java/org/jboss/tools/intellij/settings/MavenSettingsUtil.java +++ b/src/main/java/org/jboss/tools/intellij/settings/MavenSettingsUtil.java @@ -2,7 +2,6 @@ import com.intellij.openapi.project.Project; import com.intellij.openapi.project.ProjectManager; -import org.jetbrains.annotations.Nullable; import org.jetbrains.idea.maven.project.MavenGeneralSettings; import org.jetbrains.idea.maven.project.MavenHomeType; import org.jetbrains.idea.maven.project.MavenWorkspaceSettingsComponent; @@ -10,21 +9,39 @@ public final class MavenSettingsUtil { + private static MavenGeneralSettings mavenGeneralSettings; + private MavenSettingsUtil() { // no‑op } - @Nullable - public static boolean isMavenWrapperSelected() { - Project project; - Project[] openProjects = ProjectManager.getInstance().getOpenProjects(); - if (openProjects.length > 0) { - project = openProjects[0]; - } else { - project = ProjectManager.getInstance().getDefaultProject(); + private static MavenGeneralSettings getMavenGeneralSettings() { + if (mavenGeneralSettings == null) { + Project project; + Project[] openProjects = ProjectManager.getInstance().getOpenProjects(); + if (openProjects.length > 0) { + project = openProjects[0]; + } else { + project = ProjectManager.getInstance().getDefaultProject(); + } + mavenGeneralSettings = MavenWorkspaceSettingsComponent.getInstance(project).getSettings().getGeneralSettings(); } - MavenGeneralSettings settings = MavenWorkspaceSettingsComponent.getInstance(project).getSettings().getGeneralSettings(); + return mavenGeneralSettings; + } + + public static boolean isMavenWrapperSelected() { + MavenGeneralSettings settings = getMavenGeneralSettings(); MavenHomeType mavenHomeType = settings.getMavenHomeType(); return mavenHomeType instanceof MavenWrapper; } + + public static String getUserSettingsFile() { + MavenGeneralSettings settings = getMavenGeneralSettings(); + return settings.getUserSettingsFile(); + } + + public static String getLocalRepository() { + MavenGeneralSettings settings = getMavenGeneralSettings(); + return settings.getLocalRepository(); + } }