Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import com.intellij.openapi.project.ProjectManager;
import org.jetbrains.idea.maven.project.MavenGeneralSettings;
import org.jetbrains.idea.maven.project.MavenHomeType;
import org.jetbrains.idea.maven.project.MavenProjectsManager;
import org.jetbrains.idea.maven.project.MavenWorkspaceSettingsComponent;
import org.jetbrains.idea.maven.project.MavenWrapper;

Expand All @@ -15,16 +16,17 @@ private MavenSettingsUtil() {
// no‑op
}

private static Project getProject() {
Project[] openProjects = ProjectManager.getInstance().getOpenProjects();
if (openProjects.length > 0) {
return openProjects[0];
}
return 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 = MavenWorkspaceSettingsComponent.getInstance(getProject()).getSettings().getGeneralSettings();
}
return mavenGeneralSettings;
}
Expand All @@ -41,7 +43,6 @@ public static String getUserSettingsFile() {
}

public static String getLocalRepository() {
MavenGeneralSettings settings = getMavenGeneralSettings();
return settings.getLocalRepository();
return MavenProjectsManager.getInstance(getProject()).getRepositoryPath().toString();
Comment on lines 45 to +46

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Action required

1. Mixed project maven settings 🐞 Bug ≡ Correctness

MavenSettingsUtil.getLocalRepository() now resolves the repo path from
MavenProjectsManager.getInstance(getProject()) on every call, while
getUserSettingsFile()/isMavenWrapperSelected() use a static cached MavenGeneralSettings captured
once. If the set/order of open projects changes (or multiple projects are open), ApiService can
export Maven user settings from one project and the local repository from another, producing
incorrect Maven environment properties for analysis.
Agent Prompt
### Issue description
`MavenSettingsUtil.getLocalRepository()` now derives the repository path from `MavenProjectsManager.getInstance(getProject())` each call, while other Maven settings (`getUserSettingsFile()`, `isMavenWrapperSelected()`) are derived from a statically cached `MavenGeneralSettings` captured once. This can mix settings across different open projects.

### Issue Context
`ApiService#setRequestProperties` sets multiple Maven-related system properties in one call path. These values must be resolved from the same `Project` instance to avoid exporting an inconsistent Maven configuration.

### Fix Focus Areas
- Align all Maven settings methods to use the same `Project` instance (preferably passed in from the caller rather than using `openProjects[0]`).
- Remove/avoid static cross-project caching of `MavenGeneralSettings`, or cache per-project if caching is required.

- src/main/java/org/jboss/tools/intellij/settings/MavenSettingsUtil.java[13-47]
- src/main/java/org/jboss/tools/intellij/exhort/ApiService.java[153-165]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

}
}
Loading