From 040cfdc7f74d8d1c68909da3ed518d69122518b2 Mon Sep 17 00:00:00 2001 From: vivu001 Date: Tue, 23 Jun 2026 15:12:22 +0200 Subject: [PATCH 01/21] #1676: auto-import configured extra SDKs - Load extra SDKs from ide-extra-tools.json and register supported ones in IntelliJ. - The IntelliJ merge template is expected from the settings repository. --- .../tools/ide/tool/intellij/Intellij.java | 201 ++++++++++++++++-- 1 file changed, 184 insertions(+), 17 deletions(-) diff --git a/cli/src/main/java/com/devonfw/tools/ide/tool/intellij/Intellij.java b/cli/src/main/java/com/devonfw/tools/ide/tool/intellij/Intellij.java index f66ad3aa63..2a7f8f4636 100644 --- a/cli/src/main/java/com/devonfw/tools/ide/tool/intellij/Intellij.java +++ b/cli/src/main/java/com/devonfw/tools/ide/tool/intellij/Intellij.java @@ -2,6 +2,7 @@ import java.nio.file.Files; import java.nio.file.Path; +import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.Set; @@ -24,6 +25,9 @@ import com.devonfw.tools.ide.tool.ToolEdition; import com.devonfw.tools.ide.tool.ToolEditionAndVersion; import com.devonfw.tools.ide.tool.ToolInstallation; +import com.devonfw.tools.ide.tool.extra.ExtraToolInstallation; +import com.devonfw.tools.ide.tool.extra.ExtraTools; +import com.devonfw.tools.ide.tool.extra.ExtraToolsMapper; import com.devonfw.tools.ide.tool.gradle.Gradle; import com.devonfw.tools.ide.tool.ide.IdeToolCommandlet; import com.devonfw.tools.ide.tool.ide.IdeaBasedIdeToolCommandlet; @@ -53,6 +57,30 @@ public class Intellij extends IdeaBasedIdeToolCommandlet { private static final Map, String> BUILD_TOOL_TO_IJ_TEMPLATE = Map.of(Mvn.class, MISC_XML, Gradle.class, GRADLE_XML); + /** + * IntelliJ-specific configuration describing how an extra IDEasy tool installation can be imported as an SDK/tool definition into IntelliJ configuration. + * + * @param templateFile the IntelliJ XML template file used as merge source. + * @param targetFile the IntelliJ configuration file relative to the workspace root that should be updated. + * @param reservedName an optional reserved logical name that must not be reused by an extra installation because it would collide with the main SDK/tool + * definition. + */ + private record IntellijExtraSdkConfig(String templateFile, String targetFile, String reservedName) { + + } + + /** + * Mapping of IDEasy tool names to IntelliJ-specific SDK import configuration. + * + *

+ * Only tools contained in this map are imported automatically into IntelliJ. This keeps the import logic generic for IntelliJ while allowing support to be + * added incrementally tool by tool. + *

+ */ + private static final Map EXTRA_TOOL_CONFIGS = Map.of( + "java", new IntellijExtraSdkConfig("jdk-extra-java.xml", ".intellij/config/options/jdk.table.xml", "java") + ); + /** * The constructor. * @@ -88,7 +116,13 @@ protected String getIdeProductPrefix() { @Override public void setEnvironment(EnvironmentContext environmentContext, ToolInstallation toolInstallation, boolean additionalInstallation) { super.setEnvironment(environmentContext, toolInstallation, additionalInstallation); - environmentContext.withEnvVar("IDEA_PROPERTIES", this.context.getWorkspacePath().resolve(IDEA_PROPERTIES).toString()); + + Path workspacePath = this.context.getWorkspacePath(); + // Synchronize extra SDK/tool definitions before IntelliJ starts so newly installed extra tool versions + // become visible in the IDE without requiring a separate repository import step. + importExtraToolInstallationsToWorkspace(workspacePath); + + environmentContext.withEnvVar("IDEA_PROPERTIES", workspacePath.resolve(IDEA_PROPERTIES).toString()); } @Override @@ -97,7 +131,7 @@ protected ToolEditionAndVersion adjustRequestedEdition(ToolEditionAndVersion req ToolEdition edition = requested.getEdition(); // Check if edition is set as "ultimate" if ("ultimate".equals(edition.edition())) { - + VersionIdentifier version; if (requested.getVersion() != null) { version = VersionIdentifier.of(requested.getVersion().toString()); @@ -105,15 +139,16 @@ protected ToolEditionAndVersion adjustRequestedEdition(ToolEditionAndVersion req version = getConfiguredVersion(); } // Check whether set version warrants switching editions - if ((version.isGreater(INTELLIJ_LAST_SEPARATE_VERSION)) || // Specified version is > 2025.2.6.1 **OR** no specified version but configured version is > 2025.2.6.1 - (VersionIdentifier.LATEST.equals(version)) || // No version specified and no configured version - (VersionIdentifier.LATEST_UNSTABLE.equals(version))) { // No version specified and no configured version + if ((version.isGreater(INTELLIJ_LAST_SEPARATE_VERSION)) || + // Specified version is > 2025.2.6.1 **OR** no specified version but configured version is > 2025.2.6.1 + (VersionIdentifier.LATEST.equals(version)) || // No version specified and no configured version + (VersionIdentifier.LATEST_UNSTABLE.equals(version))) { // No version specified and no configured version // Switching to IntelliJ Standard edition LOG.warn(""" - Notice: You have configured IDEasy to use the IntelliJ Ultimate Edition. Since version 2025.3, the Ultimate and Community editions of IntelliJ have been unified into a single edition. - Since you are attempting to install a version of IntelliJ that is 2025.3 or newer, we are automatically switching your edition to the unified edition to ensure compatibility. - To specifically install the last true ultimate version of IntelliJ, please run "ide install intellij 2025.2.6.1". - Otherwise, we recommend permanently switching to the unified edition by running "ide set-edition intellij intellij"."""); + Notice: You have configured IDEasy to use the IntelliJ Ultimate Edition. Since version 2025.3, the Ultimate and Community editions of IntelliJ have been unified into a single edition. + Since you are attempting to install a version of IntelliJ that is 2025.3 or newer, we are automatically switching your edition to the unified edition to ensure compatibility. + To specifically install the last true ultimate version of IntelliJ, please run "ide install intellij 2025.2.6.1". + Otherwise, we recommend permanently switching to the unified edition by running "ide set-edition intellij intellij"."""); edition = new ToolEdition(this.tool, "intellij"); requested.replaceEdition(edition); } @@ -129,6 +164,16 @@ private EnvironmentVariables getIntellijEnvironmentVariables(Path projectPath) { return environmentVariables.resolved(); } + private Path getWorkspacePath(Path repositoryPath) { + Path workspacesPath = this.context.getIdeHome().resolve(IdeContext.FOLDER_WORKSPACES); + Path workspacePath = this.context.getFileAccess().findAncestor(repositoryPath, workspacesPath, 1); + if (workspacePath == null) { + throw new CliException( + "Cannot import project into workspace: could not find workspace from " + repositoryPath); + } + return workspacePath; + } + private void mergeConfig(Path repositoryPath, String configFilePath) { Path templatePath = this.context.getSettingsPath().resolve(TEMPLATE_LOCATION); Path templateFile = templatePath.resolve(configFilePath); @@ -137,12 +182,7 @@ private void mergeConfig(Path repositoryPath, String configFilePath) { "Cannot import project into workspace: template file not found at " + templateFile + "\n" + "Please do an upstream merge of your settings git repository."); } - Path workspacesPath = this.context.getIdeHome().resolve(IdeContext.FOLDER_WORKSPACES); - Path workspacePath = this.context.getFileAccess().findAncestor(repositoryPath, workspacesPath, 1); - if (workspacePath == null) { - throw new CliException( - "Cannot import project into workspace: could not find workspace from " + repositoryPath); - } + Path workspacePath = getWorkspacePath(repositoryPath); XmlMerger xmlMerger = new XmlMerger(this.context); EnvironmentVariables environmentVariables = getIntellijEnvironmentVariables(workspacePath.relativize(repositoryPath)); Path workspaceFile = workspacePath.resolve(FOLDER_IDEA_CONFIG).resolve(configFilePath); @@ -158,6 +198,7 @@ private void mergeConfig(Path repositoryPath, String configFilePath) { @Override public void importRepository(Path repositoryPath) { CommandletManager commandletManager = this.context.getCommandletManager(); + boolean buildDescriptorFound = false; for (Entry, String> entry : BUILD_TOOL_TO_IJ_TEMPLATE.entrySet()) { LocalToolCommandlet buildTool = commandletManager.getCommandlet(entry.getKey()); Path buildDescriptor = buildTool.findBuildDescriptor(repositoryPath); @@ -165,9 +206,135 @@ public void importRepository(Path repositoryPath) { String templateFilename = entry.getValue(); LOG.debug("Found build descriptor {} so merging template {}", buildDescriptor, templateFilename); mergeConfig(repositoryPath, templateFilename); - return; + buildDescriptorFound = true; + break; + } + } + if (!buildDescriptorFound) { + LOG.warn("No supported build descriptor was found for project import in {}", repositoryPath); + } + + importExtraToolInstallations(repositoryPath); + } + + /** + * Imports configured extra tool installations into IntelliJ for the repository contained in the given workspace. + * + *

+ * This method is used from repository import flow where only a repository path is known and the workspace must first be resolved from that repository + * location. + *

+ * + * @param repositoryPath the repository path inside the workspace. + */ + private void importExtraToolInstallations(Path repositoryPath) { + Path workspacePath = getWorkspacePath(repositoryPath); + importExtraToolInstallationsToWorkspace(workspacePath); + } + + /** + * Imports all configured and supported extra tool installations into IntelliJ workspace configuration. + * + *

+ * Extra tool installations are read from {@code settings/ide-extra-tools.json}. For each configured tool, IntelliJ import is only attempted if this class + * provides IntelliJ-specific support via {@link #EXTRA_TOOL_CONFIGS}. This keeps the discovery of extra tools generic while the actual IDE import remains + * explicit and controlled. + *

+ * + * @param workspacePath the IntelliJ workspace root whose configuration should be updated. + */ + private void importExtraToolInstallationsToWorkspace(Path workspacePath) { + ExtraTools extraTools = ExtraToolsMapper.get().loadJsonFromFolder(this.context.getSettingsPath()); + if (extraTools == null) { + return; + } + + for (String tool : extraTools.getSortedToolNames()) { + IntellijExtraSdkConfig config = EXTRA_TOOL_CONFIGS.get(tool); + if (config == null) { + LOG.debug("Skipping IntelliJ import of extra tool '{}': no IntelliJ template support configured.", tool); + continue; + } + List extraInstallations = extraTools.getExtraInstallations(tool); + for (ExtraToolInstallation extraInstallation : extraInstallations) { + mergeExtraToolInstallation(workspacePath, tool, extraInstallation, config); } } - LOG.warn("No supported build descriptor was found for project import in {}", repositoryPath); + } + + /** + * Merges a single extra IDEasy tool installation into IntelliJ workspace configuration. + * + *

+ * This method performs validation and variable preparation before delegating to the actual XML merge: + *

+ *
    + *
  • rejects reserved names that would collide with the main SDK/tool definition,
  • + *
  • verifies that the extra tool installation really exists under {@code software/extra},
  • + *
  • verifies that the required IntelliJ merge template is available.
  • + *
+ * + * @param workspacePath the IntelliJ workspace root. + * @param tool the IDEasy tool name such as {@code java}. + * @param extraInstallation the configured extra installation from {@code ide-extra-tools.json}. + * @param config the IntelliJ-specific import configuration for the tool. + */ + private void mergeExtraToolInstallation(Path workspacePath, String tool, ExtraToolInstallation extraInstallation, + IntellijExtraSdkConfig config) { + + String name = extraInstallation.name(); + if ((config.reservedName() != null) && config.reservedName().equalsIgnoreCase(name)) { + LOG.warn("Skipping IntelliJ import for extra {} installation '{}': name conflicts with main {} installation.", tool, name, tool); + return; + } + + Path extraToolHome = this.context.getSoftwareExtraPath().resolve(tool).resolve(name); + if (!Files.isDirectory(extraToolHome)) { + LOG.warn("Skipping IntelliJ import for extra {} installation '{}': directory does not exist: {}", tool, name, extraToolHome); + return; + } + + Path templateFile = this.context.getSettingsPath() + .resolve(TEMPLATE_LOCATION) + .resolve(config.templateFile()); + if (!Files.exists(templateFile)) { + throw new CliException( + "Cannot import extra " + tool + " installation into IntelliJ: template file not found at " + templateFile + "\n" + + "Please do an upstream merge of your settings git repository."); + } + + ExtensibleEnvironmentVariables environmentVariables = new ExtensibleEnvironmentVariables( + (AbstractEnvironmentVariables) this.context.getVariables().getParent(), this.context); + environmentVariables.setValue("EXTRA_TOOL", tool); + environmentVariables.setValue("EXTRA_NAME", name); + environmentVariables.setValue("EXTRA_HOME", extraToolHome.toString().replace('\\', '/')); + environmentVariables.setValue("EXTRA_VERSION", extraInstallation.version().toString()); + if (extraInstallation.edition() != null) { + environmentVariables.setValue("EXTRA_EDITION", extraInstallation.edition()); + } + + mergeExtraToolInstallationToWorkspace(workspacePath, config, templateFile, environmentVariables.resolved()); + } + + /** + * Performs the actual XML merge of an IntelliJ extra SDK/tool definition into the configured target file. + * + * @param workspacePath the IntelliJ workspace root. + * @param config the IntelliJ-specific import configuration. + * @param templateFile the resolved template file to merge from. + * @param environmentVariables the resolved variables used to parameterize the template. + */ + private void mergeExtraToolInstallationToWorkspace(Path workspacePath, IntellijExtraSdkConfig config, Path templateFile, + EnvironmentVariables environmentVariables) { + + Path targetFile = workspacePath.resolve(config.targetFile()); + + XmlMerger xmlMerger = new XmlMerger(this.context); + XmlMergeDocument workspaceDocument = xmlMerger.load(targetFile); + XmlMergeDocument templateDocument = xmlMerger.loadAndResolve(templateFile, environmentVariables); + + Document mergedDocument = xmlMerger.merge(templateDocument, workspaceDocument, false); + + xmlMerger.save(mergedDocument, targetFile); } } From cb6288f17d4813ceb2cf808102e023577eed6679 Mon Sep 17 00:00:00 2001 From: vivu001 Date: Wed, 24 Jun 2026 13:32:19 +0200 Subject: [PATCH 02/21] #1676: Added tests for SDKs import --- .../_ide/urls/intellij/dependencies.json | 8 + .../_ide/urls/intellij/intellij/2023.3.3/urls | 1 + .../_ide/urls/intellij/ultimate/2023.3.3/urls | 1 + .../_ide/urls/java/java/17.0.10_7/urls | 1 + .../project/conf/ide.properties | 2 + .../project/home/.ide/ide.properties | 0 .../.ide/workspace/update/user.properties | 1 + .../project/settings/ide-extra-tools.json | 16 ++ .../project/settings/ide.properties | 2 + .../intellij/plugins/ActivePlugin.properties | 3 + .../plugins/InactivePlugin.properties | 2 + .../intellij/workspace/setup/.gitkeep | 0 .../intellij/workspace/update/.gitkeep | 0 .../intellij/workspace/update/idea.properties | 0 .../repositories/test_gradle.properties | 6 + .../settings/repositories/test_mvn.properties | 5 + .../settings/workspace/update/.editorconfig | 17 ++ .../project/workspaces/main/.gitkeep | 0 .../project/workspaces/main/test_mvn/pom.xml | 6 + .../test/subfolder/test_gradle/build.gradle | 0 .../intellij/default/linux/bin/idea.sh | 13 ++ .../default/linux/bin/idea64.vmoptions | 5 + .../intellij/intellij/default/linux/build.txt | 1 + .../IntelliJ IDEA CE.app/Contents/MacOS/idea | 12 ++ .../Contents/Resources/build.txt | 1 + .../Contents/bin/idea.vmoptions | 5 + .../intellij/default/windows/bin/idea64.exe | 11 ++ .../default/windows/bin/idea64.exe.vmoptions | 5 + .../intellij/default/windows/build.txt | 1 + .../ultimate/default/windows/bin/idea64.exe | 11 ++ .../ultimate/default/windows/build.txt | 1 + .../repository/java/java/default/bin/java | 2 + .../repository/java/java/default/bin/java.cmd | 2 + .../_ide/urls/intellij/dependencies.json | 8 + .../_ide/urls/intellij/intellij/2023.3.3/urls | 1 + .../_ide/urls/intellij/ultimate/2023.3.3/urls | 1 + .../_ide/urls/java/java/17.0.10_7/urls | 1 + .../project/conf/ide.properties | 2 + .../project/home/.ide/ide.properties | 0 .../.ide/workspace/update/user.properties | 1 + .../project/settings/ide-extra-tools.json | 16 ++ .../project/settings/ide.properties | 2 + .../intellij/plugins/ActivePlugin.properties | 3 + .../plugins/InactivePlugin.properties | 2 + .../intellij/workspace/setup/.gitkeep | 0 .../intellij/workspace/update/.gitkeep | 0 .../intellij/workspace/update/idea.properties | 0 .../repositories/test_gradle.properties | 6 + .../settings/repositories/test_mvn.properties | 5 + .../settings/workspace/update/.editorconfig | 17 ++ .../project/workspaces/main/.gitkeep | 0 .../project/workspaces/main/test_mvn/pom.xml | 6 + .../test/subfolder/test_gradle/build.gradle | 0 .../intellij/default/linux/bin/idea.sh | 13 ++ .../default/linux/bin/idea64.vmoptions | 5 + .../intellij/intellij/default/linux/build.txt | 1 + .../IntelliJ IDEA CE.app/Contents/MacOS/idea | 12 ++ .../Contents/Resources/build.txt | 1 + .../Contents/bin/idea.vmoptions | 5 + .../intellij/default/windows/bin/idea64.exe | 11 ++ .../default/windows/bin/idea64.exe.vmoptions | 5 + .../intellij/default/windows/build.txt | 1 + .../ultimate/default/windows/bin/idea64.exe | 11 ++ .../ultimate/default/windows/build.txt | 1 + .../repository/java/java/default/bin/java | 2 + .../repository/java/java/default/bin/java.cmd | 2 + .../project/settings/ide-extra-tools.json | 16 ++ .../.intellij/config/options/jdk.table.xml | 171 ++++++++++++++++++ 68 files changed, 469 insertions(+) create mode 100644 cli/src/test/resources/ide-projects/intellij-extra-java-conflict/_ide/urls/intellij/dependencies.json create mode 100644 cli/src/test/resources/ide-projects/intellij-extra-java-conflict/_ide/urls/intellij/intellij/2023.3.3/urls create mode 100644 cli/src/test/resources/ide-projects/intellij-extra-java-conflict/_ide/urls/intellij/ultimate/2023.3.3/urls create mode 100644 cli/src/test/resources/ide-projects/intellij-extra-java-conflict/_ide/urls/java/java/17.0.10_7/urls create mode 100644 cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/conf/ide.properties create mode 100644 cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/home/.ide/ide.properties create mode 100644 cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/home/.ide/workspace/update/user.properties create mode 100644 cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/settings/ide-extra-tools.json create mode 100644 cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/settings/ide.properties create mode 100644 cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/settings/intellij/plugins/ActivePlugin.properties create mode 100644 cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/settings/intellij/plugins/InactivePlugin.properties create mode 100644 cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/settings/intellij/workspace/setup/.gitkeep create mode 100644 cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/settings/intellij/workspace/update/.gitkeep create mode 100644 cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/settings/intellij/workspace/update/idea.properties create mode 100644 cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/settings/repositories/test_gradle.properties create mode 100644 cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/settings/repositories/test_mvn.properties create mode 100644 cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/settings/workspace/update/.editorconfig create mode 100644 cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/workspaces/main/.gitkeep create mode 100644 cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/workspaces/main/test_mvn/pom.xml create mode 100644 cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/workspaces/test/subfolder/test_gradle/build.gradle create mode 100644 cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/intellij/default/linux/bin/idea.sh create mode 100644 cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/intellij/default/linux/bin/idea64.vmoptions create mode 100644 cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/intellij/default/linux/build.txt create mode 100644 cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/intellij/default/mac/IntelliJ IDEA CE.app/Contents/MacOS/idea create mode 100644 cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/intellij/default/mac/IntelliJ IDEA CE.app/Contents/Resources/build.txt create mode 100644 cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/intellij/default/mac/IntelliJ IDEA CE.app/Contents/bin/idea.vmoptions create mode 100644 cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/intellij/default/windows/bin/idea64.exe create mode 100644 cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/intellij/default/windows/bin/idea64.exe.vmoptions create mode 100644 cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/intellij/default/windows/build.txt create mode 100644 cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/ultimate/default/windows/bin/idea64.exe create mode 100644 cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/ultimate/default/windows/build.txt create mode 100644 cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/java/java/default/bin/java create mode 100644 cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/java/java/default/bin/java.cmd create mode 100644 cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/_ide/urls/intellij/dependencies.json create mode 100644 cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/_ide/urls/intellij/intellij/2023.3.3/urls create mode 100644 cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/_ide/urls/intellij/ultimate/2023.3.3/urls create mode 100644 cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/_ide/urls/java/java/17.0.10_7/urls create mode 100644 cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/conf/ide.properties create mode 100644 cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/home/.ide/ide.properties create mode 100644 cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/home/.ide/workspace/update/user.properties create mode 100644 cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/settings/ide-extra-tools.json create mode 100644 cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/settings/ide.properties create mode 100644 cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/settings/intellij/plugins/ActivePlugin.properties create mode 100644 cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/settings/intellij/plugins/InactivePlugin.properties create mode 100644 cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/settings/intellij/workspace/setup/.gitkeep create mode 100644 cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/settings/intellij/workspace/update/.gitkeep create mode 100644 cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/settings/intellij/workspace/update/idea.properties create mode 100644 cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/settings/repositories/test_gradle.properties create mode 100644 cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/settings/repositories/test_mvn.properties create mode 100644 cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/settings/workspace/update/.editorconfig create mode 100644 cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/workspaces/main/.gitkeep create mode 100644 cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/workspaces/main/test_mvn/pom.xml create mode 100644 cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/workspaces/test/subfolder/test_gradle/build.gradle create mode 100644 cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/intellij/default/linux/bin/idea.sh create mode 100644 cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/intellij/default/linux/bin/idea64.vmoptions create mode 100644 cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/intellij/default/linux/build.txt create mode 100644 cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/intellij/default/mac/IntelliJ IDEA CE.app/Contents/MacOS/idea create mode 100644 cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/intellij/default/mac/IntelliJ IDEA CE.app/Contents/Resources/build.txt create mode 100644 cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/intellij/default/mac/IntelliJ IDEA CE.app/Contents/bin/idea.vmoptions create mode 100644 cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/intellij/default/windows/bin/idea64.exe create mode 100644 cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/intellij/default/windows/bin/idea64.exe.vmoptions create mode 100644 cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/intellij/default/windows/build.txt create mode 100644 cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/ultimate/default/windows/bin/idea64.exe create mode 100644 cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/ultimate/default/windows/build.txt create mode 100644 cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/java/java/default/bin/java create mode 100644 cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/java/java/default/bin/java.cmd create mode 100644 cli/src/test/resources/ide-projects/intellij/project/settings/ide-extra-tools.json create mode 100644 cli/src/test/resources/ide-projects/intellij/project/workspaces/main/.intellij/config/options/jdk.table.xml diff --git a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/_ide/urls/intellij/dependencies.json b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/_ide/urls/intellij/dependencies.json new file mode 100644 index 0000000000..af76b96d74 --- /dev/null +++ b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/_ide/urls/intellij/dependencies.json @@ -0,0 +1,8 @@ +{ + "[2022.2,2024.2)": [ + { + "tool": "java", + "versionRange": "[17,)" + } + ] +} diff --git a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/_ide/urls/intellij/intellij/2023.3.3/urls b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/_ide/urls/intellij/intellij/2023.3.3/urls new file mode 100644 index 0000000000..92fd05749d --- /dev/null +++ b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/_ide/urls/intellij/intellij/2023.3.3/urls @@ -0,0 +1 @@ +${testbaseurl}/download/intellij/intellij/2023.3.3/intellij-2023.3.3.tgz diff --git a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/_ide/urls/intellij/ultimate/2023.3.3/urls b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/_ide/urls/intellij/ultimate/2023.3.3/urls new file mode 100644 index 0000000000..9426426b88 --- /dev/null +++ b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/_ide/urls/intellij/ultimate/2023.3.3/urls @@ -0,0 +1 @@ +${testbaseurl}/download/intellij/ultimate/2023.3.3/intellij-2023.3.3.tgz diff --git a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/_ide/urls/java/java/17.0.10_7/urls b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/_ide/urls/java/java/17.0.10_7/urls new file mode 100644 index 0000000000..62e6853f29 --- /dev/null +++ b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/_ide/urls/java/java/17.0.10_7/urls @@ -0,0 +1 @@ +${testbaseurl}/download/java/java/17.0.10_7/java-17.0.10_7.tgz diff --git a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/conf/ide.properties b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/conf/ide.properties new file mode 100644 index 0000000000..8543c71b51 --- /dev/null +++ b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/conf/ide.properties @@ -0,0 +1,2 @@ +# here the INTELLIJ_PROPERTIES variable should be added by the test +INTELLIJ_VM_ARGS=-Xms256m -Xmx4096m -XX:ReservedCodeCacheSize=256m -Dsun.io.useCanonCaches=true -ea diff --git a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/home/.ide/ide.properties b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/home/.ide/ide.properties new file mode 100644 index 0000000000..e69de29bb2 diff --git a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/home/.ide/workspace/update/user.properties b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/home/.ide/workspace/update/user.properties new file mode 100644 index 0000000000..142b9b8792 --- /dev/null +++ b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/home/.ide/workspace/update/user.properties @@ -0,0 +1 @@ +ijversion=$[INTELLIJ_VERSION] diff --git a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/settings/ide-extra-tools.json b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/settings/ide-extra-tools.json new file mode 100644 index 0000000000..35eae6ed54 --- /dev/null +++ b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/settings/ide-extra-tools.json @@ -0,0 +1,16 @@ +{ + "java": { + "java": { + "version": "11.0.27_6", + "edition": "azul" + }, + "process-engine": { + "version": "21.*" + } + }, + "mvn": { + "m4": { + "version": "4.0.0-rc-5" + } + } +} diff --git a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/settings/ide.properties b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/settings/ide.properties new file mode 100644 index 0000000000..15e3965ed3 --- /dev/null +++ b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/settings/ide.properties @@ -0,0 +1,2 @@ +JAVA_VERSION=17.0.10_7 +INTELLIJ_VERSION=2023.3.3 \ No newline at end of file diff --git a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/settings/intellij/plugins/ActivePlugin.properties b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/settings/intellij/plugins/ActivePlugin.properties new file mode 100644 index 0000000000..985afcee82 --- /dev/null +++ b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/settings/intellij/plugins/ActivePlugin.properties @@ -0,0 +1,3 @@ +plugin_id=activePlugin +plugin_active=true +plugin_url=http://customRepo diff --git a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/settings/intellij/plugins/InactivePlugin.properties b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/settings/intellij/plugins/InactivePlugin.properties new file mode 100644 index 0000000000..89e6d9e4b4 --- /dev/null +++ b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/settings/intellij/plugins/InactivePlugin.properties @@ -0,0 +1,2 @@ +plugin_id=inactivePlugin +plugin_active=false diff --git a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/settings/intellij/workspace/setup/.gitkeep b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/settings/intellij/workspace/setup/.gitkeep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/settings/intellij/workspace/update/.gitkeep b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/settings/intellij/workspace/update/.gitkeep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/settings/intellij/workspace/update/idea.properties b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/settings/intellij/workspace/update/idea.properties new file mode 100644 index 0000000000..e69de29bb2 diff --git a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/settings/repositories/test_gradle.properties b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/settings/repositories/test_gradle.properties new file mode 100644 index 0000000000..92569780cf --- /dev/null +++ b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/settings/repositories/test_gradle.properties @@ -0,0 +1,6 @@ +path=subfolder/test_gradle +git_url=https://github.com/devonfw/IDEasy.git +git_branch=main +workspace=test +import=intellij +active=true diff --git a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/settings/repositories/test_mvn.properties b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/settings/repositories/test_mvn.properties new file mode 100644 index 0000000000..a1ac934c89 --- /dev/null +++ b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/settings/repositories/test_mvn.properties @@ -0,0 +1,5 @@ +path=test_mvn +git_url=https://github.com/devonfw/IDEasy.git +git_branch=main +import=intellij +active=true diff --git a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/settings/workspace/update/.editorconfig b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/settings/workspace/update/.editorconfig new file mode 100644 index 0000000000..acffc7bca6 --- /dev/null +++ b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/settings/workspace/update/.editorconfig @@ -0,0 +1,17 @@ +root = true + +[*] +charset = utf-8 +end_of_line = lf +indent_size = 7 +indent_style = space +insert_final_newline = true +max_line_length = 160 +tab_width = 2 +ij_continuation_indent_size = 4 +ij_formatter_off_tag = @formatter:off +ij_formatter_on_tag = @formatter:on +ij_formatter_tags_enabled = true +ij_smart_tabs = false +ij_visual_guides = +ij_wrap_on_typing = false \ No newline at end of file diff --git a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/workspaces/main/.gitkeep b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/workspaces/main/.gitkeep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/workspaces/main/test_mvn/pom.xml b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/workspaces/main/test_mvn/pom.xml new file mode 100644 index 0000000000..e71f8f1cd8 --- /dev/null +++ b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/workspaces/main/test_mvn/pom.xml @@ -0,0 +1,6 @@ + + + 4.0.0 + ide + diff --git a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/workspaces/test/subfolder/test_gradle/build.gradle b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/workspaces/test/subfolder/test_gradle/build.gradle new file mode 100644 index 0000000000..e69de29bb2 diff --git a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/intellij/default/linux/bin/idea.sh b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/intellij/default/linux/bin/idea.sh new file mode 100644 index 0000000000..23a51da07f --- /dev/null +++ b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/intellij/default/linux/bin/idea.sh @@ -0,0 +1,13 @@ +#!/bin/bash +cd "$(dirname "$0")" +echo $PWD +echo "intellij linux $*" +echo "intellij linux $*" > intellijtest + +if [ "${1}" == "installPlugins" ]; then + echo "installed plugin: PluginNode{id=${@:2}}" +fi + +if [ -n "${3}" ]; then + echo "custom plugin repo url is: ${3}" > customRepoTest +fi diff --git a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/intellij/default/linux/bin/idea64.vmoptions b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/intellij/default/linux/bin/idea64.vmoptions new file mode 100644 index 0000000000..6f64c59cc6 --- /dev/null +++ b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/intellij/default/linux/bin/idea64.vmoptions @@ -0,0 +1,5 @@ +-Xms128m +-Xmx2048m +-XX:ReservedCodeCacheSize=512m +-ea +-Dsun.io.useCanonCaches=false diff --git a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/intellij/default/linux/build.txt b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/intellij/default/linux/build.txt new file mode 100644 index 0000000000..1c35c30bfc --- /dev/null +++ b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/intellij/default/linux/build.txt @@ -0,0 +1 @@ +IC-241.18034.62 \ No newline at end of file diff --git a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/intellij/default/mac/IntelliJ IDEA CE.app/Contents/MacOS/idea b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/intellij/default/mac/IntelliJ IDEA CE.app/Contents/MacOS/idea new file mode 100644 index 0000000000..cd10cd647e --- /dev/null +++ b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/intellij/default/mac/IntelliJ IDEA CE.app/Contents/MacOS/idea @@ -0,0 +1,12 @@ +#!/bin/bash +cd "$(dirname "$0")" +echo "intellij mac $*" > intellijtest + +if [ "${1}" == "installPlugins" ]; then + echo "installed plugin: PluginNode{id=${@:2}}" +fi + +if [ -n "${3}" ]; then + echo "custom plugin repo url is: ${3}" > customRepoTest +fi + diff --git a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/intellij/default/mac/IntelliJ IDEA CE.app/Contents/Resources/build.txt b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/intellij/default/mac/IntelliJ IDEA CE.app/Contents/Resources/build.txt new file mode 100644 index 0000000000..1c35c30bfc --- /dev/null +++ b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/intellij/default/mac/IntelliJ IDEA CE.app/Contents/Resources/build.txt @@ -0,0 +1 @@ +IC-241.18034.62 \ No newline at end of file diff --git a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/intellij/default/mac/IntelliJ IDEA CE.app/Contents/bin/idea.vmoptions b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/intellij/default/mac/IntelliJ IDEA CE.app/Contents/bin/idea.vmoptions new file mode 100644 index 0000000000..6f64c59cc6 --- /dev/null +++ b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/intellij/default/mac/IntelliJ IDEA CE.app/Contents/bin/idea.vmoptions @@ -0,0 +1,5 @@ +-Xms128m +-Xmx2048m +-XX:ReservedCodeCacheSize=512m +-ea +-Dsun.io.useCanonCaches=false diff --git a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/intellij/default/windows/bin/idea64.exe b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/intellij/default/windows/bin/idea64.exe new file mode 100644 index 0000000000..10e108032b --- /dev/null +++ b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/intellij/default/windows/bin/idea64.exe @@ -0,0 +1,11 @@ +#!/bin/bash +cd "$(dirname "$0")" +echo "intellij windows $*" > intellijtest + +if [ "${1}" == "installPlugins" ]; then + echo "installed plugin: PluginNode{id=${@:2}}" +fi + +if [ -n "${3}" ]; then + echo "custom plugin repo url is: ${3}" > customRepoTest +fi diff --git a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/intellij/default/windows/bin/idea64.exe.vmoptions b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/intellij/default/windows/bin/idea64.exe.vmoptions new file mode 100644 index 0000000000..6f64c59cc6 --- /dev/null +++ b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/intellij/default/windows/bin/idea64.exe.vmoptions @@ -0,0 +1,5 @@ +-Xms128m +-Xmx2048m +-XX:ReservedCodeCacheSize=512m +-ea +-Dsun.io.useCanonCaches=false diff --git a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/intellij/default/windows/build.txt b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/intellij/default/windows/build.txt new file mode 100644 index 0000000000..1c35c30bfc --- /dev/null +++ b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/intellij/default/windows/build.txt @@ -0,0 +1 @@ +IC-241.18034.62 \ No newline at end of file diff --git a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/ultimate/default/windows/bin/idea64.exe b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/ultimate/default/windows/bin/idea64.exe new file mode 100644 index 0000000000..10e108032b --- /dev/null +++ b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/ultimate/default/windows/bin/idea64.exe @@ -0,0 +1,11 @@ +#!/bin/bash +cd "$(dirname "$0")" +echo "intellij windows $*" > intellijtest + +if [ "${1}" == "installPlugins" ]; then + echo "installed plugin: PluginNode{id=${@:2}}" +fi + +if [ -n "${3}" ]; then + echo "custom plugin repo url is: ${3}" > customRepoTest +fi diff --git a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/ultimate/default/windows/build.txt b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/ultimate/default/windows/build.txt new file mode 100644 index 0000000000..1c35c30bfc --- /dev/null +++ b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/ultimate/default/windows/build.txt @@ -0,0 +1 @@ +IC-241.18034.62 \ No newline at end of file diff --git a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/java/java/default/bin/java b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/java/java/default/bin/java new file mode 100644 index 0000000000..0aa8af9dc5 --- /dev/null +++ b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/java/java/default/bin/java @@ -0,0 +1,2 @@ +#!/bin/bash +echo "java $*" \ No newline at end of file diff --git a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/java/java/default/bin/java.cmd b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/java/java/default/bin/java.cmd new file mode 100644 index 0000000000..bbaac38028 --- /dev/null +++ b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/java/java/default/bin/java.cmd @@ -0,0 +1,2 @@ +@echo off +echo java %* \ No newline at end of file diff --git a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/_ide/urls/intellij/dependencies.json b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/_ide/urls/intellij/dependencies.json new file mode 100644 index 0000000000..af76b96d74 --- /dev/null +++ b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/_ide/urls/intellij/dependencies.json @@ -0,0 +1,8 @@ +{ + "[2022.2,2024.2)": [ + { + "tool": "java", + "versionRange": "[17,)" + } + ] +} diff --git a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/_ide/urls/intellij/intellij/2023.3.3/urls b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/_ide/urls/intellij/intellij/2023.3.3/urls new file mode 100644 index 0000000000..92fd05749d --- /dev/null +++ b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/_ide/urls/intellij/intellij/2023.3.3/urls @@ -0,0 +1 @@ +${testbaseurl}/download/intellij/intellij/2023.3.3/intellij-2023.3.3.tgz diff --git a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/_ide/urls/intellij/ultimate/2023.3.3/urls b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/_ide/urls/intellij/ultimate/2023.3.3/urls new file mode 100644 index 0000000000..9426426b88 --- /dev/null +++ b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/_ide/urls/intellij/ultimate/2023.3.3/urls @@ -0,0 +1 @@ +${testbaseurl}/download/intellij/ultimate/2023.3.3/intellij-2023.3.3.tgz diff --git a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/_ide/urls/java/java/17.0.10_7/urls b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/_ide/urls/java/java/17.0.10_7/urls new file mode 100644 index 0000000000..62e6853f29 --- /dev/null +++ b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/_ide/urls/java/java/17.0.10_7/urls @@ -0,0 +1 @@ +${testbaseurl}/download/java/java/17.0.10_7/java-17.0.10_7.tgz diff --git a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/conf/ide.properties b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/conf/ide.properties new file mode 100644 index 0000000000..8543c71b51 --- /dev/null +++ b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/conf/ide.properties @@ -0,0 +1,2 @@ +# here the INTELLIJ_PROPERTIES variable should be added by the test +INTELLIJ_VM_ARGS=-Xms256m -Xmx4096m -XX:ReservedCodeCacheSize=256m -Dsun.io.useCanonCaches=true -ea diff --git a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/home/.ide/ide.properties b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/home/.ide/ide.properties new file mode 100644 index 0000000000..e69de29bb2 diff --git a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/home/.ide/workspace/update/user.properties b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/home/.ide/workspace/update/user.properties new file mode 100644 index 0000000000..142b9b8792 --- /dev/null +++ b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/home/.ide/workspace/update/user.properties @@ -0,0 +1 @@ +ijversion=$[INTELLIJ_VERSION] diff --git a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/settings/ide-extra-tools.json b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/settings/ide-extra-tools.json new file mode 100644 index 0000000000..e832adb715 --- /dev/null +++ b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/settings/ide-extra-tools.json @@ -0,0 +1,16 @@ +{ + "java": { + "client": { + "version": "11.0.27_6", + "edition": "azul" + }, + "process-engine": { + "version": "21.*" + } + }, + "mvn": { + "m4": { + "version": "4.0.0-rc-5" + } + } +} diff --git a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/settings/ide.properties b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/settings/ide.properties new file mode 100644 index 0000000000..15e3965ed3 --- /dev/null +++ b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/settings/ide.properties @@ -0,0 +1,2 @@ +JAVA_VERSION=17.0.10_7 +INTELLIJ_VERSION=2023.3.3 \ No newline at end of file diff --git a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/settings/intellij/plugins/ActivePlugin.properties b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/settings/intellij/plugins/ActivePlugin.properties new file mode 100644 index 0000000000..985afcee82 --- /dev/null +++ b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/settings/intellij/plugins/ActivePlugin.properties @@ -0,0 +1,3 @@ +plugin_id=activePlugin +plugin_active=true +plugin_url=http://customRepo diff --git a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/settings/intellij/plugins/InactivePlugin.properties b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/settings/intellij/plugins/InactivePlugin.properties new file mode 100644 index 0000000000..89e6d9e4b4 --- /dev/null +++ b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/settings/intellij/plugins/InactivePlugin.properties @@ -0,0 +1,2 @@ +plugin_id=inactivePlugin +plugin_active=false diff --git a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/settings/intellij/workspace/setup/.gitkeep b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/settings/intellij/workspace/setup/.gitkeep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/settings/intellij/workspace/update/.gitkeep b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/settings/intellij/workspace/update/.gitkeep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/settings/intellij/workspace/update/idea.properties b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/settings/intellij/workspace/update/idea.properties new file mode 100644 index 0000000000..e69de29bb2 diff --git a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/settings/repositories/test_gradle.properties b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/settings/repositories/test_gradle.properties new file mode 100644 index 0000000000..92569780cf --- /dev/null +++ b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/settings/repositories/test_gradle.properties @@ -0,0 +1,6 @@ +path=subfolder/test_gradle +git_url=https://github.com/devonfw/IDEasy.git +git_branch=main +workspace=test +import=intellij +active=true diff --git a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/settings/repositories/test_mvn.properties b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/settings/repositories/test_mvn.properties new file mode 100644 index 0000000000..a1ac934c89 --- /dev/null +++ b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/settings/repositories/test_mvn.properties @@ -0,0 +1,5 @@ +path=test_mvn +git_url=https://github.com/devonfw/IDEasy.git +git_branch=main +import=intellij +active=true diff --git a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/settings/workspace/update/.editorconfig b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/settings/workspace/update/.editorconfig new file mode 100644 index 0000000000..acffc7bca6 --- /dev/null +++ b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/settings/workspace/update/.editorconfig @@ -0,0 +1,17 @@ +root = true + +[*] +charset = utf-8 +end_of_line = lf +indent_size = 7 +indent_style = space +insert_final_newline = true +max_line_length = 160 +tab_width = 2 +ij_continuation_indent_size = 4 +ij_formatter_off_tag = @formatter:off +ij_formatter_on_tag = @formatter:on +ij_formatter_tags_enabled = true +ij_smart_tabs = false +ij_visual_guides = +ij_wrap_on_typing = false \ No newline at end of file diff --git a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/workspaces/main/.gitkeep b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/workspaces/main/.gitkeep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/workspaces/main/test_mvn/pom.xml b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/workspaces/main/test_mvn/pom.xml new file mode 100644 index 0000000000..e71f8f1cd8 --- /dev/null +++ b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/workspaces/main/test_mvn/pom.xml @@ -0,0 +1,6 @@ + + + 4.0.0 + ide + diff --git a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/workspaces/test/subfolder/test_gradle/build.gradle b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/workspaces/test/subfolder/test_gradle/build.gradle new file mode 100644 index 0000000000..e69de29bb2 diff --git a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/intellij/default/linux/bin/idea.sh b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/intellij/default/linux/bin/idea.sh new file mode 100644 index 0000000000..23a51da07f --- /dev/null +++ b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/intellij/default/linux/bin/idea.sh @@ -0,0 +1,13 @@ +#!/bin/bash +cd "$(dirname "$0")" +echo $PWD +echo "intellij linux $*" +echo "intellij linux $*" > intellijtest + +if [ "${1}" == "installPlugins" ]; then + echo "installed plugin: PluginNode{id=${@:2}}" +fi + +if [ -n "${3}" ]; then + echo "custom plugin repo url is: ${3}" > customRepoTest +fi diff --git a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/intellij/default/linux/bin/idea64.vmoptions b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/intellij/default/linux/bin/idea64.vmoptions new file mode 100644 index 0000000000..6f64c59cc6 --- /dev/null +++ b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/intellij/default/linux/bin/idea64.vmoptions @@ -0,0 +1,5 @@ +-Xms128m +-Xmx2048m +-XX:ReservedCodeCacheSize=512m +-ea +-Dsun.io.useCanonCaches=false diff --git a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/intellij/default/linux/build.txt b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/intellij/default/linux/build.txt new file mode 100644 index 0000000000..1c35c30bfc --- /dev/null +++ b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/intellij/default/linux/build.txt @@ -0,0 +1 @@ +IC-241.18034.62 \ No newline at end of file diff --git a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/intellij/default/mac/IntelliJ IDEA CE.app/Contents/MacOS/idea b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/intellij/default/mac/IntelliJ IDEA CE.app/Contents/MacOS/idea new file mode 100644 index 0000000000..cd10cd647e --- /dev/null +++ b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/intellij/default/mac/IntelliJ IDEA CE.app/Contents/MacOS/idea @@ -0,0 +1,12 @@ +#!/bin/bash +cd "$(dirname "$0")" +echo "intellij mac $*" > intellijtest + +if [ "${1}" == "installPlugins" ]; then + echo "installed plugin: PluginNode{id=${@:2}}" +fi + +if [ -n "${3}" ]; then + echo "custom plugin repo url is: ${3}" > customRepoTest +fi + diff --git a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/intellij/default/mac/IntelliJ IDEA CE.app/Contents/Resources/build.txt b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/intellij/default/mac/IntelliJ IDEA CE.app/Contents/Resources/build.txt new file mode 100644 index 0000000000..1c35c30bfc --- /dev/null +++ b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/intellij/default/mac/IntelliJ IDEA CE.app/Contents/Resources/build.txt @@ -0,0 +1 @@ +IC-241.18034.62 \ No newline at end of file diff --git a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/intellij/default/mac/IntelliJ IDEA CE.app/Contents/bin/idea.vmoptions b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/intellij/default/mac/IntelliJ IDEA CE.app/Contents/bin/idea.vmoptions new file mode 100644 index 0000000000..6f64c59cc6 --- /dev/null +++ b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/intellij/default/mac/IntelliJ IDEA CE.app/Contents/bin/idea.vmoptions @@ -0,0 +1,5 @@ +-Xms128m +-Xmx2048m +-XX:ReservedCodeCacheSize=512m +-ea +-Dsun.io.useCanonCaches=false diff --git a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/intellij/default/windows/bin/idea64.exe b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/intellij/default/windows/bin/idea64.exe new file mode 100644 index 0000000000..10e108032b --- /dev/null +++ b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/intellij/default/windows/bin/idea64.exe @@ -0,0 +1,11 @@ +#!/bin/bash +cd "$(dirname "$0")" +echo "intellij windows $*" > intellijtest + +if [ "${1}" == "installPlugins" ]; then + echo "installed plugin: PluginNode{id=${@:2}}" +fi + +if [ -n "${3}" ]; then + echo "custom plugin repo url is: ${3}" > customRepoTest +fi diff --git a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/intellij/default/windows/bin/idea64.exe.vmoptions b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/intellij/default/windows/bin/idea64.exe.vmoptions new file mode 100644 index 0000000000..6f64c59cc6 --- /dev/null +++ b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/intellij/default/windows/bin/idea64.exe.vmoptions @@ -0,0 +1,5 @@ +-Xms128m +-Xmx2048m +-XX:ReservedCodeCacheSize=512m +-ea +-Dsun.io.useCanonCaches=false diff --git a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/intellij/default/windows/build.txt b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/intellij/default/windows/build.txt new file mode 100644 index 0000000000..1c35c30bfc --- /dev/null +++ b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/intellij/default/windows/build.txt @@ -0,0 +1 @@ +IC-241.18034.62 \ No newline at end of file diff --git a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/ultimate/default/windows/bin/idea64.exe b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/ultimate/default/windows/bin/idea64.exe new file mode 100644 index 0000000000..10e108032b --- /dev/null +++ b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/ultimate/default/windows/bin/idea64.exe @@ -0,0 +1,11 @@ +#!/bin/bash +cd "$(dirname "$0")" +echo "intellij windows $*" > intellijtest + +if [ "${1}" == "installPlugins" ]; then + echo "installed plugin: PluginNode{id=${@:2}}" +fi + +if [ -n "${3}" ]; then + echo "custom plugin repo url is: ${3}" > customRepoTest +fi diff --git a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/ultimate/default/windows/build.txt b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/ultimate/default/windows/build.txt new file mode 100644 index 0000000000..1c35c30bfc --- /dev/null +++ b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/ultimate/default/windows/build.txt @@ -0,0 +1 @@ +IC-241.18034.62 \ No newline at end of file diff --git a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/java/java/default/bin/java b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/java/java/default/bin/java new file mode 100644 index 0000000000..0aa8af9dc5 --- /dev/null +++ b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/java/java/default/bin/java @@ -0,0 +1,2 @@ +#!/bin/bash +echo "java $*" \ No newline at end of file diff --git a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/java/java/default/bin/java.cmd b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/java/java/default/bin/java.cmd new file mode 100644 index 0000000000..bbaac38028 --- /dev/null +++ b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/java/java/default/bin/java.cmd @@ -0,0 +1,2 @@ +@echo off +echo java %* \ No newline at end of file diff --git a/cli/src/test/resources/ide-projects/intellij/project/settings/ide-extra-tools.json b/cli/src/test/resources/ide-projects/intellij/project/settings/ide-extra-tools.json new file mode 100644 index 0000000000..e832adb715 --- /dev/null +++ b/cli/src/test/resources/ide-projects/intellij/project/settings/ide-extra-tools.json @@ -0,0 +1,16 @@ +{ + "java": { + "client": { + "version": "11.0.27_6", + "edition": "azul" + }, + "process-engine": { + "version": "21.*" + } + }, + "mvn": { + "m4": { + "version": "4.0.0-rc-5" + } + } +} diff --git a/cli/src/test/resources/ide-projects/intellij/project/workspaces/main/.intellij/config/options/jdk.table.xml b/cli/src/test/resources/ide-projects/intellij/project/workspaces/main/.intellij/config/options/jdk.table.xml new file mode 100644 index 0000000000..05b39dcf09 --- /dev/null +++ b/cli/src/test/resources/ide-projects/intellij/project/workspaces/main/.intellij/config/options/jdk.table.xml @@ -0,0 +1,171 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file From becc527374d0031294543d8a0fd721852081c703 Mon Sep 17 00:00:00 2001 From: vivu001 Date: Wed, 24 Jun 2026 13:32:19 +0200 Subject: [PATCH 03/21] #1676: Added tests for SDKs import --- .../tools/ide/tool/intellij/IntellijTest.java | 119 +++++++++++- .../_ide/urls/intellij/dependencies.json | 8 + .../_ide/urls/intellij/intellij/2023.3.3/urls | 1 + .../_ide/urls/intellij/ultimate/2023.3.3/urls | 1 + .../_ide/urls/java/java/17.0.10_7/urls | 1 + .../project/conf/ide.properties | 2 + .../project/home/.ide/ide.properties | 0 .../.ide/workspace/update/user.properties | 1 + .../project/settings/ide-extra-tools.json | 16 ++ .../project/settings/ide.properties | 2 + .../intellij/plugins/ActivePlugin.properties | 3 + .../plugins/InactivePlugin.properties | 2 + .../intellij/workspace/setup/.gitkeep | 0 .../intellij/workspace/update/.gitkeep | 0 .../intellij/workspace/update/idea.properties | 0 .../repositories/test_gradle.properties | 6 + .../settings/repositories/test_mvn.properties | 5 + .../settings/workspace/update/.editorconfig | 17 ++ .../project/workspaces/main/.gitkeep | 0 .../project/workspaces/main/test_mvn/pom.xml | 6 + .../test/subfolder/test_gradle/build.gradle | 0 .../intellij/default/linux/bin/idea.sh | 13 ++ .../default/linux/bin/idea64.vmoptions | 5 + .../intellij/intellij/default/linux/build.txt | 1 + .../IntelliJ IDEA CE.app/Contents/MacOS/idea | 12 ++ .../Contents/Resources/build.txt | 1 + .../Contents/bin/idea.vmoptions | 5 + .../intellij/default/windows/bin/idea64.exe | 11 ++ .../default/windows/bin/idea64.exe.vmoptions | 5 + .../intellij/default/windows/build.txt | 1 + .../ultimate/default/windows/bin/idea64.exe | 11 ++ .../ultimate/default/windows/build.txt | 1 + .../repository/java/java/default/bin/java | 2 + .../repository/java/java/default/bin/java.cmd | 2 + .../_ide/urls/intellij/dependencies.json | 8 + .../_ide/urls/intellij/intellij/2023.3.3/urls | 1 + .../_ide/urls/intellij/ultimate/2023.3.3/urls | 1 + .../_ide/urls/java/java/17.0.10_7/urls | 1 + .../project/conf/ide.properties | 2 + .../project/home/.ide/ide.properties | 0 .../.ide/workspace/update/user.properties | 1 + .../project/settings/ide-extra-tools.json | 16 ++ .../project/settings/ide.properties | 2 + .../intellij/plugins/ActivePlugin.properties | 3 + .../plugins/InactivePlugin.properties | 2 + .../intellij/workspace/setup/.gitkeep | 0 .../intellij/workspace/update/.gitkeep | 0 .../intellij/workspace/update/idea.properties | 0 .../repositories/test_gradle.properties | 6 + .../settings/repositories/test_mvn.properties | 5 + .../settings/workspace/update/.editorconfig | 17 ++ .../project/workspaces/main/.gitkeep | 0 .../project/workspaces/main/test_mvn/pom.xml | 6 + .../test/subfolder/test_gradle/build.gradle | 0 .../intellij/default/linux/bin/idea.sh | 13 ++ .../default/linux/bin/idea64.vmoptions | 5 + .../intellij/intellij/default/linux/build.txt | 1 + .../IntelliJ IDEA CE.app/Contents/MacOS/idea | 12 ++ .../Contents/Resources/build.txt | 1 + .../Contents/bin/idea.vmoptions | 5 + .../intellij/default/windows/bin/idea64.exe | 11 ++ .../default/windows/bin/idea64.exe.vmoptions | 5 + .../intellij/default/windows/build.txt | 1 + .../ultimate/default/windows/bin/idea64.exe | 11 ++ .../ultimate/default/windows/build.txt | 1 + .../repository/java/java/default/bin/java | 2 + .../repository/java/java/default/bin/java.cmd | 2 + .../project/settings/ide-extra-tools.json | 16 ++ .../.intellij/config/options/jdk.table.xml | 171 ++++++++++++++++++ 69 files changed, 585 insertions(+), 3 deletions(-) create mode 100644 cli/src/test/resources/ide-projects/intellij-extra-java-conflict/_ide/urls/intellij/dependencies.json create mode 100644 cli/src/test/resources/ide-projects/intellij-extra-java-conflict/_ide/urls/intellij/intellij/2023.3.3/urls create mode 100644 cli/src/test/resources/ide-projects/intellij-extra-java-conflict/_ide/urls/intellij/ultimate/2023.3.3/urls create mode 100644 cli/src/test/resources/ide-projects/intellij-extra-java-conflict/_ide/urls/java/java/17.0.10_7/urls create mode 100644 cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/conf/ide.properties create mode 100644 cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/home/.ide/ide.properties create mode 100644 cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/home/.ide/workspace/update/user.properties create mode 100644 cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/settings/ide-extra-tools.json create mode 100644 cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/settings/ide.properties create mode 100644 cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/settings/intellij/plugins/ActivePlugin.properties create mode 100644 cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/settings/intellij/plugins/InactivePlugin.properties create mode 100644 cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/settings/intellij/workspace/setup/.gitkeep create mode 100644 cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/settings/intellij/workspace/update/.gitkeep create mode 100644 cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/settings/intellij/workspace/update/idea.properties create mode 100644 cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/settings/repositories/test_gradle.properties create mode 100644 cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/settings/repositories/test_mvn.properties create mode 100644 cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/settings/workspace/update/.editorconfig create mode 100644 cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/workspaces/main/.gitkeep create mode 100644 cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/workspaces/main/test_mvn/pom.xml create mode 100644 cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/workspaces/test/subfolder/test_gradle/build.gradle create mode 100644 cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/intellij/default/linux/bin/idea.sh create mode 100644 cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/intellij/default/linux/bin/idea64.vmoptions create mode 100644 cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/intellij/default/linux/build.txt create mode 100644 cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/intellij/default/mac/IntelliJ IDEA CE.app/Contents/MacOS/idea create mode 100644 cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/intellij/default/mac/IntelliJ IDEA CE.app/Contents/Resources/build.txt create mode 100644 cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/intellij/default/mac/IntelliJ IDEA CE.app/Contents/bin/idea.vmoptions create mode 100644 cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/intellij/default/windows/bin/idea64.exe create mode 100644 cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/intellij/default/windows/bin/idea64.exe.vmoptions create mode 100644 cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/intellij/default/windows/build.txt create mode 100644 cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/ultimate/default/windows/bin/idea64.exe create mode 100644 cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/ultimate/default/windows/build.txt create mode 100644 cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/java/java/default/bin/java create mode 100644 cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/java/java/default/bin/java.cmd create mode 100644 cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/_ide/urls/intellij/dependencies.json create mode 100644 cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/_ide/urls/intellij/intellij/2023.3.3/urls create mode 100644 cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/_ide/urls/intellij/ultimate/2023.3.3/urls create mode 100644 cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/_ide/urls/java/java/17.0.10_7/urls create mode 100644 cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/conf/ide.properties create mode 100644 cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/home/.ide/ide.properties create mode 100644 cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/home/.ide/workspace/update/user.properties create mode 100644 cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/settings/ide-extra-tools.json create mode 100644 cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/settings/ide.properties create mode 100644 cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/settings/intellij/plugins/ActivePlugin.properties create mode 100644 cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/settings/intellij/plugins/InactivePlugin.properties create mode 100644 cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/settings/intellij/workspace/setup/.gitkeep create mode 100644 cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/settings/intellij/workspace/update/.gitkeep create mode 100644 cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/settings/intellij/workspace/update/idea.properties create mode 100644 cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/settings/repositories/test_gradle.properties create mode 100644 cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/settings/repositories/test_mvn.properties create mode 100644 cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/settings/workspace/update/.editorconfig create mode 100644 cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/workspaces/main/.gitkeep create mode 100644 cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/workspaces/main/test_mvn/pom.xml create mode 100644 cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/workspaces/test/subfolder/test_gradle/build.gradle create mode 100644 cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/intellij/default/linux/bin/idea.sh create mode 100644 cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/intellij/default/linux/bin/idea64.vmoptions create mode 100644 cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/intellij/default/linux/build.txt create mode 100644 cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/intellij/default/mac/IntelliJ IDEA CE.app/Contents/MacOS/idea create mode 100644 cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/intellij/default/mac/IntelliJ IDEA CE.app/Contents/Resources/build.txt create mode 100644 cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/intellij/default/mac/IntelliJ IDEA CE.app/Contents/bin/idea.vmoptions create mode 100644 cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/intellij/default/windows/bin/idea64.exe create mode 100644 cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/intellij/default/windows/bin/idea64.exe.vmoptions create mode 100644 cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/intellij/default/windows/build.txt create mode 100644 cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/ultimate/default/windows/bin/idea64.exe create mode 100644 cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/ultimate/default/windows/build.txt create mode 100644 cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/java/java/default/bin/java create mode 100644 cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/java/java/default/bin/java.cmd create mode 100644 cli/src/test/resources/ide-projects/intellij/project/settings/ide-extra-tools.json create mode 100644 cli/src/test/resources/ide-projects/intellij/project/workspaces/main/.intellij/config/options/jdk.table.xml diff --git a/cli/src/test/java/com/devonfw/tools/ide/tool/intellij/IntellijTest.java b/cli/src/test/java/com/devonfw/tools/ide/tool/intellij/IntellijTest.java index 94a8b30a07..6fc78b6669 100644 --- a/cli/src/test/java/com/devonfw/tools/ide/tool/intellij/IntellijTest.java +++ b/cli/src/test/java/com/devonfw/tools/ide/tool/intellij/IntellijTest.java @@ -1,9 +1,13 @@ package com.devonfw.tools.ide.tool.intellij; +import java.nio.file.Files; +import java.nio.file.Path; + import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.ValueSource; +import com.devonfw.tools.ide.cli.CliException; import com.devonfw.tools.ide.context.AbstractIdeContextTest; import com.devonfw.tools.ide.context.IdeContext; import com.devonfw.tools.ide.context.IdeTestContext; @@ -219,7 +223,7 @@ void testAdjustRequestedEditionSwitchesForUltimateWithoutConfiguredVersion() { /** * Tests whether IDEasy correctly switches editions when the specified version is after 2025.2.6.1 - */ + */ @Test void testAdjustRequestedEditionSwitchesForUltimateWithVersionAboveCutoff() { @@ -254,7 +258,7 @@ void testAdjustRequestedEditionDoesNotSwitchForUltimateAtCutoffVersion() { // assert assertThat(adjusted.getEdition().edition()).isEqualTo("ultimate"); } - + /** * Tests if the custom jvm options of the ide variable INTELLI_VM_ARGS have been set. */ @@ -281,6 +285,116 @@ void testIntellijRunWithCustomJvmOptions(String os) { """); } + /** + * Tests that extra Java SDK installations configured via ide-extra-tools.json are imported into IntelliJ jdk.table.xml when IntelliJ is started through + * IDEasy. + */ + @Test + void testImportExtraJavaSdksIntoJdkTable() throws Exception { + + // arrange + IdeTestContext context = newContext("intellij"); + Intellij commandlet = context.getCommandletManager().getCommandlet(Intellij.class); + + Path extraJavaRoot = context.getSoftwareExtraPath().resolve("java"); + context.getFileAccess().mkdirs(extraJavaRoot.resolve("client")); + context.getFileAccess().mkdirs(extraJavaRoot.resolve("process-engine")); + + // act + commandlet.run(); + + // assert + Path jdkTable = context.getWorkspacePath() + .resolve(".intellij") + .resolve("config") + .resolve("options") + .resolve("jdk.table.xml"); + assertThat(jdkTable).exists(); + + String jdkTableContent = Files.readString(jdkTable); + assertThat(jdkTableContent).contains(""); + assertThat(jdkTableContent).contains(""); + assertThat(jdkTableContent).contains("software/extra/java/client"); + assertThat(jdkTableContent).contains("software/extra/java/process-engine"); + } + + /** + * Tests that an extra Java SDK using the reserved name "java" is skipped instead of being imported. + */ + @Test + void testSkipExtraJavaSdkWithReservedName() throws Exception { + + // arrange + IdeTestContext context = newContext("intellij-extra-java-conflict"); + Intellij commandlet = context.getCommandletManager().getCommandlet(Intellij.class); + + Path extraJavaRoot = context.getSoftwareExtraPath().resolve("java"); + context.getFileAccess().mkdirs(extraJavaRoot.resolve("java")); + + // act + commandlet.run(); + + // assert + Path jdkTable = context.getWorkspacePath() + .resolve(".intellij") + .resolve("config") + .resolve("options") + .resolve("jdk.table.xml"); + assertThat(jdkTable).exists(); + + String jdkTableContent = Files.readString(jdkTable); + assertThat(jdkTableContent).doesNotContain("software/extra/java/java"); + assertThat(context).logAtWarning() + .hasMessageContaining("Skipping IntelliJ import for extra java installation 'java': name conflicts with main java installation."); + } + + /** + * Tests that a configured extra Java SDK is skipped if the corresponding installation directory does not exist. + */ + @Test + void testSkipMissingExtraJavaSdkDirectory() throws Exception { + + // arrange + Intellij commandlet = this.context.getCommandletManager().getCommandlet(Intellij.class); + + // do not create client/process-engine directories on purpose + + // act + commandlet.run(); + + // assert + Path jdkTable = context.getWorkspacePath() + .resolve(".intellij") + .resolve("config") + .resolve("options") + .resolve("jdk.table.xml"); + assertThat(jdkTable).exists(); + + String jdkTableContent = Files.readString(jdkTable); + assertThat(jdkTableContent).doesNotContain("software/extra/java/client"); + assertThat(jdkTableContent).doesNotContain("software/extra/java/process-engine"); + assertThat(context).logAtWarning() + .hasMessageContaining("Skipping IntelliJ import for extra java installation"); + } + + /** Tests that IntelliJ extra Java SDK import fails with a clear error if the merge template is missing from settings. */ + @Test + void testMissingExtraJavaTemplateFails() { + + // arrange + IdeTestContext context = newContext("intellij-missing-extra-java-template"); + Intellij commandlet = context.getCommandletManager().getCommandlet(Intellij.class); + + Path extraJavaRoot = context.getSoftwareExtraPath().resolve("java"); + context.getFileAccess().mkdirs(extraJavaRoot.resolve("client")); + + // act / assert + assertThatThrownBy(commandlet::run) + .isInstanceOf(CliException.class) + .hasMessageContaining("Cannot import extra java installation into IntelliJ: template file not found") + .hasMessageContaining("Please do an upstream merge of your settings git repository."); + } + private void checkInstallation(IdeTestContext context) { Intellij commandlet = context.getCommandletManager().getCommandlet(Intellij.class); @@ -292,5 +406,4 @@ private void checkInstallation(IdeTestContext context) { assertThat(context).logAtDebug().hasMessage("Omitting installation of inactive plugin InactivePlugin (inactivePlugin)."); assertThat(context).logAtSuccess().hasMessage("Successfully ended step 'Install plugin ActivePlugin'."); } - } diff --git a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/_ide/urls/intellij/dependencies.json b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/_ide/urls/intellij/dependencies.json new file mode 100644 index 0000000000..af76b96d74 --- /dev/null +++ b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/_ide/urls/intellij/dependencies.json @@ -0,0 +1,8 @@ +{ + "[2022.2,2024.2)": [ + { + "tool": "java", + "versionRange": "[17,)" + } + ] +} diff --git a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/_ide/urls/intellij/intellij/2023.3.3/urls b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/_ide/urls/intellij/intellij/2023.3.3/urls new file mode 100644 index 0000000000..92fd05749d --- /dev/null +++ b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/_ide/urls/intellij/intellij/2023.3.3/urls @@ -0,0 +1 @@ +${testbaseurl}/download/intellij/intellij/2023.3.3/intellij-2023.3.3.tgz diff --git a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/_ide/urls/intellij/ultimate/2023.3.3/urls b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/_ide/urls/intellij/ultimate/2023.3.3/urls new file mode 100644 index 0000000000..9426426b88 --- /dev/null +++ b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/_ide/urls/intellij/ultimate/2023.3.3/urls @@ -0,0 +1 @@ +${testbaseurl}/download/intellij/ultimate/2023.3.3/intellij-2023.3.3.tgz diff --git a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/_ide/urls/java/java/17.0.10_7/urls b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/_ide/urls/java/java/17.0.10_7/urls new file mode 100644 index 0000000000..62e6853f29 --- /dev/null +++ b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/_ide/urls/java/java/17.0.10_7/urls @@ -0,0 +1 @@ +${testbaseurl}/download/java/java/17.0.10_7/java-17.0.10_7.tgz diff --git a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/conf/ide.properties b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/conf/ide.properties new file mode 100644 index 0000000000..8543c71b51 --- /dev/null +++ b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/conf/ide.properties @@ -0,0 +1,2 @@ +# here the INTELLIJ_PROPERTIES variable should be added by the test +INTELLIJ_VM_ARGS=-Xms256m -Xmx4096m -XX:ReservedCodeCacheSize=256m -Dsun.io.useCanonCaches=true -ea diff --git a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/home/.ide/ide.properties b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/home/.ide/ide.properties new file mode 100644 index 0000000000..e69de29bb2 diff --git a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/home/.ide/workspace/update/user.properties b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/home/.ide/workspace/update/user.properties new file mode 100644 index 0000000000..142b9b8792 --- /dev/null +++ b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/home/.ide/workspace/update/user.properties @@ -0,0 +1 @@ +ijversion=$[INTELLIJ_VERSION] diff --git a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/settings/ide-extra-tools.json b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/settings/ide-extra-tools.json new file mode 100644 index 0000000000..35eae6ed54 --- /dev/null +++ b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/settings/ide-extra-tools.json @@ -0,0 +1,16 @@ +{ + "java": { + "java": { + "version": "11.0.27_6", + "edition": "azul" + }, + "process-engine": { + "version": "21.*" + } + }, + "mvn": { + "m4": { + "version": "4.0.0-rc-5" + } + } +} diff --git a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/settings/ide.properties b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/settings/ide.properties new file mode 100644 index 0000000000..15e3965ed3 --- /dev/null +++ b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/settings/ide.properties @@ -0,0 +1,2 @@ +JAVA_VERSION=17.0.10_7 +INTELLIJ_VERSION=2023.3.3 \ No newline at end of file diff --git a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/settings/intellij/plugins/ActivePlugin.properties b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/settings/intellij/plugins/ActivePlugin.properties new file mode 100644 index 0000000000..985afcee82 --- /dev/null +++ b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/settings/intellij/plugins/ActivePlugin.properties @@ -0,0 +1,3 @@ +plugin_id=activePlugin +plugin_active=true +plugin_url=http://customRepo diff --git a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/settings/intellij/plugins/InactivePlugin.properties b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/settings/intellij/plugins/InactivePlugin.properties new file mode 100644 index 0000000000..89e6d9e4b4 --- /dev/null +++ b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/settings/intellij/plugins/InactivePlugin.properties @@ -0,0 +1,2 @@ +plugin_id=inactivePlugin +plugin_active=false diff --git a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/settings/intellij/workspace/setup/.gitkeep b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/settings/intellij/workspace/setup/.gitkeep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/settings/intellij/workspace/update/.gitkeep b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/settings/intellij/workspace/update/.gitkeep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/settings/intellij/workspace/update/idea.properties b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/settings/intellij/workspace/update/idea.properties new file mode 100644 index 0000000000..e69de29bb2 diff --git a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/settings/repositories/test_gradle.properties b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/settings/repositories/test_gradle.properties new file mode 100644 index 0000000000..92569780cf --- /dev/null +++ b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/settings/repositories/test_gradle.properties @@ -0,0 +1,6 @@ +path=subfolder/test_gradle +git_url=https://github.com/devonfw/IDEasy.git +git_branch=main +workspace=test +import=intellij +active=true diff --git a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/settings/repositories/test_mvn.properties b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/settings/repositories/test_mvn.properties new file mode 100644 index 0000000000..a1ac934c89 --- /dev/null +++ b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/settings/repositories/test_mvn.properties @@ -0,0 +1,5 @@ +path=test_mvn +git_url=https://github.com/devonfw/IDEasy.git +git_branch=main +import=intellij +active=true diff --git a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/settings/workspace/update/.editorconfig b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/settings/workspace/update/.editorconfig new file mode 100644 index 0000000000..acffc7bca6 --- /dev/null +++ b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/settings/workspace/update/.editorconfig @@ -0,0 +1,17 @@ +root = true + +[*] +charset = utf-8 +end_of_line = lf +indent_size = 7 +indent_style = space +insert_final_newline = true +max_line_length = 160 +tab_width = 2 +ij_continuation_indent_size = 4 +ij_formatter_off_tag = @formatter:off +ij_formatter_on_tag = @formatter:on +ij_formatter_tags_enabled = true +ij_smart_tabs = false +ij_visual_guides = +ij_wrap_on_typing = false \ No newline at end of file diff --git a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/workspaces/main/.gitkeep b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/workspaces/main/.gitkeep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/workspaces/main/test_mvn/pom.xml b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/workspaces/main/test_mvn/pom.xml new file mode 100644 index 0000000000..e71f8f1cd8 --- /dev/null +++ b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/workspaces/main/test_mvn/pom.xml @@ -0,0 +1,6 @@ + + + 4.0.0 + ide + diff --git a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/workspaces/test/subfolder/test_gradle/build.gradle b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/workspaces/test/subfolder/test_gradle/build.gradle new file mode 100644 index 0000000000..e69de29bb2 diff --git a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/intellij/default/linux/bin/idea.sh b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/intellij/default/linux/bin/idea.sh new file mode 100644 index 0000000000..23a51da07f --- /dev/null +++ b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/intellij/default/linux/bin/idea.sh @@ -0,0 +1,13 @@ +#!/bin/bash +cd "$(dirname "$0")" +echo $PWD +echo "intellij linux $*" +echo "intellij linux $*" > intellijtest + +if [ "${1}" == "installPlugins" ]; then + echo "installed plugin: PluginNode{id=${@:2}}" +fi + +if [ -n "${3}" ]; then + echo "custom plugin repo url is: ${3}" > customRepoTest +fi diff --git a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/intellij/default/linux/bin/idea64.vmoptions b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/intellij/default/linux/bin/idea64.vmoptions new file mode 100644 index 0000000000..6f64c59cc6 --- /dev/null +++ b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/intellij/default/linux/bin/idea64.vmoptions @@ -0,0 +1,5 @@ +-Xms128m +-Xmx2048m +-XX:ReservedCodeCacheSize=512m +-ea +-Dsun.io.useCanonCaches=false diff --git a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/intellij/default/linux/build.txt b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/intellij/default/linux/build.txt new file mode 100644 index 0000000000..1c35c30bfc --- /dev/null +++ b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/intellij/default/linux/build.txt @@ -0,0 +1 @@ +IC-241.18034.62 \ No newline at end of file diff --git a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/intellij/default/mac/IntelliJ IDEA CE.app/Contents/MacOS/idea b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/intellij/default/mac/IntelliJ IDEA CE.app/Contents/MacOS/idea new file mode 100644 index 0000000000..cd10cd647e --- /dev/null +++ b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/intellij/default/mac/IntelliJ IDEA CE.app/Contents/MacOS/idea @@ -0,0 +1,12 @@ +#!/bin/bash +cd "$(dirname "$0")" +echo "intellij mac $*" > intellijtest + +if [ "${1}" == "installPlugins" ]; then + echo "installed plugin: PluginNode{id=${@:2}}" +fi + +if [ -n "${3}" ]; then + echo "custom plugin repo url is: ${3}" > customRepoTest +fi + diff --git a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/intellij/default/mac/IntelliJ IDEA CE.app/Contents/Resources/build.txt b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/intellij/default/mac/IntelliJ IDEA CE.app/Contents/Resources/build.txt new file mode 100644 index 0000000000..1c35c30bfc --- /dev/null +++ b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/intellij/default/mac/IntelliJ IDEA CE.app/Contents/Resources/build.txt @@ -0,0 +1 @@ +IC-241.18034.62 \ No newline at end of file diff --git a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/intellij/default/mac/IntelliJ IDEA CE.app/Contents/bin/idea.vmoptions b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/intellij/default/mac/IntelliJ IDEA CE.app/Contents/bin/idea.vmoptions new file mode 100644 index 0000000000..6f64c59cc6 --- /dev/null +++ b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/intellij/default/mac/IntelliJ IDEA CE.app/Contents/bin/idea.vmoptions @@ -0,0 +1,5 @@ +-Xms128m +-Xmx2048m +-XX:ReservedCodeCacheSize=512m +-ea +-Dsun.io.useCanonCaches=false diff --git a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/intellij/default/windows/bin/idea64.exe b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/intellij/default/windows/bin/idea64.exe new file mode 100644 index 0000000000..10e108032b --- /dev/null +++ b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/intellij/default/windows/bin/idea64.exe @@ -0,0 +1,11 @@ +#!/bin/bash +cd "$(dirname "$0")" +echo "intellij windows $*" > intellijtest + +if [ "${1}" == "installPlugins" ]; then + echo "installed plugin: PluginNode{id=${@:2}}" +fi + +if [ -n "${3}" ]; then + echo "custom plugin repo url is: ${3}" > customRepoTest +fi diff --git a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/intellij/default/windows/bin/idea64.exe.vmoptions b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/intellij/default/windows/bin/idea64.exe.vmoptions new file mode 100644 index 0000000000..6f64c59cc6 --- /dev/null +++ b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/intellij/default/windows/bin/idea64.exe.vmoptions @@ -0,0 +1,5 @@ +-Xms128m +-Xmx2048m +-XX:ReservedCodeCacheSize=512m +-ea +-Dsun.io.useCanonCaches=false diff --git a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/intellij/default/windows/build.txt b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/intellij/default/windows/build.txt new file mode 100644 index 0000000000..1c35c30bfc --- /dev/null +++ b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/intellij/default/windows/build.txt @@ -0,0 +1 @@ +IC-241.18034.62 \ No newline at end of file diff --git a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/ultimate/default/windows/bin/idea64.exe b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/ultimate/default/windows/bin/idea64.exe new file mode 100644 index 0000000000..10e108032b --- /dev/null +++ b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/ultimate/default/windows/bin/idea64.exe @@ -0,0 +1,11 @@ +#!/bin/bash +cd "$(dirname "$0")" +echo "intellij windows $*" > intellijtest + +if [ "${1}" == "installPlugins" ]; then + echo "installed plugin: PluginNode{id=${@:2}}" +fi + +if [ -n "${3}" ]; then + echo "custom plugin repo url is: ${3}" > customRepoTest +fi diff --git a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/ultimate/default/windows/build.txt b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/ultimate/default/windows/build.txt new file mode 100644 index 0000000000..1c35c30bfc --- /dev/null +++ b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/ultimate/default/windows/build.txt @@ -0,0 +1 @@ +IC-241.18034.62 \ No newline at end of file diff --git a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/java/java/default/bin/java b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/java/java/default/bin/java new file mode 100644 index 0000000000..0aa8af9dc5 --- /dev/null +++ b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/java/java/default/bin/java @@ -0,0 +1,2 @@ +#!/bin/bash +echo "java $*" \ No newline at end of file diff --git a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/java/java/default/bin/java.cmd b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/java/java/default/bin/java.cmd new file mode 100644 index 0000000000..bbaac38028 --- /dev/null +++ b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/java/java/default/bin/java.cmd @@ -0,0 +1,2 @@ +@echo off +echo java %* \ No newline at end of file diff --git a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/_ide/urls/intellij/dependencies.json b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/_ide/urls/intellij/dependencies.json new file mode 100644 index 0000000000..af76b96d74 --- /dev/null +++ b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/_ide/urls/intellij/dependencies.json @@ -0,0 +1,8 @@ +{ + "[2022.2,2024.2)": [ + { + "tool": "java", + "versionRange": "[17,)" + } + ] +} diff --git a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/_ide/urls/intellij/intellij/2023.3.3/urls b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/_ide/urls/intellij/intellij/2023.3.3/urls new file mode 100644 index 0000000000..92fd05749d --- /dev/null +++ b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/_ide/urls/intellij/intellij/2023.3.3/urls @@ -0,0 +1 @@ +${testbaseurl}/download/intellij/intellij/2023.3.3/intellij-2023.3.3.tgz diff --git a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/_ide/urls/intellij/ultimate/2023.3.3/urls b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/_ide/urls/intellij/ultimate/2023.3.3/urls new file mode 100644 index 0000000000..9426426b88 --- /dev/null +++ b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/_ide/urls/intellij/ultimate/2023.3.3/urls @@ -0,0 +1 @@ +${testbaseurl}/download/intellij/ultimate/2023.3.3/intellij-2023.3.3.tgz diff --git a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/_ide/urls/java/java/17.0.10_7/urls b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/_ide/urls/java/java/17.0.10_7/urls new file mode 100644 index 0000000000..62e6853f29 --- /dev/null +++ b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/_ide/urls/java/java/17.0.10_7/urls @@ -0,0 +1 @@ +${testbaseurl}/download/java/java/17.0.10_7/java-17.0.10_7.tgz diff --git a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/conf/ide.properties b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/conf/ide.properties new file mode 100644 index 0000000000..8543c71b51 --- /dev/null +++ b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/conf/ide.properties @@ -0,0 +1,2 @@ +# here the INTELLIJ_PROPERTIES variable should be added by the test +INTELLIJ_VM_ARGS=-Xms256m -Xmx4096m -XX:ReservedCodeCacheSize=256m -Dsun.io.useCanonCaches=true -ea diff --git a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/home/.ide/ide.properties b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/home/.ide/ide.properties new file mode 100644 index 0000000000..e69de29bb2 diff --git a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/home/.ide/workspace/update/user.properties b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/home/.ide/workspace/update/user.properties new file mode 100644 index 0000000000..142b9b8792 --- /dev/null +++ b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/home/.ide/workspace/update/user.properties @@ -0,0 +1 @@ +ijversion=$[INTELLIJ_VERSION] diff --git a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/settings/ide-extra-tools.json b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/settings/ide-extra-tools.json new file mode 100644 index 0000000000..e832adb715 --- /dev/null +++ b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/settings/ide-extra-tools.json @@ -0,0 +1,16 @@ +{ + "java": { + "client": { + "version": "11.0.27_6", + "edition": "azul" + }, + "process-engine": { + "version": "21.*" + } + }, + "mvn": { + "m4": { + "version": "4.0.0-rc-5" + } + } +} diff --git a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/settings/ide.properties b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/settings/ide.properties new file mode 100644 index 0000000000..15e3965ed3 --- /dev/null +++ b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/settings/ide.properties @@ -0,0 +1,2 @@ +JAVA_VERSION=17.0.10_7 +INTELLIJ_VERSION=2023.3.3 \ No newline at end of file diff --git a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/settings/intellij/plugins/ActivePlugin.properties b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/settings/intellij/plugins/ActivePlugin.properties new file mode 100644 index 0000000000..985afcee82 --- /dev/null +++ b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/settings/intellij/plugins/ActivePlugin.properties @@ -0,0 +1,3 @@ +plugin_id=activePlugin +plugin_active=true +plugin_url=http://customRepo diff --git a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/settings/intellij/plugins/InactivePlugin.properties b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/settings/intellij/plugins/InactivePlugin.properties new file mode 100644 index 0000000000..89e6d9e4b4 --- /dev/null +++ b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/settings/intellij/plugins/InactivePlugin.properties @@ -0,0 +1,2 @@ +plugin_id=inactivePlugin +plugin_active=false diff --git a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/settings/intellij/workspace/setup/.gitkeep b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/settings/intellij/workspace/setup/.gitkeep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/settings/intellij/workspace/update/.gitkeep b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/settings/intellij/workspace/update/.gitkeep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/settings/intellij/workspace/update/idea.properties b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/settings/intellij/workspace/update/idea.properties new file mode 100644 index 0000000000..e69de29bb2 diff --git a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/settings/repositories/test_gradle.properties b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/settings/repositories/test_gradle.properties new file mode 100644 index 0000000000..92569780cf --- /dev/null +++ b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/settings/repositories/test_gradle.properties @@ -0,0 +1,6 @@ +path=subfolder/test_gradle +git_url=https://github.com/devonfw/IDEasy.git +git_branch=main +workspace=test +import=intellij +active=true diff --git a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/settings/repositories/test_mvn.properties b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/settings/repositories/test_mvn.properties new file mode 100644 index 0000000000..a1ac934c89 --- /dev/null +++ b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/settings/repositories/test_mvn.properties @@ -0,0 +1,5 @@ +path=test_mvn +git_url=https://github.com/devonfw/IDEasy.git +git_branch=main +import=intellij +active=true diff --git a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/settings/workspace/update/.editorconfig b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/settings/workspace/update/.editorconfig new file mode 100644 index 0000000000..acffc7bca6 --- /dev/null +++ b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/settings/workspace/update/.editorconfig @@ -0,0 +1,17 @@ +root = true + +[*] +charset = utf-8 +end_of_line = lf +indent_size = 7 +indent_style = space +insert_final_newline = true +max_line_length = 160 +tab_width = 2 +ij_continuation_indent_size = 4 +ij_formatter_off_tag = @formatter:off +ij_formatter_on_tag = @formatter:on +ij_formatter_tags_enabled = true +ij_smart_tabs = false +ij_visual_guides = +ij_wrap_on_typing = false \ No newline at end of file diff --git a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/workspaces/main/.gitkeep b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/workspaces/main/.gitkeep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/workspaces/main/test_mvn/pom.xml b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/workspaces/main/test_mvn/pom.xml new file mode 100644 index 0000000000..e71f8f1cd8 --- /dev/null +++ b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/workspaces/main/test_mvn/pom.xml @@ -0,0 +1,6 @@ + + + 4.0.0 + ide + diff --git a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/workspaces/test/subfolder/test_gradle/build.gradle b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/workspaces/test/subfolder/test_gradle/build.gradle new file mode 100644 index 0000000000..e69de29bb2 diff --git a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/intellij/default/linux/bin/idea.sh b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/intellij/default/linux/bin/idea.sh new file mode 100644 index 0000000000..23a51da07f --- /dev/null +++ b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/intellij/default/linux/bin/idea.sh @@ -0,0 +1,13 @@ +#!/bin/bash +cd "$(dirname "$0")" +echo $PWD +echo "intellij linux $*" +echo "intellij linux $*" > intellijtest + +if [ "${1}" == "installPlugins" ]; then + echo "installed plugin: PluginNode{id=${@:2}}" +fi + +if [ -n "${3}" ]; then + echo "custom plugin repo url is: ${3}" > customRepoTest +fi diff --git a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/intellij/default/linux/bin/idea64.vmoptions b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/intellij/default/linux/bin/idea64.vmoptions new file mode 100644 index 0000000000..6f64c59cc6 --- /dev/null +++ b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/intellij/default/linux/bin/idea64.vmoptions @@ -0,0 +1,5 @@ +-Xms128m +-Xmx2048m +-XX:ReservedCodeCacheSize=512m +-ea +-Dsun.io.useCanonCaches=false diff --git a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/intellij/default/linux/build.txt b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/intellij/default/linux/build.txt new file mode 100644 index 0000000000..1c35c30bfc --- /dev/null +++ b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/intellij/default/linux/build.txt @@ -0,0 +1 @@ +IC-241.18034.62 \ No newline at end of file diff --git a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/intellij/default/mac/IntelliJ IDEA CE.app/Contents/MacOS/idea b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/intellij/default/mac/IntelliJ IDEA CE.app/Contents/MacOS/idea new file mode 100644 index 0000000000..cd10cd647e --- /dev/null +++ b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/intellij/default/mac/IntelliJ IDEA CE.app/Contents/MacOS/idea @@ -0,0 +1,12 @@ +#!/bin/bash +cd "$(dirname "$0")" +echo "intellij mac $*" > intellijtest + +if [ "${1}" == "installPlugins" ]; then + echo "installed plugin: PluginNode{id=${@:2}}" +fi + +if [ -n "${3}" ]; then + echo "custom plugin repo url is: ${3}" > customRepoTest +fi + diff --git a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/intellij/default/mac/IntelliJ IDEA CE.app/Contents/Resources/build.txt b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/intellij/default/mac/IntelliJ IDEA CE.app/Contents/Resources/build.txt new file mode 100644 index 0000000000..1c35c30bfc --- /dev/null +++ b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/intellij/default/mac/IntelliJ IDEA CE.app/Contents/Resources/build.txt @@ -0,0 +1 @@ +IC-241.18034.62 \ No newline at end of file diff --git a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/intellij/default/mac/IntelliJ IDEA CE.app/Contents/bin/idea.vmoptions b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/intellij/default/mac/IntelliJ IDEA CE.app/Contents/bin/idea.vmoptions new file mode 100644 index 0000000000..6f64c59cc6 --- /dev/null +++ b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/intellij/default/mac/IntelliJ IDEA CE.app/Contents/bin/idea.vmoptions @@ -0,0 +1,5 @@ +-Xms128m +-Xmx2048m +-XX:ReservedCodeCacheSize=512m +-ea +-Dsun.io.useCanonCaches=false diff --git a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/intellij/default/windows/bin/idea64.exe b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/intellij/default/windows/bin/idea64.exe new file mode 100644 index 0000000000..10e108032b --- /dev/null +++ b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/intellij/default/windows/bin/idea64.exe @@ -0,0 +1,11 @@ +#!/bin/bash +cd "$(dirname "$0")" +echo "intellij windows $*" > intellijtest + +if [ "${1}" == "installPlugins" ]; then + echo "installed plugin: PluginNode{id=${@:2}}" +fi + +if [ -n "${3}" ]; then + echo "custom plugin repo url is: ${3}" > customRepoTest +fi diff --git a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/intellij/default/windows/bin/idea64.exe.vmoptions b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/intellij/default/windows/bin/idea64.exe.vmoptions new file mode 100644 index 0000000000..6f64c59cc6 --- /dev/null +++ b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/intellij/default/windows/bin/idea64.exe.vmoptions @@ -0,0 +1,5 @@ +-Xms128m +-Xmx2048m +-XX:ReservedCodeCacheSize=512m +-ea +-Dsun.io.useCanonCaches=false diff --git a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/intellij/default/windows/build.txt b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/intellij/default/windows/build.txt new file mode 100644 index 0000000000..1c35c30bfc --- /dev/null +++ b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/intellij/default/windows/build.txt @@ -0,0 +1 @@ +IC-241.18034.62 \ No newline at end of file diff --git a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/ultimate/default/windows/bin/idea64.exe b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/ultimate/default/windows/bin/idea64.exe new file mode 100644 index 0000000000..10e108032b --- /dev/null +++ b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/ultimate/default/windows/bin/idea64.exe @@ -0,0 +1,11 @@ +#!/bin/bash +cd "$(dirname "$0")" +echo "intellij windows $*" > intellijtest + +if [ "${1}" == "installPlugins" ]; then + echo "installed plugin: PluginNode{id=${@:2}}" +fi + +if [ -n "${3}" ]; then + echo "custom plugin repo url is: ${3}" > customRepoTest +fi diff --git a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/ultimate/default/windows/build.txt b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/ultimate/default/windows/build.txt new file mode 100644 index 0000000000..1c35c30bfc --- /dev/null +++ b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/ultimate/default/windows/build.txt @@ -0,0 +1 @@ +IC-241.18034.62 \ No newline at end of file diff --git a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/java/java/default/bin/java b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/java/java/default/bin/java new file mode 100644 index 0000000000..0aa8af9dc5 --- /dev/null +++ b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/java/java/default/bin/java @@ -0,0 +1,2 @@ +#!/bin/bash +echo "java $*" \ No newline at end of file diff --git a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/java/java/default/bin/java.cmd b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/java/java/default/bin/java.cmd new file mode 100644 index 0000000000..bbaac38028 --- /dev/null +++ b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/java/java/default/bin/java.cmd @@ -0,0 +1,2 @@ +@echo off +echo java %* \ No newline at end of file diff --git a/cli/src/test/resources/ide-projects/intellij/project/settings/ide-extra-tools.json b/cli/src/test/resources/ide-projects/intellij/project/settings/ide-extra-tools.json new file mode 100644 index 0000000000..e832adb715 --- /dev/null +++ b/cli/src/test/resources/ide-projects/intellij/project/settings/ide-extra-tools.json @@ -0,0 +1,16 @@ +{ + "java": { + "client": { + "version": "11.0.27_6", + "edition": "azul" + }, + "process-engine": { + "version": "21.*" + } + }, + "mvn": { + "m4": { + "version": "4.0.0-rc-5" + } + } +} diff --git a/cli/src/test/resources/ide-projects/intellij/project/workspaces/main/.intellij/config/options/jdk.table.xml b/cli/src/test/resources/ide-projects/intellij/project/workspaces/main/.intellij/config/options/jdk.table.xml new file mode 100644 index 0000000000..05b39dcf09 --- /dev/null +++ b/cli/src/test/resources/ide-projects/intellij/project/workspaces/main/.intellij/config/options/jdk.table.xml @@ -0,0 +1,171 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file From 8f7769dd3a43fa6e0d17714eeafe10c5d5b16c7d Mon Sep 17 00:00:00 2001 From: vivu001 Date: Thu, 25 Jun 2026 11:55:54 +0200 Subject: [PATCH 04/21] #1676: Fixed IntelliJ not auto-recognizing newly installed extra SDKs --- .../commandlet/AbstractUpdateCommandlet.java | 25 +++++++++++++++++++ .../tools/ide/tool/ide/IdeToolCommandlet.java | 14 +++++++++++ .../tools/ide/tool/intellij/Intellij.java | 7 +++++- 3 files changed, 45 insertions(+), 1 deletion(-) diff --git a/cli/src/main/java/com/devonfw/tools/ide/commandlet/AbstractUpdateCommandlet.java b/cli/src/main/java/com/devonfw/tools/ide/commandlet/AbstractUpdateCommandlet.java index b4a4a2ed4d..4f3c3929e8 100644 --- a/cli/src/main/java/com/devonfw/tools/ide/commandlet/AbstractUpdateCommandlet.java +++ b/cli/src/main/java/com/devonfw/tools/ide/commandlet/AbstractUpdateCommandlet.java @@ -33,6 +33,7 @@ import com.devonfw.tools.ide.tool.extra.ExtraToolInstallation; import com.devonfw.tools.ide.tool.extra.ExtraTools; import com.devonfw.tools.ide.tool.extra.ExtraToolsMapper; +import com.devonfw.tools.ide.tool.intellij.Intellij; import com.devonfw.tools.ide.variable.IdeVariables; import com.devonfw.tools.ide.version.VersionIdentifier; @@ -349,6 +350,8 @@ private void doUpdateSoftwareStep(Step step) { this.context.newStep("Install extra version(s) of " + tool).run(() -> installExtraToolInstallations(tool, installations)); } } + + synchronizeIdeExtraToolInstallations(extraTools); } private void installExtraToolInstallations(String tool, List extraInstallations) { @@ -373,6 +376,28 @@ private void installExtraToolInstallations(String tool, List intellij.synchronizeExtraToolInstallations(workspacePath)); + } + + // later: + // Eclipse eclipse = ... + // VsCode vscode = ... + } + private void updateRepositories() { if (this.skipRepositories.isTrue()) { diff --git a/cli/src/main/java/com/devonfw/tools/ide/tool/ide/IdeToolCommandlet.java b/cli/src/main/java/com/devonfw/tools/ide/tool/ide/IdeToolCommandlet.java index 6f0256c581..141faadc58 100644 --- a/cli/src/main/java/com/devonfw/tools/ide/tool/ide/IdeToolCommandlet.java +++ b/cli/src/main/java/com/devonfw/tools/ide/tool/ide/IdeToolCommandlet.java @@ -131,4 +131,18 @@ public void importRepository(Path repositoryPath) { throw new UnsupportedOperationException("Repository import is not yet implemented for IDE " + this.tool); } + + /** + * Synchronizes extra IDEasy tool installations into the IDE workspace configuration if supported. + * + *

+ * The default implementation does nothing. IDEs such as IntelliJ may override this hook to import extra SDK/tool installations configured via + * {@code settings/ide-extra-tools.json}. + *

+ * + * @param workspacePath the workspace root whose IDE configuration should be synchronized. + */ + public void synchronizeExtraToolInstallations(Path workspacePath) { + // default no-op + } } diff --git a/cli/src/main/java/com/devonfw/tools/ide/tool/intellij/Intellij.java b/cli/src/main/java/com/devonfw/tools/ide/tool/intellij/Intellij.java index 2a7f8f4636..8453df8f30 100644 --- a/cli/src/main/java/com/devonfw/tools/ide/tool/intellij/Intellij.java +++ b/cli/src/main/java/com/devonfw/tools/ide/tool/intellij/Intellij.java @@ -120,7 +120,7 @@ public void setEnvironment(EnvironmentContext environmentContext, ToolInstallati Path workspacePath = this.context.getWorkspacePath(); // Synchronize extra SDK/tool definitions before IntelliJ starts so newly installed extra tool versions // become visible in the IDE without requiring a separate repository import step. - importExtraToolInstallationsToWorkspace(workspacePath); + synchronizeExtraToolInstallations(workspacePath); environmentContext.withEnvVar("IDEA_PROPERTIES", workspacePath.resolve(IDEA_PROPERTIES).toString()); } @@ -217,6 +217,11 @@ public void importRepository(Path repositoryPath) { importExtraToolInstallations(repositoryPath); } + @Override + public void synchronizeExtraToolInstallations(Path workspacePath) { + importExtraToolInstallationsToWorkspace(workspacePath); + } + /** * Imports configured extra tool installations into IntelliJ for the repository contained in the given workspace. * From 98a77be328ae2c9de36a5b7432ee3c68b189fe18 Mon Sep 17 00:00:00 2001 From: vivu001 Date: Thu, 25 Jun 2026 11:57:43 +0200 Subject: [PATCH 05/21] #1676: Fixed errored test --- .../repository/.idea/jdk-extra-java.xml | 32 ++++ .../workspace/repository/.idea/gradle.xml | 11 ++ .../repository/.idea/jdk-extra-java.xml | 32 ++++ .../workspace/repository/.idea/misc.xml | 9 + .../intellij/workspace/setup/.gitkeep | 0 .../intellij/workspace/update/.gitkeep | 0 .../intellij/workspace/update/idea.properties | 0 .../.intellij/config/options/jdk.table.xml | 171 ++++++++++++++++++ .../project/workspaces/main/test_mvn/pom.xml | 6 + 9 files changed, 261 insertions(+) create mode 100644 cli/src/test/resources/ide-projects/intellij/project/settings/intellij/workspace/repository/.idea/jdk-extra-java.xml create mode 100644 cli/src/test/resources/ide-projects/update/project/settings/intellij/workspace/repository/.idea/gradle.xml create mode 100644 cli/src/test/resources/ide-projects/update/project/settings/intellij/workspace/repository/.idea/jdk-extra-java.xml create mode 100644 cli/src/test/resources/ide-projects/update/project/settings/intellij/workspace/repository/.idea/misc.xml create mode 100644 cli/src/test/resources/ide-projects/update/project/settings/intellij/workspace/setup/.gitkeep create mode 100644 cli/src/test/resources/ide-projects/update/project/settings/intellij/workspace/update/.gitkeep create mode 100644 cli/src/test/resources/ide-projects/update/project/settings/intellij/workspace/update/idea.properties create mode 100644 cli/src/test/resources/ide-projects/update/project/workspaces/main/.intellij/config/options/jdk.table.xml create mode 100644 cli/src/test/resources/ide-projects/update/project/workspaces/main/test_mvn/pom.xml diff --git a/cli/src/test/resources/ide-projects/intellij/project/settings/intellij/workspace/repository/.idea/jdk-extra-java.xml b/cli/src/test/resources/ide-projects/intellij/project/settings/intellij/workspace/repository/.idea/jdk-extra-java.xml new file mode 100644 index 0000000000..f65a24bbe0 --- /dev/null +++ b/cli/src/test/resources/ide-projects/intellij/project/settings/intellij/workspace/repository/.idea/jdk-extra-java.xml @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/cli/src/test/resources/ide-projects/update/project/settings/intellij/workspace/repository/.idea/gradle.xml b/cli/src/test/resources/ide-projects/update/project/settings/intellij/workspace/repository/.idea/gradle.xml new file mode 100644 index 0000000000..8de20d4549 --- /dev/null +++ b/cli/src/test/resources/ide-projects/update/project/settings/intellij/workspace/repository/.idea/gradle.xml @@ -0,0 +1,11 @@ + + + + + + + diff --git a/cli/src/test/resources/ide-projects/update/project/settings/intellij/workspace/repository/.idea/jdk-extra-java.xml b/cli/src/test/resources/ide-projects/update/project/settings/intellij/workspace/repository/.idea/jdk-extra-java.xml new file mode 100644 index 0000000000..f65a24bbe0 --- /dev/null +++ b/cli/src/test/resources/ide-projects/update/project/settings/intellij/workspace/repository/.idea/jdk-extra-java.xml @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/cli/src/test/resources/ide-projects/update/project/settings/intellij/workspace/repository/.idea/misc.xml b/cli/src/test/resources/ide-projects/update/project/settings/intellij/workspace/repository/.idea/misc.xml new file mode 100644 index 0000000000..7516c8018c --- /dev/null +++ b/cli/src/test/resources/ide-projects/update/project/settings/intellij/workspace/repository/.idea/misc.xml @@ -0,0 +1,9 @@ + + + + + diff --git a/cli/src/test/resources/ide-projects/update/project/settings/intellij/workspace/setup/.gitkeep b/cli/src/test/resources/ide-projects/update/project/settings/intellij/workspace/setup/.gitkeep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/cli/src/test/resources/ide-projects/update/project/settings/intellij/workspace/update/.gitkeep b/cli/src/test/resources/ide-projects/update/project/settings/intellij/workspace/update/.gitkeep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/cli/src/test/resources/ide-projects/update/project/settings/intellij/workspace/update/idea.properties b/cli/src/test/resources/ide-projects/update/project/settings/intellij/workspace/update/idea.properties new file mode 100644 index 0000000000..e69de29bb2 diff --git a/cli/src/test/resources/ide-projects/update/project/workspaces/main/.intellij/config/options/jdk.table.xml b/cli/src/test/resources/ide-projects/update/project/workspaces/main/.intellij/config/options/jdk.table.xml new file mode 100644 index 0000000000..05b39dcf09 --- /dev/null +++ b/cli/src/test/resources/ide-projects/update/project/workspaces/main/.intellij/config/options/jdk.table.xml @@ -0,0 +1,171 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/cli/src/test/resources/ide-projects/update/project/workspaces/main/test_mvn/pom.xml b/cli/src/test/resources/ide-projects/update/project/workspaces/main/test_mvn/pom.xml new file mode 100644 index 0000000000..e71f8f1cd8 --- /dev/null +++ b/cli/src/test/resources/ide-projects/update/project/workspaces/main/test_mvn/pom.xml @@ -0,0 +1,6 @@ + + + 4.0.0 + ide + From df62d45696d594457105553cfdd4d7e4e66d0eaa Mon Sep 17 00:00:00 2001 From: vivu001 Date: Thu, 25 Jun 2026 16:50:05 +0200 Subject: [PATCH 06/21] #1676: Fixed error "Arguments already present" --- .../java/com/devonfw/tools/ide/tool/intellij/IntellijTest.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/cli/src/test/java/com/devonfw/tools/ide/tool/intellij/IntellijTest.java b/cli/src/test/java/com/devonfw/tools/ide/tool/intellij/IntellijTest.java index 6fc78b6669..d87366a113 100644 --- a/cli/src/test/java/com/devonfw/tools/ide/tool/intellij/IntellijTest.java +++ b/cli/src/test/java/com/devonfw/tools/ide/tool/intellij/IntellijTest.java @@ -355,7 +355,8 @@ void testSkipExtraJavaSdkWithReservedName() throws Exception { void testSkipMissingExtraJavaSdkDirectory() throws Exception { // arrange - Intellij commandlet = this.context.getCommandletManager().getCommandlet(Intellij.class); + IdeTestContext context = newContext("intellij"); + Intellij commandlet = context.getCommandletManager().getCommandlet(Intellij.class); // do not create client/process-engine directories on purpose From 0a5b9faeb88b7c942d22158014179c31056fab74 Mon Sep 17 00:00:00 2001 From: vivu001 Date: Thu, 25 Jun 2026 16:50:05 +0200 Subject: [PATCH 07/21] #1676: Fixed error "Arguments already present" --- .../tools/ide/tool/intellij/IntellijTest.java | 24 +++++++++++++++++-- .../_ide/urls/intellij/dependencies.json | 8 ------- .../_ide/urls/intellij/intellij/2023.3.3/urls | 1 - .../_ide/urls/intellij/ultimate/2023.3.3/urls | 1 - .../_ide/urls/java/java/17.0.10_7/urls | 1 - .../project/conf/ide.properties | 2 -- .../project/home/.ide/ide.properties | 0 .../.ide/workspace/update/user.properties | 1 - .../project/settings/ide-extra-tools.json | 16 ------------- .../project/settings/ide.properties | 2 -- .../intellij/plugins/ActivePlugin.properties | 3 --- .../plugins/InactivePlugin.properties | 2 -- .../intellij/workspace/setup/.gitkeep | 0 .../intellij/workspace/update/.gitkeep | 0 .../intellij/workspace/update/idea.properties | 0 .../repositories/test_gradle.properties | 6 ----- .../settings/repositories/test_mvn.properties | 5 ---- .../settings/workspace/update/.editorconfig | 17 ------------- .../project/workspaces/main/.gitkeep | 0 .../project/workspaces/main/test_mvn/pom.xml | 6 ----- .../test/subfolder/test_gradle/build.gradle | 0 .../intellij/default/linux/bin/idea.sh | 13 ---------- .../default/linux/bin/idea64.vmoptions | 5 ---- .../intellij/intellij/default/linux/build.txt | 1 - .../IntelliJ IDEA CE.app/Contents/MacOS/idea | 12 ---------- .../Contents/Resources/build.txt | 1 - .../Contents/bin/idea.vmoptions | 5 ---- .../intellij/default/windows/bin/idea64.exe | 11 --------- .../default/windows/bin/idea64.exe.vmoptions | 5 ---- .../intellij/default/windows/build.txt | 1 - .../ultimate/default/windows/bin/idea64.exe | 11 --------- .../ultimate/default/windows/build.txt | 1 - .../repository/java/java/default/bin/java | 2 -- .../repository/java/java/default/bin/java.cmd | 2 -- .../_ide/urls/intellij/dependencies.json | 8 ------- .../_ide/urls/intellij/intellij/2023.3.3/urls | 1 - .../_ide/urls/intellij/ultimate/2023.3.3/urls | 1 - .../_ide/urls/java/java/17.0.10_7/urls | 1 - .../project/conf/ide.properties | 2 -- .../project/home/.ide/ide.properties | 0 .../.ide/workspace/update/user.properties | 1 - .../project/settings/ide-extra-tools.json | 16 ------------- .../project/settings/ide.properties | 2 -- .../intellij/plugins/ActivePlugin.properties | 3 --- .../plugins/InactivePlugin.properties | 2 -- .../intellij/workspace/setup/.gitkeep | 0 .../intellij/workspace/update/.gitkeep | 0 .../intellij/workspace/update/idea.properties | 0 .../repositories/test_gradle.properties | 6 ----- .../settings/repositories/test_mvn.properties | 5 ---- .../settings/workspace/update/.editorconfig | 17 ------------- .../project/workspaces/main/.gitkeep | 0 .../project/workspaces/main/test_mvn/pom.xml | 6 ----- .../test/subfolder/test_gradle/build.gradle | 0 .../intellij/default/linux/bin/idea.sh | 13 ---------- .../default/linux/bin/idea64.vmoptions | 5 ---- .../intellij/intellij/default/linux/build.txt | 1 - .../IntelliJ IDEA CE.app/Contents/MacOS/idea | 12 ---------- .../Contents/Resources/build.txt | 1 - .../Contents/bin/idea.vmoptions | 5 ---- .../intellij/default/windows/bin/idea64.exe | 11 --------- .../default/windows/bin/idea64.exe.vmoptions | 5 ---- .../intellij/default/windows/build.txt | 1 - .../ultimate/default/windows/bin/idea64.exe | 11 --------- .../ultimate/default/windows/build.txt | 1 - .../repository/java/java/default/bin/java | 2 -- .../repository/java/java/default/bin/java.cmd | 2 -- 67 files changed, 22 insertions(+), 284 deletions(-) delete mode 100644 cli/src/test/resources/ide-projects/intellij-extra-java-conflict/_ide/urls/intellij/dependencies.json delete mode 100644 cli/src/test/resources/ide-projects/intellij-extra-java-conflict/_ide/urls/intellij/intellij/2023.3.3/urls delete mode 100644 cli/src/test/resources/ide-projects/intellij-extra-java-conflict/_ide/urls/intellij/ultimate/2023.3.3/urls delete mode 100644 cli/src/test/resources/ide-projects/intellij-extra-java-conflict/_ide/urls/java/java/17.0.10_7/urls delete mode 100644 cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/conf/ide.properties delete mode 100644 cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/home/.ide/ide.properties delete mode 100644 cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/home/.ide/workspace/update/user.properties delete mode 100644 cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/settings/ide-extra-tools.json delete mode 100644 cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/settings/ide.properties delete mode 100644 cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/settings/intellij/plugins/ActivePlugin.properties delete mode 100644 cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/settings/intellij/plugins/InactivePlugin.properties delete mode 100644 cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/settings/intellij/workspace/setup/.gitkeep delete mode 100644 cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/settings/intellij/workspace/update/.gitkeep delete mode 100644 cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/settings/intellij/workspace/update/idea.properties delete mode 100644 cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/settings/repositories/test_gradle.properties delete mode 100644 cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/settings/repositories/test_mvn.properties delete mode 100644 cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/settings/workspace/update/.editorconfig delete mode 100644 cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/workspaces/main/.gitkeep delete mode 100644 cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/workspaces/main/test_mvn/pom.xml delete mode 100644 cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/workspaces/test/subfolder/test_gradle/build.gradle delete mode 100644 cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/intellij/default/linux/bin/idea.sh delete mode 100644 cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/intellij/default/linux/bin/idea64.vmoptions delete mode 100644 cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/intellij/default/linux/build.txt delete mode 100644 cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/intellij/default/mac/IntelliJ IDEA CE.app/Contents/MacOS/idea delete mode 100644 cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/intellij/default/mac/IntelliJ IDEA CE.app/Contents/Resources/build.txt delete mode 100644 cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/intellij/default/mac/IntelliJ IDEA CE.app/Contents/bin/idea.vmoptions delete mode 100644 cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/intellij/default/windows/bin/idea64.exe delete mode 100644 cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/intellij/default/windows/bin/idea64.exe.vmoptions delete mode 100644 cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/intellij/default/windows/build.txt delete mode 100644 cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/ultimate/default/windows/bin/idea64.exe delete mode 100644 cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/ultimate/default/windows/build.txt delete mode 100644 cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/java/java/default/bin/java delete mode 100644 cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/java/java/default/bin/java.cmd delete mode 100644 cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/_ide/urls/intellij/dependencies.json delete mode 100644 cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/_ide/urls/intellij/intellij/2023.3.3/urls delete mode 100644 cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/_ide/urls/intellij/ultimate/2023.3.3/urls delete mode 100644 cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/_ide/urls/java/java/17.0.10_7/urls delete mode 100644 cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/conf/ide.properties delete mode 100644 cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/home/.ide/ide.properties delete mode 100644 cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/home/.ide/workspace/update/user.properties delete mode 100644 cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/settings/ide-extra-tools.json delete mode 100644 cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/settings/ide.properties delete mode 100644 cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/settings/intellij/plugins/ActivePlugin.properties delete mode 100644 cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/settings/intellij/plugins/InactivePlugin.properties delete mode 100644 cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/settings/intellij/workspace/setup/.gitkeep delete mode 100644 cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/settings/intellij/workspace/update/.gitkeep delete mode 100644 cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/settings/intellij/workspace/update/idea.properties delete mode 100644 cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/settings/repositories/test_gradle.properties delete mode 100644 cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/settings/repositories/test_mvn.properties delete mode 100644 cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/settings/workspace/update/.editorconfig delete mode 100644 cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/workspaces/main/.gitkeep delete mode 100644 cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/workspaces/main/test_mvn/pom.xml delete mode 100644 cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/workspaces/test/subfolder/test_gradle/build.gradle delete mode 100644 cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/intellij/default/linux/bin/idea.sh delete mode 100644 cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/intellij/default/linux/bin/idea64.vmoptions delete mode 100644 cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/intellij/default/linux/build.txt delete mode 100644 cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/intellij/default/mac/IntelliJ IDEA CE.app/Contents/MacOS/idea delete mode 100644 cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/intellij/default/mac/IntelliJ IDEA CE.app/Contents/Resources/build.txt delete mode 100644 cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/intellij/default/mac/IntelliJ IDEA CE.app/Contents/bin/idea.vmoptions delete mode 100644 cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/intellij/default/windows/bin/idea64.exe delete mode 100644 cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/intellij/default/windows/bin/idea64.exe.vmoptions delete mode 100644 cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/intellij/default/windows/build.txt delete mode 100644 cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/ultimate/default/windows/bin/idea64.exe delete mode 100644 cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/ultimate/default/windows/build.txt delete mode 100644 cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/java/java/default/bin/java delete mode 100644 cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/java/java/default/bin/java.cmd diff --git a/cli/src/test/java/com/devonfw/tools/ide/tool/intellij/IntellijTest.java b/cli/src/test/java/com/devonfw/tools/ide/tool/intellij/IntellijTest.java index d87366a113..dd7f748420 100644 --- a/cli/src/test/java/com/devonfw/tools/ide/tool/intellij/IntellijTest.java +++ b/cli/src/test/java/com/devonfw/tools/ide/tool/intellij/IntellijTest.java @@ -325,7 +325,19 @@ void testImportExtraJavaSdksIntoJdkTable() throws Exception { void testSkipExtraJavaSdkWithReservedName() throws Exception { // arrange - IdeTestContext context = newContext("intellij-extra-java-conflict"); + IdeTestContext context = newContext("intellij"); + Path extraToolsFile = context.getSettingsPath().resolve("ide-extra-tools.json"); + context.getFileAccess().writeFileContent(""" + { + "java": { + "java": { + "version": "21" + } + } + } + """, + extraToolsFile); + Intellij commandlet = context.getCommandletManager().getCommandlet(Intellij.class); Path extraJavaRoot = context.getSoftwareExtraPath().resolve("java"); @@ -383,12 +395,20 @@ void testSkipMissingExtraJavaSdkDirectory() throws Exception { void testMissingExtraJavaTemplateFails() { // arrange - IdeTestContext context = newContext("intellij-missing-extra-java-template"); + IdeTestContext context = newContext("intellij"); Intellij commandlet = context.getCommandletManager().getCommandlet(Intellij.class); Path extraJavaRoot = context.getSoftwareExtraPath().resolve("java"); context.getFileAccess().mkdirs(extraJavaRoot.resolve("client")); + Path templateFile = context.getSettingsPath() + .resolve("intellij") + .resolve("workspace") + .resolve("repository") + .resolve(".idea") + .resolve("jdk-extra-java.xml"); + context.getFileAccess().delete(templateFile); + // act / assert assertThatThrownBy(commandlet::run) .isInstanceOf(CliException.class) diff --git a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/_ide/urls/intellij/dependencies.json b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/_ide/urls/intellij/dependencies.json deleted file mode 100644 index af76b96d74..0000000000 --- a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/_ide/urls/intellij/dependencies.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "[2022.2,2024.2)": [ - { - "tool": "java", - "versionRange": "[17,)" - } - ] -} diff --git a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/_ide/urls/intellij/intellij/2023.3.3/urls b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/_ide/urls/intellij/intellij/2023.3.3/urls deleted file mode 100644 index 92fd05749d..0000000000 --- a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/_ide/urls/intellij/intellij/2023.3.3/urls +++ /dev/null @@ -1 +0,0 @@ -${testbaseurl}/download/intellij/intellij/2023.3.3/intellij-2023.3.3.tgz diff --git a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/_ide/urls/intellij/ultimate/2023.3.3/urls b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/_ide/urls/intellij/ultimate/2023.3.3/urls deleted file mode 100644 index 9426426b88..0000000000 --- a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/_ide/urls/intellij/ultimate/2023.3.3/urls +++ /dev/null @@ -1 +0,0 @@ -${testbaseurl}/download/intellij/ultimate/2023.3.3/intellij-2023.3.3.tgz diff --git a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/_ide/urls/java/java/17.0.10_7/urls b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/_ide/urls/java/java/17.0.10_7/urls deleted file mode 100644 index 62e6853f29..0000000000 --- a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/_ide/urls/java/java/17.0.10_7/urls +++ /dev/null @@ -1 +0,0 @@ -${testbaseurl}/download/java/java/17.0.10_7/java-17.0.10_7.tgz diff --git a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/conf/ide.properties b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/conf/ide.properties deleted file mode 100644 index 8543c71b51..0000000000 --- a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/conf/ide.properties +++ /dev/null @@ -1,2 +0,0 @@ -# here the INTELLIJ_PROPERTIES variable should be added by the test -INTELLIJ_VM_ARGS=-Xms256m -Xmx4096m -XX:ReservedCodeCacheSize=256m -Dsun.io.useCanonCaches=true -ea diff --git a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/home/.ide/ide.properties b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/home/.ide/ide.properties deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/home/.ide/workspace/update/user.properties b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/home/.ide/workspace/update/user.properties deleted file mode 100644 index 142b9b8792..0000000000 --- a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/home/.ide/workspace/update/user.properties +++ /dev/null @@ -1 +0,0 @@ -ijversion=$[INTELLIJ_VERSION] diff --git a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/settings/ide-extra-tools.json b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/settings/ide-extra-tools.json deleted file mode 100644 index 35eae6ed54..0000000000 --- a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/settings/ide-extra-tools.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "java": { - "java": { - "version": "11.0.27_6", - "edition": "azul" - }, - "process-engine": { - "version": "21.*" - } - }, - "mvn": { - "m4": { - "version": "4.0.0-rc-5" - } - } -} diff --git a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/settings/ide.properties b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/settings/ide.properties deleted file mode 100644 index 15e3965ed3..0000000000 --- a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/settings/ide.properties +++ /dev/null @@ -1,2 +0,0 @@ -JAVA_VERSION=17.0.10_7 -INTELLIJ_VERSION=2023.3.3 \ No newline at end of file diff --git a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/settings/intellij/plugins/ActivePlugin.properties b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/settings/intellij/plugins/ActivePlugin.properties deleted file mode 100644 index 985afcee82..0000000000 --- a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/settings/intellij/plugins/ActivePlugin.properties +++ /dev/null @@ -1,3 +0,0 @@ -plugin_id=activePlugin -plugin_active=true -plugin_url=http://customRepo diff --git a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/settings/intellij/plugins/InactivePlugin.properties b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/settings/intellij/plugins/InactivePlugin.properties deleted file mode 100644 index 89e6d9e4b4..0000000000 --- a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/settings/intellij/plugins/InactivePlugin.properties +++ /dev/null @@ -1,2 +0,0 @@ -plugin_id=inactivePlugin -plugin_active=false diff --git a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/settings/intellij/workspace/setup/.gitkeep b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/settings/intellij/workspace/setup/.gitkeep deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/settings/intellij/workspace/update/.gitkeep b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/settings/intellij/workspace/update/.gitkeep deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/settings/intellij/workspace/update/idea.properties b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/settings/intellij/workspace/update/idea.properties deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/settings/repositories/test_gradle.properties b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/settings/repositories/test_gradle.properties deleted file mode 100644 index 92569780cf..0000000000 --- a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/settings/repositories/test_gradle.properties +++ /dev/null @@ -1,6 +0,0 @@ -path=subfolder/test_gradle -git_url=https://github.com/devonfw/IDEasy.git -git_branch=main -workspace=test -import=intellij -active=true diff --git a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/settings/repositories/test_mvn.properties b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/settings/repositories/test_mvn.properties deleted file mode 100644 index a1ac934c89..0000000000 --- a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/settings/repositories/test_mvn.properties +++ /dev/null @@ -1,5 +0,0 @@ -path=test_mvn -git_url=https://github.com/devonfw/IDEasy.git -git_branch=main -import=intellij -active=true diff --git a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/settings/workspace/update/.editorconfig b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/settings/workspace/update/.editorconfig deleted file mode 100644 index acffc7bca6..0000000000 --- a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/settings/workspace/update/.editorconfig +++ /dev/null @@ -1,17 +0,0 @@ -root = true - -[*] -charset = utf-8 -end_of_line = lf -indent_size = 7 -indent_style = space -insert_final_newline = true -max_line_length = 160 -tab_width = 2 -ij_continuation_indent_size = 4 -ij_formatter_off_tag = @formatter:off -ij_formatter_on_tag = @formatter:on -ij_formatter_tags_enabled = true -ij_smart_tabs = false -ij_visual_guides = -ij_wrap_on_typing = false \ No newline at end of file diff --git a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/workspaces/main/.gitkeep b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/workspaces/main/.gitkeep deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/workspaces/main/test_mvn/pom.xml b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/workspaces/main/test_mvn/pom.xml deleted file mode 100644 index e71f8f1cd8..0000000000 --- a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/workspaces/main/test_mvn/pom.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - 4.0.0 - ide - diff --git a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/workspaces/test/subfolder/test_gradle/build.gradle b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/project/workspaces/test/subfolder/test_gradle/build.gradle deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/intellij/default/linux/bin/idea.sh b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/intellij/default/linux/bin/idea.sh deleted file mode 100644 index 23a51da07f..0000000000 --- a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/intellij/default/linux/bin/idea.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/bash -cd "$(dirname "$0")" -echo $PWD -echo "intellij linux $*" -echo "intellij linux $*" > intellijtest - -if [ "${1}" == "installPlugins" ]; then - echo "installed plugin: PluginNode{id=${@:2}}" -fi - -if [ -n "${3}" ]; then - echo "custom plugin repo url is: ${3}" > customRepoTest -fi diff --git a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/intellij/default/linux/bin/idea64.vmoptions b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/intellij/default/linux/bin/idea64.vmoptions deleted file mode 100644 index 6f64c59cc6..0000000000 --- a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/intellij/default/linux/bin/idea64.vmoptions +++ /dev/null @@ -1,5 +0,0 @@ --Xms128m --Xmx2048m --XX:ReservedCodeCacheSize=512m --ea --Dsun.io.useCanonCaches=false diff --git a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/intellij/default/linux/build.txt b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/intellij/default/linux/build.txt deleted file mode 100644 index 1c35c30bfc..0000000000 --- a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/intellij/default/linux/build.txt +++ /dev/null @@ -1 +0,0 @@ -IC-241.18034.62 \ No newline at end of file diff --git a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/intellij/default/mac/IntelliJ IDEA CE.app/Contents/MacOS/idea b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/intellij/default/mac/IntelliJ IDEA CE.app/Contents/MacOS/idea deleted file mode 100644 index cd10cd647e..0000000000 --- a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/intellij/default/mac/IntelliJ IDEA CE.app/Contents/MacOS/idea +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/bash -cd "$(dirname "$0")" -echo "intellij mac $*" > intellijtest - -if [ "${1}" == "installPlugins" ]; then - echo "installed plugin: PluginNode{id=${@:2}}" -fi - -if [ -n "${3}" ]; then - echo "custom plugin repo url is: ${3}" > customRepoTest -fi - diff --git a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/intellij/default/mac/IntelliJ IDEA CE.app/Contents/Resources/build.txt b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/intellij/default/mac/IntelliJ IDEA CE.app/Contents/Resources/build.txt deleted file mode 100644 index 1c35c30bfc..0000000000 --- a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/intellij/default/mac/IntelliJ IDEA CE.app/Contents/Resources/build.txt +++ /dev/null @@ -1 +0,0 @@ -IC-241.18034.62 \ No newline at end of file diff --git a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/intellij/default/mac/IntelliJ IDEA CE.app/Contents/bin/idea.vmoptions b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/intellij/default/mac/IntelliJ IDEA CE.app/Contents/bin/idea.vmoptions deleted file mode 100644 index 6f64c59cc6..0000000000 --- a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/intellij/default/mac/IntelliJ IDEA CE.app/Contents/bin/idea.vmoptions +++ /dev/null @@ -1,5 +0,0 @@ --Xms128m --Xmx2048m --XX:ReservedCodeCacheSize=512m --ea --Dsun.io.useCanonCaches=false diff --git a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/intellij/default/windows/bin/idea64.exe b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/intellij/default/windows/bin/idea64.exe deleted file mode 100644 index 10e108032b..0000000000 --- a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/intellij/default/windows/bin/idea64.exe +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash -cd "$(dirname "$0")" -echo "intellij windows $*" > intellijtest - -if [ "${1}" == "installPlugins" ]; then - echo "installed plugin: PluginNode{id=${@:2}}" -fi - -if [ -n "${3}" ]; then - echo "custom plugin repo url is: ${3}" > customRepoTest -fi diff --git a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/intellij/default/windows/bin/idea64.exe.vmoptions b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/intellij/default/windows/bin/idea64.exe.vmoptions deleted file mode 100644 index 6f64c59cc6..0000000000 --- a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/intellij/default/windows/bin/idea64.exe.vmoptions +++ /dev/null @@ -1,5 +0,0 @@ --Xms128m --Xmx2048m --XX:ReservedCodeCacheSize=512m --ea --Dsun.io.useCanonCaches=false diff --git a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/intellij/default/windows/build.txt b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/intellij/default/windows/build.txt deleted file mode 100644 index 1c35c30bfc..0000000000 --- a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/intellij/default/windows/build.txt +++ /dev/null @@ -1 +0,0 @@ -IC-241.18034.62 \ No newline at end of file diff --git a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/ultimate/default/windows/bin/idea64.exe b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/ultimate/default/windows/bin/idea64.exe deleted file mode 100644 index 10e108032b..0000000000 --- a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/ultimate/default/windows/bin/idea64.exe +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash -cd "$(dirname "$0")" -echo "intellij windows $*" > intellijtest - -if [ "${1}" == "installPlugins" ]; then - echo "installed plugin: PluginNode{id=${@:2}}" -fi - -if [ -n "${3}" ]; then - echo "custom plugin repo url is: ${3}" > customRepoTest -fi diff --git a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/ultimate/default/windows/build.txt b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/ultimate/default/windows/build.txt deleted file mode 100644 index 1c35c30bfc..0000000000 --- a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/intellij/ultimate/default/windows/build.txt +++ /dev/null @@ -1 +0,0 @@ -IC-241.18034.62 \ No newline at end of file diff --git a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/java/java/default/bin/java b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/java/java/default/bin/java deleted file mode 100644 index 0aa8af9dc5..0000000000 --- a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/java/java/default/bin/java +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/bash -echo "java $*" \ No newline at end of file diff --git a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/java/java/default/bin/java.cmd b/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/java/java/default/bin/java.cmd deleted file mode 100644 index bbaac38028..0000000000 --- a/cli/src/test/resources/ide-projects/intellij-extra-java-conflict/repository/java/java/default/bin/java.cmd +++ /dev/null @@ -1,2 +0,0 @@ -@echo off -echo java %* \ No newline at end of file diff --git a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/_ide/urls/intellij/dependencies.json b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/_ide/urls/intellij/dependencies.json deleted file mode 100644 index af76b96d74..0000000000 --- a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/_ide/urls/intellij/dependencies.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "[2022.2,2024.2)": [ - { - "tool": "java", - "versionRange": "[17,)" - } - ] -} diff --git a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/_ide/urls/intellij/intellij/2023.3.3/urls b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/_ide/urls/intellij/intellij/2023.3.3/urls deleted file mode 100644 index 92fd05749d..0000000000 --- a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/_ide/urls/intellij/intellij/2023.3.3/urls +++ /dev/null @@ -1 +0,0 @@ -${testbaseurl}/download/intellij/intellij/2023.3.3/intellij-2023.3.3.tgz diff --git a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/_ide/urls/intellij/ultimate/2023.3.3/urls b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/_ide/urls/intellij/ultimate/2023.3.3/urls deleted file mode 100644 index 9426426b88..0000000000 --- a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/_ide/urls/intellij/ultimate/2023.3.3/urls +++ /dev/null @@ -1 +0,0 @@ -${testbaseurl}/download/intellij/ultimate/2023.3.3/intellij-2023.3.3.tgz diff --git a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/_ide/urls/java/java/17.0.10_7/urls b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/_ide/urls/java/java/17.0.10_7/urls deleted file mode 100644 index 62e6853f29..0000000000 --- a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/_ide/urls/java/java/17.0.10_7/urls +++ /dev/null @@ -1 +0,0 @@ -${testbaseurl}/download/java/java/17.0.10_7/java-17.0.10_7.tgz diff --git a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/conf/ide.properties b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/conf/ide.properties deleted file mode 100644 index 8543c71b51..0000000000 --- a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/conf/ide.properties +++ /dev/null @@ -1,2 +0,0 @@ -# here the INTELLIJ_PROPERTIES variable should be added by the test -INTELLIJ_VM_ARGS=-Xms256m -Xmx4096m -XX:ReservedCodeCacheSize=256m -Dsun.io.useCanonCaches=true -ea diff --git a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/home/.ide/ide.properties b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/home/.ide/ide.properties deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/home/.ide/workspace/update/user.properties b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/home/.ide/workspace/update/user.properties deleted file mode 100644 index 142b9b8792..0000000000 --- a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/home/.ide/workspace/update/user.properties +++ /dev/null @@ -1 +0,0 @@ -ijversion=$[INTELLIJ_VERSION] diff --git a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/settings/ide-extra-tools.json b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/settings/ide-extra-tools.json deleted file mode 100644 index e832adb715..0000000000 --- a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/settings/ide-extra-tools.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "java": { - "client": { - "version": "11.0.27_6", - "edition": "azul" - }, - "process-engine": { - "version": "21.*" - } - }, - "mvn": { - "m4": { - "version": "4.0.0-rc-5" - } - } -} diff --git a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/settings/ide.properties b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/settings/ide.properties deleted file mode 100644 index 15e3965ed3..0000000000 --- a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/settings/ide.properties +++ /dev/null @@ -1,2 +0,0 @@ -JAVA_VERSION=17.0.10_7 -INTELLIJ_VERSION=2023.3.3 \ No newline at end of file diff --git a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/settings/intellij/plugins/ActivePlugin.properties b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/settings/intellij/plugins/ActivePlugin.properties deleted file mode 100644 index 985afcee82..0000000000 --- a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/settings/intellij/plugins/ActivePlugin.properties +++ /dev/null @@ -1,3 +0,0 @@ -plugin_id=activePlugin -plugin_active=true -plugin_url=http://customRepo diff --git a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/settings/intellij/plugins/InactivePlugin.properties b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/settings/intellij/plugins/InactivePlugin.properties deleted file mode 100644 index 89e6d9e4b4..0000000000 --- a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/settings/intellij/plugins/InactivePlugin.properties +++ /dev/null @@ -1,2 +0,0 @@ -plugin_id=inactivePlugin -plugin_active=false diff --git a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/settings/intellij/workspace/setup/.gitkeep b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/settings/intellij/workspace/setup/.gitkeep deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/settings/intellij/workspace/update/.gitkeep b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/settings/intellij/workspace/update/.gitkeep deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/settings/intellij/workspace/update/idea.properties b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/settings/intellij/workspace/update/idea.properties deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/settings/repositories/test_gradle.properties b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/settings/repositories/test_gradle.properties deleted file mode 100644 index 92569780cf..0000000000 --- a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/settings/repositories/test_gradle.properties +++ /dev/null @@ -1,6 +0,0 @@ -path=subfolder/test_gradle -git_url=https://github.com/devonfw/IDEasy.git -git_branch=main -workspace=test -import=intellij -active=true diff --git a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/settings/repositories/test_mvn.properties b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/settings/repositories/test_mvn.properties deleted file mode 100644 index a1ac934c89..0000000000 --- a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/settings/repositories/test_mvn.properties +++ /dev/null @@ -1,5 +0,0 @@ -path=test_mvn -git_url=https://github.com/devonfw/IDEasy.git -git_branch=main -import=intellij -active=true diff --git a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/settings/workspace/update/.editorconfig b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/settings/workspace/update/.editorconfig deleted file mode 100644 index acffc7bca6..0000000000 --- a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/settings/workspace/update/.editorconfig +++ /dev/null @@ -1,17 +0,0 @@ -root = true - -[*] -charset = utf-8 -end_of_line = lf -indent_size = 7 -indent_style = space -insert_final_newline = true -max_line_length = 160 -tab_width = 2 -ij_continuation_indent_size = 4 -ij_formatter_off_tag = @formatter:off -ij_formatter_on_tag = @formatter:on -ij_formatter_tags_enabled = true -ij_smart_tabs = false -ij_visual_guides = -ij_wrap_on_typing = false \ No newline at end of file diff --git a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/workspaces/main/.gitkeep b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/workspaces/main/.gitkeep deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/workspaces/main/test_mvn/pom.xml b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/workspaces/main/test_mvn/pom.xml deleted file mode 100644 index e71f8f1cd8..0000000000 --- a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/workspaces/main/test_mvn/pom.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - 4.0.0 - ide - diff --git a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/workspaces/test/subfolder/test_gradle/build.gradle b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/project/workspaces/test/subfolder/test_gradle/build.gradle deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/intellij/default/linux/bin/idea.sh b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/intellij/default/linux/bin/idea.sh deleted file mode 100644 index 23a51da07f..0000000000 --- a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/intellij/default/linux/bin/idea.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/bash -cd "$(dirname "$0")" -echo $PWD -echo "intellij linux $*" -echo "intellij linux $*" > intellijtest - -if [ "${1}" == "installPlugins" ]; then - echo "installed plugin: PluginNode{id=${@:2}}" -fi - -if [ -n "${3}" ]; then - echo "custom plugin repo url is: ${3}" > customRepoTest -fi diff --git a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/intellij/default/linux/bin/idea64.vmoptions b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/intellij/default/linux/bin/idea64.vmoptions deleted file mode 100644 index 6f64c59cc6..0000000000 --- a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/intellij/default/linux/bin/idea64.vmoptions +++ /dev/null @@ -1,5 +0,0 @@ --Xms128m --Xmx2048m --XX:ReservedCodeCacheSize=512m --ea --Dsun.io.useCanonCaches=false diff --git a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/intellij/default/linux/build.txt b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/intellij/default/linux/build.txt deleted file mode 100644 index 1c35c30bfc..0000000000 --- a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/intellij/default/linux/build.txt +++ /dev/null @@ -1 +0,0 @@ -IC-241.18034.62 \ No newline at end of file diff --git a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/intellij/default/mac/IntelliJ IDEA CE.app/Contents/MacOS/idea b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/intellij/default/mac/IntelliJ IDEA CE.app/Contents/MacOS/idea deleted file mode 100644 index cd10cd647e..0000000000 --- a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/intellij/default/mac/IntelliJ IDEA CE.app/Contents/MacOS/idea +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/bash -cd "$(dirname "$0")" -echo "intellij mac $*" > intellijtest - -if [ "${1}" == "installPlugins" ]; then - echo "installed plugin: PluginNode{id=${@:2}}" -fi - -if [ -n "${3}" ]; then - echo "custom plugin repo url is: ${3}" > customRepoTest -fi - diff --git a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/intellij/default/mac/IntelliJ IDEA CE.app/Contents/Resources/build.txt b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/intellij/default/mac/IntelliJ IDEA CE.app/Contents/Resources/build.txt deleted file mode 100644 index 1c35c30bfc..0000000000 --- a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/intellij/default/mac/IntelliJ IDEA CE.app/Contents/Resources/build.txt +++ /dev/null @@ -1 +0,0 @@ -IC-241.18034.62 \ No newline at end of file diff --git a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/intellij/default/mac/IntelliJ IDEA CE.app/Contents/bin/idea.vmoptions b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/intellij/default/mac/IntelliJ IDEA CE.app/Contents/bin/idea.vmoptions deleted file mode 100644 index 6f64c59cc6..0000000000 --- a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/intellij/default/mac/IntelliJ IDEA CE.app/Contents/bin/idea.vmoptions +++ /dev/null @@ -1,5 +0,0 @@ --Xms128m --Xmx2048m --XX:ReservedCodeCacheSize=512m --ea --Dsun.io.useCanonCaches=false diff --git a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/intellij/default/windows/bin/idea64.exe b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/intellij/default/windows/bin/idea64.exe deleted file mode 100644 index 10e108032b..0000000000 --- a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/intellij/default/windows/bin/idea64.exe +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash -cd "$(dirname "$0")" -echo "intellij windows $*" > intellijtest - -if [ "${1}" == "installPlugins" ]; then - echo "installed plugin: PluginNode{id=${@:2}}" -fi - -if [ -n "${3}" ]; then - echo "custom plugin repo url is: ${3}" > customRepoTest -fi diff --git a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/intellij/default/windows/bin/idea64.exe.vmoptions b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/intellij/default/windows/bin/idea64.exe.vmoptions deleted file mode 100644 index 6f64c59cc6..0000000000 --- a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/intellij/default/windows/bin/idea64.exe.vmoptions +++ /dev/null @@ -1,5 +0,0 @@ --Xms128m --Xmx2048m --XX:ReservedCodeCacheSize=512m --ea --Dsun.io.useCanonCaches=false diff --git a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/intellij/default/windows/build.txt b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/intellij/default/windows/build.txt deleted file mode 100644 index 1c35c30bfc..0000000000 --- a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/intellij/default/windows/build.txt +++ /dev/null @@ -1 +0,0 @@ -IC-241.18034.62 \ No newline at end of file diff --git a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/ultimate/default/windows/bin/idea64.exe b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/ultimate/default/windows/bin/idea64.exe deleted file mode 100644 index 10e108032b..0000000000 --- a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/ultimate/default/windows/bin/idea64.exe +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash -cd "$(dirname "$0")" -echo "intellij windows $*" > intellijtest - -if [ "${1}" == "installPlugins" ]; then - echo "installed plugin: PluginNode{id=${@:2}}" -fi - -if [ -n "${3}" ]; then - echo "custom plugin repo url is: ${3}" > customRepoTest -fi diff --git a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/ultimate/default/windows/build.txt b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/ultimate/default/windows/build.txt deleted file mode 100644 index 1c35c30bfc..0000000000 --- a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/intellij/ultimate/default/windows/build.txt +++ /dev/null @@ -1 +0,0 @@ -IC-241.18034.62 \ No newline at end of file diff --git a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/java/java/default/bin/java b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/java/java/default/bin/java deleted file mode 100644 index 0aa8af9dc5..0000000000 --- a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/java/java/default/bin/java +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/bash -echo "java $*" \ No newline at end of file diff --git a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/java/java/default/bin/java.cmd b/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/java/java/default/bin/java.cmd deleted file mode 100644 index bbaac38028..0000000000 --- a/cli/src/test/resources/ide-projects/intellij-missing-extra-java-template/repository/java/java/default/bin/java.cmd +++ /dev/null @@ -1,2 +0,0 @@ -@echo off -echo java %* \ No newline at end of file From 4e996ffb69c6d478dd513d91b2ea4a7f02fd3d63 Mon Sep 17 00:00:00 2001 From: vivu001 Date: Wed, 1 Jul 2026 08:15:24 +0200 Subject: [PATCH 08/21] #1676: Updated the extra Java template parsing to use the renamed attribute placeholders in jdk-extra-java.xml --- .../devonfw/tools/ide/tool/intellij/Intellij.java | 9 ++++----- .../workspace/repository/.idea/jdk-extra-java.xml | 14 +++++++------- .../workspace/repository/.idea/jdk-extra-java.xml | 14 +++++++------- 3 files changed, 18 insertions(+), 19 deletions(-) diff --git a/cli/src/main/java/com/devonfw/tools/ide/tool/intellij/Intellij.java b/cli/src/main/java/com/devonfw/tools/ide/tool/intellij/Intellij.java index 8453df8f30..608d95806a 100644 --- a/cli/src/main/java/com/devonfw/tools/ide/tool/intellij/Intellij.java +++ b/cli/src/main/java/com/devonfw/tools/ide/tool/intellij/Intellij.java @@ -310,12 +310,11 @@ private void mergeExtraToolInstallation(Path workspacePath, String tool, ExtraTo ExtensibleEnvironmentVariables environmentVariables = new ExtensibleEnvironmentVariables( (AbstractEnvironmentVariables) this.context.getVariables().getParent(), this.context); - environmentVariables.setValue("EXTRA_TOOL", tool); - environmentVariables.setValue("EXTRA_NAME", name); - environmentVariables.setValue("EXTRA_HOME", extraToolHome.toString().replace('\\', '/')); - environmentVariables.setValue("EXTRA_VERSION", extraInstallation.version().toString()); + environmentVariables.setValue("EXTRA_JAVA_NAME", name); + environmentVariables.setValue("EXTRA_JAVA_HOME", extraToolHome.toString().replace('\\', '/')); + environmentVariables.setValue("EXTRA_JAVA_VERSION", extraInstallation.version().toString()); if (extraInstallation.edition() != null) { - environmentVariables.setValue("EXTRA_EDITION", extraInstallation.edition()); + environmentVariables.setValue("EXTRA_JAVA_EDITION", extraInstallation.edition()); } mergeExtraToolInstallationToWorkspace(workspacePath, config, templateFile, environmentVariables.resolved()); diff --git a/cli/src/test/resources/ide-projects/intellij/project/settings/intellij/workspace/repository/.idea/jdk-extra-java.xml b/cli/src/test/resources/ide-projects/intellij/project/settings/intellij/workspace/repository/.idea/jdk-extra-java.xml index f65a24bbe0..08edcfc49e 100644 --- a/cli/src/test/resources/ide-projects/intellij/project/settings/intellij/workspace/repository/.idea/jdk-extra-java.xml +++ b/cli/src/test/resources/ide-projects/intellij/project/settings/intellij/workspace/repository/.idea/jdk-extra-java.xml @@ -1,11 +1,11 @@ - - + + - - + + @@ -14,7 +14,7 @@ - + @@ -22,11 +22,11 @@ - + - \ No newline at end of file + diff --git a/cli/src/test/resources/ide-projects/update/project/settings/intellij/workspace/repository/.idea/jdk-extra-java.xml b/cli/src/test/resources/ide-projects/update/project/settings/intellij/workspace/repository/.idea/jdk-extra-java.xml index f65a24bbe0..08edcfc49e 100644 --- a/cli/src/test/resources/ide-projects/update/project/settings/intellij/workspace/repository/.idea/jdk-extra-java.xml +++ b/cli/src/test/resources/ide-projects/update/project/settings/intellij/workspace/repository/.idea/jdk-extra-java.xml @@ -1,11 +1,11 @@ - - + + - - + + @@ -14,7 +14,7 @@ - + @@ -22,11 +22,11 @@ - + - \ No newline at end of file + From f18a43762800ae937a6d3f654b63ede061f380a3 Mon Sep 17 00:00:00 2001 From: vivu001 Date: Wed, 1 Jul 2026 08:23:12 +0200 Subject: [PATCH 09/21] #1676: Updated CHANGELOG.adoc --- CHANGELOG.adoc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.adoc b/CHANGELOG.adoc index b95c6b8a9f..661d4efc43 100644 --- a/CHANGELOG.adoc +++ b/CHANGELOG.adoc @@ -6,6 +6,7 @@ This file documents all notable changes to https://github.com/devonfw/IDEasy[IDE Release with new features and bugfixes: +* https://github.com/devonfw/IDEasy/issues/1676[#1676]: Import extra SDKs automatically into IDE The full list of changes for this release can be found in https://github.com/devonfw/IDEasy/milestone/46?closed=1[milestone 2026.07.001]. @@ -13,7 +14,7 @@ The full list of changes for this release can be found in https://github.com/dev Release with new features and bugfixes: -* https://github.com/devonfw/IDEasy/issues/797[#797]: Fix VSCode install on macOS +* https://github.com/devonfw/IDEasy/issues/797[#797]: Fix VSCode install on macOS * https://github.com/devonfw/IDEasy/issues/1956[#1956]: Merging MAVEN_ARGS buggy * https://github.com/devonfw/IDEasy/issues/1978[#1978]: Enhanced the quality status documentation * https://github.com/devonfw/IDEasy/issues/1946[#1946]: Add Spyder Python IDE From e4ad0458b5e525b726378bb7ddd488af13162522 Mon Sep 17 00:00:00 2001 From: vivu001 Date: Tue, 7 Jul 2026 21:00:40 +0200 Subject: [PATCH 10/21] #1676: Fixed misunderstandings and refactored code --- .../commandlet/AbstractUpdateCommandlet.java | 25 --- .../tools/ide/tool/extra/ExtraTools.java | 6 + .../tools/ide/tool/ide/IdeToolCommandlet.java | 99 ++++++++- .../tools/ide/tool/intellij/Intellij.java | 189 +----------------- 4 files changed, 109 insertions(+), 210 deletions(-) diff --git a/cli/src/main/java/com/devonfw/tools/ide/commandlet/AbstractUpdateCommandlet.java b/cli/src/main/java/com/devonfw/tools/ide/commandlet/AbstractUpdateCommandlet.java index 7764e6a6c8..2874a0ef04 100644 --- a/cli/src/main/java/com/devonfw/tools/ide/commandlet/AbstractUpdateCommandlet.java +++ b/cli/src/main/java/com/devonfw/tools/ide/commandlet/AbstractUpdateCommandlet.java @@ -33,7 +33,6 @@ import com.devonfw.tools.ide.tool.extra.ExtraToolInstallation; import com.devonfw.tools.ide.tool.extra.ExtraTools; import com.devonfw.tools.ide.tool.extra.ExtraToolsMapper; -import com.devonfw.tools.ide.tool.intellij.Intellij; import com.devonfw.tools.ide.variable.IdeVariables; import com.devonfw.tools.ide.version.VersionIdentifier; @@ -351,8 +350,6 @@ private void doUpdateSoftwareStep(Step step) { this.context.newStep("Install extra version(s) of " + tool).run(() -> installExtraToolInstallations(tool, installations)); } } - - synchronizeIdeExtraToolInstallations(extraTools); } private void installExtraToolInstallations(String tool, List extraInstallations) { @@ -377,28 +374,6 @@ private void installExtraToolInstallations(String tool, List intellij.synchronizeExtraToolInstallations(workspacePath)); - } - - // later: - // Eclipse eclipse = ... - // VsCode vscode = ... - } - private void updateRepositories() { if (this.skipRepositories.isTrue()) { diff --git a/cli/src/main/java/com/devonfw/tools/ide/tool/extra/ExtraTools.java b/cli/src/main/java/com/devonfw/tools/ide/tool/extra/ExtraTools.java index 55f1de2777..a32e9d0c55 100644 --- a/cli/src/main/java/com/devonfw/tools/ide/tool/extra/ExtraTools.java +++ b/cli/src/main/java/com/devonfw/tools/ide/tool/extra/ExtraTools.java @@ -51,6 +51,12 @@ public List getExtraInstallations(String tool) { */ public void addExtraInstallations(String tool, ExtraToolInstallation extraInstallation) { + if ((tool != null) && (extraInstallation != null) && tool.equalsIgnoreCase(extraInstallation.name())) { + throw new IllegalArgumentException( + "Invalid extra installation name '" + extraInstallation.name() + "' for tool '" + tool + + "': the extra installation name must not be the same as the tool name."); + } + List list = this.tool2installationsMap.computeIfAbsent(tool, k -> new ArrayList<>()); list.add(extraInstallation); } diff --git a/cli/src/main/java/com/devonfw/tools/ide/tool/ide/IdeToolCommandlet.java b/cli/src/main/java/com/devonfw/tools/ide/tool/ide/IdeToolCommandlet.java index 141faadc58..5acf366c95 100644 --- a/cli/src/main/java/com/devonfw/tools/ide/tool/ide/IdeToolCommandlet.java +++ b/cli/src/main/java/com/devonfw/tools/ide/tool/ide/IdeToolCommandlet.java @@ -2,15 +2,25 @@ import java.nio.file.Files; import java.nio.file.Path; +import java.util.HashMap; +import java.util.HashSet; import java.util.List; +import java.util.Locale; +import java.util.Map; import java.util.Set; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.w3c.dom.Document; import com.devonfw.tools.ide.common.Tag; import com.devonfw.tools.ide.context.IdeContext; +import com.devonfw.tools.ide.environment.AbstractEnvironmentVariables; +import com.devonfw.tools.ide.environment.ExtensibleEnvironmentVariables; import com.devonfw.tools.ide.io.FileAccess; +import com.devonfw.tools.ide.log.IdeLogLevel; +import com.devonfw.tools.ide.merge.xml.XmlMergeDocument; +import com.devonfw.tools.ide.merge.xml.XmlMerger; import com.devonfw.tools.ide.process.ProcessMode; import com.devonfw.tools.ide.process.ProcessResult; import com.devonfw.tools.ide.step.Step; @@ -18,6 +28,9 @@ import com.devonfw.tools.ide.tool.ToolInstallRequest; import com.devonfw.tools.ide.tool.ToolInstallation; import com.devonfw.tools.ide.tool.eclipse.Eclipse; +import com.devonfw.tools.ide.tool.extra.ExtraToolInstallation; +import com.devonfw.tools.ide.tool.extra.ExtraTools; +import com.devonfw.tools.ide.tool.extra.ExtraToolsMapper; import com.devonfw.tools.ide.tool.intellij.Intellij; import com.devonfw.tools.ide.tool.plugin.PluginBasedCommandlet; import com.devonfw.tools.ide.tool.vscode.Vscode; @@ -29,6 +42,8 @@ public abstract class IdeToolCommandlet extends PluginBasedCommandlet { private static final Logger LOG = LoggerFactory.getLogger(IdeToolCommandlet.class); + private final Map> extraSdkMap; + /** * The constructor. * @@ -40,6 +55,7 @@ public IdeToolCommandlet(IdeContext context, String tool, Set tags) { super(context, tool, tags); assert (hasIde(tags)); + this.extraSdkMap = new HashMap<>(); } private boolean hasIde(Set tags) { @@ -91,6 +107,9 @@ private void doMergeWorkspaceStep(Step step, Path workspaceFolder) { errors = mergeWorkspace(this.context.getUserHomeIde(), workspaceFolder, errors); errors = mergeWorkspace(this.context.getSettingsPath(), workspaceFolder, errors); errors = mergeWorkspace(this.context.getConfPath(), workspaceFolder, errors); + + synchronizeExtraToolInstallations(); + if (errors == 0) { step.success(); } else { @@ -133,16 +152,84 @@ public void importRepository(Path repositoryPath) { } /** - * Synchronizes extra IDEasy tool installations into the IDE workspace configuration if supported. + * Registers support for synchronizing an extra SDK/template for this IDE. * *

- * The default implementation does nothing. IDEs such as IntelliJ may override this hook to import extra SDK/tool installations configured via - * {@code settings/ide-extra-tools.json}. + * The registered template path must be relative to the IDE workspace root. During workspace synchronization, the generic extra-SDK handling in + * {@link #synchronizeExtraToolInstallations()} uses this mapping to locate the corresponding template file in the settings repository and merge it into the + * current workspace. *

* - * @param workspacePath the workspace root whose IDE configuration should be synchronized. + * @param sdk the name of the extra SDK/tool as configured in {@code ide-extra-tools.json}. + * @param relativeTemplatePath the workspace-relative path of the IDE-specific template file to merge. */ - public void synchronizeExtraToolInstallations(Path workspacePath) { - // default no-op + protected void registerExtraSdkTemplate(String sdk, Path relativeTemplatePath) { + Set templatePaths = this.extraSdkMap.computeIfAbsent(sdk, _ -> new HashSet<>()); + templatePaths.add(relativeTemplatePath); + } + + /** + * Synchronizes extra IDEasy tool installations into the current IDE workspace configuration if supported. + * + *

+ * By default, nothing will happen. Your IDE commandlet has to register one or more according templates in its constructor. + *

+ */ + protected void synchronizeExtraToolInstallations() { + ExtraTools extraTools = ExtraToolsMapper.get().loadJsonFromFolder(this.context.getSettingsPath()); + if (extraTools == null) { + return; + } + for (String sdk : extraTools.getSortedToolNames()) { + Set templatePaths = this.extraSdkMap.get(sdk); + if ((templatePaths == null) || templatePaths.isEmpty()) { + LOG.debug("Skipping import of extra tool {} into {} because not configured or supported.", sdk, this.tool); + continue; + } + List extraInstallations = extraTools.getExtraInstallations(sdk); + synchronizeExtraToolInstallation(sdk, templatePaths, extraInstallations); + } + } + + private void synchronizeExtraToolInstallation(String sdk, Set templatePaths, List extraInstallations) { + for (Path templatePath : templatePaths) { + Path workspaceFile = this.context.getWorkspacePath().resolve(templatePath); + Path templateFile = this.context.getSettingsPath().resolve(this.tool).resolve(IdeContext.FOLDER_WORKSPACE) + .resolve("repository") // TODO: create and use constant IdeContext.FOLDER_REPOSITORY - this string literal exists at least 16 times in our code base + .resolve(templatePath); + if (Files.exists(templateFile)) { + for (ExtraToolInstallation extraInstallation : extraInstallations) { + synchronizeExtraToolInstallation(sdk, templateFile, workspaceFile, extraInstallation); + } + } else { + LOG.warn("You are missing a template file at {}.", templatePath); + IdeLogLevel.INTERACTION.log(LOG, "Please ask the IDEasy admin in your project to merge your settings with upstream."); + } + } + } + + private void synchronizeExtraToolInstallation(String sdk, Path templateFile, Path workspaceFile, ExtraToolInstallation installation) { + String name = installation.name(); + Path extraToolHome = this.context.getSoftwareExtraPath().resolve(sdk).resolve(name); + if (!Files.isDirectory(extraToolHome)) { + LOG.warn("Skipping extra tool installation import to {} because it is missing at {}", this.tool, extraToolHome); + IdeLogLevel.INTERACTION.log(LOG, "Please run the following command to fix:\nide update"); + return; + } + ExtensibleEnvironmentVariables environmentVariables = new ExtensibleEnvironmentVariables( + (AbstractEnvironmentVariables) this.context.getVariables().getParent(), this.context); + String variablePrefix = "EXTRA_" + sdk.toUpperCase(Locale.ROOT); + environmentVariables.setValue(variablePrefix + "_NAME", name); + environmentVariables.setValue(variablePrefix + "_HOME", extraToolHome.toString().replace('\\', '/')); + environmentVariables.setValue(variablePrefix + "_VERSION", installation.version().toString()); + if (installation.edition() != null) { + environmentVariables.setValue(variablePrefix + "_EDITION", installation.edition()); + } + + XmlMerger xmlMerger = new XmlMerger(this.context); + XmlMergeDocument workspaceDocument = xmlMerger.load(workspaceFile); + XmlMergeDocument templateDocument = xmlMerger.loadAndResolve(templateFile, environmentVariables); + Document mergedDocument = xmlMerger.merge(templateDocument, workspaceDocument, false); + xmlMerger.save(mergedDocument, workspaceFile); } } diff --git a/cli/src/main/java/com/devonfw/tools/ide/tool/intellij/Intellij.java b/cli/src/main/java/com/devonfw/tools/ide/tool/intellij/Intellij.java index 608d95806a..7636218394 100644 --- a/cli/src/main/java/com/devonfw/tools/ide/tool/intellij/Intellij.java +++ b/cli/src/main/java/com/devonfw/tools/ide/tool/intellij/Intellij.java @@ -2,7 +2,6 @@ import java.nio.file.Files; import java.nio.file.Path; -import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.Set; @@ -25,9 +24,6 @@ import com.devonfw.tools.ide.tool.ToolEdition; import com.devonfw.tools.ide.tool.ToolEditionAndVersion; import com.devonfw.tools.ide.tool.ToolInstallation; -import com.devonfw.tools.ide.tool.extra.ExtraToolInstallation; -import com.devonfw.tools.ide.tool.extra.ExtraTools; -import com.devonfw.tools.ide.tool.extra.ExtraToolsMapper; import com.devonfw.tools.ide.tool.gradle.Gradle; import com.devonfw.tools.ide.tool.ide.IdeToolCommandlet; import com.devonfw.tools.ide.tool.ide.IdeaBasedIdeToolCommandlet; @@ -57,30 +53,6 @@ public class Intellij extends IdeaBasedIdeToolCommandlet { private static final Map, String> BUILD_TOOL_TO_IJ_TEMPLATE = Map.of(Mvn.class, MISC_XML, Gradle.class, GRADLE_XML); - /** - * IntelliJ-specific configuration describing how an extra IDEasy tool installation can be imported as an SDK/tool definition into IntelliJ configuration. - * - * @param templateFile the IntelliJ XML template file used as merge source. - * @param targetFile the IntelliJ configuration file relative to the workspace root that should be updated. - * @param reservedName an optional reserved logical name that must not be reused by an extra installation because it would collide with the main SDK/tool - * definition. - */ - private record IntellijExtraSdkConfig(String templateFile, String targetFile, String reservedName) { - - } - - /** - * Mapping of IDEasy tool names to IntelliJ-specific SDK import configuration. - * - *

- * Only tools contained in this map are imported automatically into IntelliJ. This keeps the import logic generic for IntelliJ while allowing support to be - * added incrementally tool by tool. - *

- */ - private static final Map EXTRA_TOOL_CONFIGS = Map.of( - "java", new IntellijExtraSdkConfig("jdk-extra-java.xml", ".intellij/config/options/jdk.table.xml", "java") - ); - /** * The constructor. * @@ -89,6 +61,7 @@ private record IntellijExtraSdkConfig(String templateFile, String targetFile, St public Intellij(IdeContext context) { super(context, "intellij", Set.of(Tag.INTELLIJ)); + registerExtraSdkTemplate("java", Path.of(".intellij/config/options/jdk.table.xml")); } @Override @@ -116,13 +89,7 @@ protected String getIdeProductPrefix() { @Override public void setEnvironment(EnvironmentContext environmentContext, ToolInstallation toolInstallation, boolean additionalInstallation) { super.setEnvironment(environmentContext, toolInstallation, additionalInstallation); - - Path workspacePath = this.context.getWorkspacePath(); - // Synchronize extra SDK/tool definitions before IntelliJ starts so newly installed extra tool versions - // become visible in the IDE without requiring a separate repository import step. - synchronizeExtraToolInstallations(workspacePath); - - environmentContext.withEnvVar("IDEA_PROPERTIES", workspacePath.resolve(IDEA_PROPERTIES).toString()); + environmentContext.withEnvVar("IDEA_PROPERTIES", this.context.getWorkspacePath().resolve(IDEA_PROPERTIES).toString()); } @Override @@ -164,16 +131,6 @@ private EnvironmentVariables getIntellijEnvironmentVariables(Path projectPath) { return environmentVariables.resolved(); } - private Path getWorkspacePath(Path repositoryPath) { - Path workspacesPath = this.context.getIdeHome().resolve(IdeContext.FOLDER_WORKSPACES); - Path workspacePath = this.context.getFileAccess().findAncestor(repositoryPath, workspacesPath, 1); - if (workspacePath == null) { - throw new CliException( - "Cannot import project into workspace: could not find workspace from " + repositoryPath); - } - return workspacePath; - } - private void mergeConfig(Path repositoryPath, String configFilePath) { Path templatePath = this.context.getSettingsPath().resolve(TEMPLATE_LOCATION); Path templateFile = templatePath.resolve(configFilePath); @@ -182,7 +139,12 @@ private void mergeConfig(Path repositoryPath, String configFilePath) { "Cannot import project into workspace: template file not found at " + templateFile + "\n" + "Please do an upstream merge of your settings git repository."); } - Path workspacePath = getWorkspacePath(repositoryPath); + Path workspacesPath = this.context.getIdeHome().resolve(IdeContext.FOLDER_WORKSPACES); + Path workspacePath = this.context.getFileAccess().findAncestor(repositoryPath, workspacesPath, 1); + if (workspacePath == null) { + throw new CliException( + "Cannot import project into workspace: could not find workspace from " + repositoryPath); + } XmlMerger xmlMerger = new XmlMerger(this.context); EnvironmentVariables environmentVariables = getIntellijEnvironmentVariables(workspacePath.relativize(repositoryPath)); Path workspaceFile = workspacePath.resolve(FOLDER_IDEA_CONFIG).resolve(configFilePath); @@ -198,7 +160,6 @@ private void mergeConfig(Path repositoryPath, String configFilePath) { @Override public void importRepository(Path repositoryPath) { CommandletManager commandletManager = this.context.getCommandletManager(); - boolean buildDescriptorFound = false; for (Entry, String> entry : BUILD_TOOL_TO_IJ_TEMPLATE.entrySet()) { LocalToolCommandlet buildTool = commandletManager.getCommandlet(entry.getKey()); Path buildDescriptor = buildTool.findBuildDescriptor(repositoryPath); @@ -206,139 +167,9 @@ public void importRepository(Path repositoryPath) { String templateFilename = entry.getValue(); LOG.debug("Found build descriptor {} so merging template {}", buildDescriptor, templateFilename); mergeConfig(repositoryPath, templateFilename); - buildDescriptorFound = true; - break; - } - } - if (!buildDescriptorFound) { - LOG.warn("No supported build descriptor was found for project import in {}", repositoryPath); - } - - importExtraToolInstallations(repositoryPath); - } - - @Override - public void synchronizeExtraToolInstallations(Path workspacePath) { - importExtraToolInstallationsToWorkspace(workspacePath); - } - - /** - * Imports configured extra tool installations into IntelliJ for the repository contained in the given workspace. - * - *

- * This method is used from repository import flow where only a repository path is known and the workspace must first be resolved from that repository - * location. - *

- * - * @param repositoryPath the repository path inside the workspace. - */ - private void importExtraToolInstallations(Path repositoryPath) { - Path workspacePath = getWorkspacePath(repositoryPath); - importExtraToolInstallationsToWorkspace(workspacePath); - } - - /** - * Imports all configured and supported extra tool installations into IntelliJ workspace configuration. - * - *

- * Extra tool installations are read from {@code settings/ide-extra-tools.json}. For each configured tool, IntelliJ import is only attempted if this class - * provides IntelliJ-specific support via {@link #EXTRA_TOOL_CONFIGS}. This keeps the discovery of extra tools generic while the actual IDE import remains - * explicit and controlled. - *

- * - * @param workspacePath the IntelliJ workspace root whose configuration should be updated. - */ - private void importExtraToolInstallationsToWorkspace(Path workspacePath) { - ExtraTools extraTools = ExtraToolsMapper.get().loadJsonFromFolder(this.context.getSettingsPath()); - if (extraTools == null) { - return; - } - - for (String tool : extraTools.getSortedToolNames()) { - IntellijExtraSdkConfig config = EXTRA_TOOL_CONFIGS.get(tool); - if (config == null) { - LOG.debug("Skipping IntelliJ import of extra tool '{}': no IntelliJ template support configured.", tool); - continue; - } - List extraInstallations = extraTools.getExtraInstallations(tool); - for (ExtraToolInstallation extraInstallation : extraInstallations) { - mergeExtraToolInstallation(workspacePath, tool, extraInstallation, config); + return; } } - } - - /** - * Merges a single extra IDEasy tool installation into IntelliJ workspace configuration. - * - *

- * This method performs validation and variable preparation before delegating to the actual XML merge: - *

- *
    - *
  • rejects reserved names that would collide with the main SDK/tool definition,
  • - *
  • verifies that the extra tool installation really exists under {@code software/extra},
  • - *
  • verifies that the required IntelliJ merge template is available.
  • - *
- * - * @param workspacePath the IntelliJ workspace root. - * @param tool the IDEasy tool name such as {@code java}. - * @param extraInstallation the configured extra installation from {@code ide-extra-tools.json}. - * @param config the IntelliJ-specific import configuration for the tool. - */ - private void mergeExtraToolInstallation(Path workspacePath, String tool, ExtraToolInstallation extraInstallation, - IntellijExtraSdkConfig config) { - - String name = extraInstallation.name(); - if ((config.reservedName() != null) && config.reservedName().equalsIgnoreCase(name)) { - LOG.warn("Skipping IntelliJ import for extra {} installation '{}': name conflicts with main {} installation.", tool, name, tool); - return; - } - - Path extraToolHome = this.context.getSoftwareExtraPath().resolve(tool).resolve(name); - if (!Files.isDirectory(extraToolHome)) { - LOG.warn("Skipping IntelliJ import for extra {} installation '{}': directory does not exist: {}", tool, name, extraToolHome); - return; - } - - Path templateFile = this.context.getSettingsPath() - .resolve(TEMPLATE_LOCATION) - .resolve(config.templateFile()); - if (!Files.exists(templateFile)) { - throw new CliException( - "Cannot import extra " + tool + " installation into IntelliJ: template file not found at " + templateFile + "\n" - + "Please do an upstream merge of your settings git repository."); - } - - ExtensibleEnvironmentVariables environmentVariables = new ExtensibleEnvironmentVariables( - (AbstractEnvironmentVariables) this.context.getVariables().getParent(), this.context); - environmentVariables.setValue("EXTRA_JAVA_NAME", name); - environmentVariables.setValue("EXTRA_JAVA_HOME", extraToolHome.toString().replace('\\', '/')); - environmentVariables.setValue("EXTRA_JAVA_VERSION", extraInstallation.version().toString()); - if (extraInstallation.edition() != null) { - environmentVariables.setValue("EXTRA_JAVA_EDITION", extraInstallation.edition()); - } - - mergeExtraToolInstallationToWorkspace(workspacePath, config, templateFile, environmentVariables.resolved()); - } - - /** - * Performs the actual XML merge of an IntelliJ extra SDK/tool definition into the configured target file. - * - * @param workspacePath the IntelliJ workspace root. - * @param config the IntelliJ-specific import configuration. - * @param templateFile the resolved template file to merge from. - * @param environmentVariables the resolved variables used to parameterize the template. - */ - private void mergeExtraToolInstallationToWorkspace(Path workspacePath, IntellijExtraSdkConfig config, Path templateFile, - EnvironmentVariables environmentVariables) { - - Path targetFile = workspacePath.resolve(config.targetFile()); - - XmlMerger xmlMerger = new XmlMerger(this.context); - XmlMergeDocument workspaceDocument = xmlMerger.load(targetFile); - XmlMergeDocument templateDocument = xmlMerger.loadAndResolve(templateFile, environmentVariables); - - Document mergedDocument = xmlMerger.merge(templateDocument, workspaceDocument, false); - - xmlMerger.save(mergedDocument, targetFile); + LOG.warn("No supported build descriptor was found for project import in {}", repositoryPath); } } From 39dbb99bde2bca1aaf7653a0b0ded3236d3c5de0 Mon Sep 17 00:00:00 2001 From: vivu001 Date: Wed, 8 Jul 2026 08:35:33 +0200 Subject: [PATCH 11/21] #1676: Fixed tests --- .../tools/ide/tool/intellij/IntellijTest.java | 36 ++-- .../config/options/jdk.table.xml} | 0 .../workspace/repository/.idea/gradle.xml | 11 -- .../repository/.idea/jdk-extra-java.xml | 32 ---- .../workspace/repository/.idea/misc.xml | 9 - .../intellij/workspace/setup/.gitkeep | 0 .../intellij/workspace/update/.gitkeep | 0 .../intellij/workspace/update/idea.properties | 0 .../.intellij/config/options/jdk.table.xml | 171 ------------------ .../project/workspaces/main/test_mvn/pom.xml | 6 - 10 files changed, 17 insertions(+), 248 deletions(-) rename cli/src/test/resources/ide-projects/intellij/project/settings/intellij/workspace/repository/{.idea/jdk-extra-java.xml => .intellij/config/options/jdk.table.xml} (100%) delete mode 100644 cli/src/test/resources/ide-projects/update/project/settings/intellij/workspace/repository/.idea/gradle.xml delete mode 100644 cli/src/test/resources/ide-projects/update/project/settings/intellij/workspace/repository/.idea/jdk-extra-java.xml delete mode 100644 cli/src/test/resources/ide-projects/update/project/settings/intellij/workspace/repository/.idea/misc.xml delete mode 100644 cli/src/test/resources/ide-projects/update/project/settings/intellij/workspace/setup/.gitkeep delete mode 100644 cli/src/test/resources/ide-projects/update/project/settings/intellij/workspace/update/.gitkeep delete mode 100644 cli/src/test/resources/ide-projects/update/project/settings/intellij/workspace/update/idea.properties delete mode 100644 cli/src/test/resources/ide-projects/update/project/workspaces/main/.intellij/config/options/jdk.table.xml delete mode 100644 cli/src/test/resources/ide-projects/update/project/workspaces/main/test_mvn/pom.xml diff --git a/cli/src/test/java/com/devonfw/tools/ide/tool/intellij/IntellijTest.java b/cli/src/test/java/com/devonfw/tools/ide/tool/intellij/IntellijTest.java index dd7f748420..f8175aae7e 100644 --- a/cli/src/test/java/com/devonfw/tools/ide/tool/intellij/IntellijTest.java +++ b/cli/src/test/java/com/devonfw/tools/ide/tool/intellij/IntellijTest.java @@ -7,7 +7,6 @@ import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.ValueSource; -import com.devonfw.tools.ide.cli.CliException; import com.devonfw.tools.ide.context.AbstractIdeContextTest; import com.devonfw.tools.ide.context.IdeContext; import com.devonfw.tools.ide.context.IdeTestContext; @@ -356,8 +355,7 @@ void testSkipExtraJavaSdkWithReservedName() throws Exception { String jdkTableContent = Files.readString(jdkTable); assertThat(jdkTableContent).doesNotContain("software/extra/java/java"); - assertThat(context).logAtWarning() - .hasMessageContaining("Skipping IntelliJ import for extra java installation 'java': name conflicts with main java installation."); + assertThat(context).logAtWarning().hasNoMessageContaining("software/extra/java/java"); } /** @@ -387,12 +385,12 @@ void testSkipMissingExtraJavaSdkDirectory() throws Exception { assertThat(jdkTableContent).doesNotContain("software/extra/java/client"); assertThat(jdkTableContent).doesNotContain("software/extra/java/process-engine"); assertThat(context).logAtWarning() - .hasMessageContaining("Skipping IntelliJ import for extra java installation"); + .hasMessageContaining("Skipping extra tool installation import to intellij because it is missing at"); } - /** Tests that IntelliJ extra Java SDK import fails with a clear error if the merge template is missing from settings. */ + /** Tests that IntelliJ extra Java SDK import writes jdk.table.xml in the workspace options folder. */ @Test - void testMissingExtraJavaTemplateFails() { + void testMissingExtraJavaTemplateFails() throws Exception { // arrange IdeTestContext context = newContext("intellij"); @@ -401,19 +399,19 @@ void testMissingExtraJavaTemplateFails() { Path extraJavaRoot = context.getSoftwareExtraPath().resolve("java"); context.getFileAccess().mkdirs(extraJavaRoot.resolve("client")); - Path templateFile = context.getSettingsPath() - .resolve("intellij") - .resolve("workspace") - .resolve("repository") - .resolve(".idea") - .resolve("jdk-extra-java.xml"); - context.getFileAccess().delete(templateFile); - - // act / assert - assertThatThrownBy(commandlet::run) - .isInstanceOf(CliException.class) - .hasMessageContaining("Cannot import extra java installation into IntelliJ: template file not found") - .hasMessageContaining("Please do an upstream merge of your settings git repository."); + // act + commandlet.run(); + + // assert + Path jdkTable = context.getWorkspacePath() + .resolve(".intellij") + .resolve("config") + .resolve("options") + .resolve("jdk.table.xml"); + assertThat(jdkTable).exists(); + + String jdkTableContent = Files.readString(jdkTable); + assertThat(jdkTableContent).contains("software/extra/java/client"); } private void checkInstallation(IdeTestContext context) { diff --git a/cli/src/test/resources/ide-projects/intellij/project/settings/intellij/workspace/repository/.idea/jdk-extra-java.xml b/cli/src/test/resources/ide-projects/intellij/project/settings/intellij/workspace/repository/.intellij/config/options/jdk.table.xml similarity index 100% rename from cli/src/test/resources/ide-projects/intellij/project/settings/intellij/workspace/repository/.idea/jdk-extra-java.xml rename to cli/src/test/resources/ide-projects/intellij/project/settings/intellij/workspace/repository/.intellij/config/options/jdk.table.xml diff --git a/cli/src/test/resources/ide-projects/update/project/settings/intellij/workspace/repository/.idea/gradle.xml b/cli/src/test/resources/ide-projects/update/project/settings/intellij/workspace/repository/.idea/gradle.xml deleted file mode 100644 index 8de20d4549..0000000000 --- a/cli/src/test/resources/ide-projects/update/project/settings/intellij/workspace/repository/.idea/gradle.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - diff --git a/cli/src/test/resources/ide-projects/update/project/settings/intellij/workspace/repository/.idea/jdk-extra-java.xml b/cli/src/test/resources/ide-projects/update/project/settings/intellij/workspace/repository/.idea/jdk-extra-java.xml deleted file mode 100644 index 08edcfc49e..0000000000 --- a/cli/src/test/resources/ide-projects/update/project/settings/intellij/workspace/repository/.idea/jdk-extra-java.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/cli/src/test/resources/ide-projects/update/project/settings/intellij/workspace/repository/.idea/misc.xml b/cli/src/test/resources/ide-projects/update/project/settings/intellij/workspace/repository/.idea/misc.xml deleted file mode 100644 index 7516c8018c..0000000000 --- a/cli/src/test/resources/ide-projects/update/project/settings/intellij/workspace/repository/.idea/misc.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - diff --git a/cli/src/test/resources/ide-projects/update/project/settings/intellij/workspace/setup/.gitkeep b/cli/src/test/resources/ide-projects/update/project/settings/intellij/workspace/setup/.gitkeep deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/cli/src/test/resources/ide-projects/update/project/settings/intellij/workspace/update/.gitkeep b/cli/src/test/resources/ide-projects/update/project/settings/intellij/workspace/update/.gitkeep deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/cli/src/test/resources/ide-projects/update/project/settings/intellij/workspace/update/idea.properties b/cli/src/test/resources/ide-projects/update/project/settings/intellij/workspace/update/idea.properties deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/cli/src/test/resources/ide-projects/update/project/workspaces/main/.intellij/config/options/jdk.table.xml b/cli/src/test/resources/ide-projects/update/project/workspaces/main/.intellij/config/options/jdk.table.xml deleted file mode 100644 index 05b39dcf09..0000000000 --- a/cli/src/test/resources/ide-projects/update/project/workspaces/main/.intellij/config/options/jdk.table.xml +++ /dev/null @@ -1,171 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/cli/src/test/resources/ide-projects/update/project/workspaces/main/test_mvn/pom.xml b/cli/src/test/resources/ide-projects/update/project/workspaces/main/test_mvn/pom.xml deleted file mode 100644 index e71f8f1cd8..0000000000 --- a/cli/src/test/resources/ide-projects/update/project/workspaces/main/test_mvn/pom.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - 4.0.0 - ide - From a108c0787de2f42fc588bb99fb0c29ea6005ec8f Mon Sep 17 00:00:00 2001 From: vivu001 Date: Mon, 13 Jul 2026 08:36:27 +0200 Subject: [PATCH 12/21] #1676: Fixed extra JDK sync timing and missing-install handling --- .../ide/commandlet/AbstractUpdateCommandlet.java | 13 +++++++++++++ .../tools/ide/tool/ide/IdeToolCommandlet.java | 9 ++++++++- .../tools/ide/tool/intellij/IntellijTest.java | 1 - 3 files changed, 21 insertions(+), 2 deletions(-) diff --git a/cli/src/main/java/com/devonfw/tools/ide/commandlet/AbstractUpdateCommandlet.java b/cli/src/main/java/com/devonfw/tools/ide/commandlet/AbstractUpdateCommandlet.java index 2874a0ef04..c25ecc097d 100644 --- a/cli/src/main/java/com/devonfw/tools/ide/commandlet/AbstractUpdateCommandlet.java +++ b/cli/src/main/java/com/devonfw/tools/ide/commandlet/AbstractUpdateCommandlet.java @@ -33,6 +33,7 @@ import com.devonfw.tools.ide.tool.extra.ExtraToolInstallation; import com.devonfw.tools.ide.tool.extra.ExtraTools; import com.devonfw.tools.ide.tool.extra.ExtraToolsMapper; +import com.devonfw.tools.ide.tool.ide.IdeToolCommandlet; import com.devonfw.tools.ide.variable.IdeVariables; import com.devonfw.tools.ide.version.VersionIdentifier; @@ -349,6 +350,18 @@ private void doUpdateSoftwareStep(Step step) { List installations = extraTools.getExtraInstallations(tool); this.context.newStep("Install extra version(s) of " + tool).run(() -> installExtraToolInstallations(tool, installations)); } + + // After installing extra tools, synchronize them into all IDE workspaces + List ides = IdeVariables.CREATE_START_SCRIPTS.get(this.context); + if (ides != null) { + for (String ideName : ides) { + ToolCommandlet ideCommandlet = commandletManager.getToolCommandlet(ideName); + if (ideCommandlet instanceof IdeToolCommandlet) { + LOG.info("Synchronizing extra tools into {} workspace", ideName); + ((IdeToolCommandlet) ideCommandlet).synchronizeExtraTools(); + } + } + } } } diff --git a/cli/src/main/java/com/devonfw/tools/ide/tool/ide/IdeToolCommandlet.java b/cli/src/main/java/com/devonfw/tools/ide/tool/ide/IdeToolCommandlet.java index 5acf366c95..0658196f07 100644 --- a/cli/src/main/java/com/devonfw/tools/ide/tool/ide/IdeToolCommandlet.java +++ b/cli/src/main/java/com/devonfw/tools/ide/tool/ide/IdeToolCommandlet.java @@ -82,10 +82,17 @@ public ProcessResult runTool(List args) { @Override public ToolInstallation install(ToolInstallRequest request) { - configureWorkspace(); return super.install(request); } + /** + * Synchronizes extra tool installations into the IDE workspace. + * This is called after extra tools are installed during ide create/update and before launching the IDE. + */ + public void synchronizeExtraTools() { + configureWorkspace(); + } + /** * Configure (initialize or update) the workspace for this IDE using the templates from the settings. */ diff --git a/cli/src/test/java/com/devonfw/tools/ide/tool/intellij/IntellijTest.java b/cli/src/test/java/com/devonfw/tools/ide/tool/intellij/IntellijTest.java index f8175aae7e..def58f9243 100644 --- a/cli/src/test/java/com/devonfw/tools/ide/tool/intellij/IntellijTest.java +++ b/cli/src/test/java/com/devonfw/tools/ide/tool/intellij/IntellijTest.java @@ -418,7 +418,6 @@ private void checkInstallation(IdeTestContext context) { Intellij commandlet = context.getCommandletManager().getCommandlet(Intellij.class); assertThat(commandlet.getInstalledVersion().toString()).isEqualTo("2023.3.3"); - assertThat(context.getWorkspacePath().resolve("idea.properties")).exists(); assertThat(context).log().hasEntries( new IdeLogEntry(IdeLogLevel.SUCCESS, "Successfully installed java in version 17.0.10_7", true), new IdeLogEntry(IdeLogLevel.SUCCESS, "Successfully installed intellij in version 2023.3.3", true)); From b7ec91b8dadcf2a51504a6c69bb535dba199d153 Mon Sep 17 00:00:00 2001 From: vivu001 Date: Mon, 13 Jul 2026 08:41:55 +0200 Subject: [PATCH 13/21] #1676: Call configureWorkspace() after installing tools so IntelliJ sees available SDKs --- .../devonfw/tools/ide/tool/ide/IdeaBasedIdeToolCommandlet.java | 1 + 1 file changed, 1 insertion(+) diff --git a/cli/src/main/java/com/devonfw/tools/ide/tool/ide/IdeaBasedIdeToolCommandlet.java b/cli/src/main/java/com/devonfw/tools/ide/tool/ide/IdeaBasedIdeToolCommandlet.java index f80d00a4f3..17a8f3e670 100644 --- a/cli/src/main/java/com/devonfw/tools/ide/tool/ide/IdeaBasedIdeToolCommandlet.java +++ b/cli/src/main/java/com/devonfw/tools/ide/tool/ide/IdeaBasedIdeToolCommandlet.java @@ -84,6 +84,7 @@ protected String getIdeProductPrefix() { public ProcessResult runTool(ProcessContext pc, ProcessMode processMode, List args) { if (!args.contains("installPlugins")) { args.add(this.context.getWorkspacePath().toString()); + configureWorkspace(); } String variableName = getName().toUpperCase(Locale.ROOT).replace("-", "_") + VM_ARGS_ENV_SUFFIX; From 0cf86fb6c7b91551f1b95c8e5c61d93469345dae Mon Sep 17 00:00:00 2001 From: vivu001 Date: Mon, 13 Jul 2026 09:09:14 +0200 Subject: [PATCH 14/21] #1676: Added GraalVM reflection metadata for dynamic commandlet lookup --- .../ide-cli/reflect-config.json | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/cli/src/main/resources/META-INF/native-image/com.devonfw.tools.IDEasy/ide-cli/reflect-config.json b/cli/src/main/resources/META-INF/native-image/com.devonfw.tools.IDEasy/ide-cli/reflect-config.json index 5eb3b81a7d..cf0d9a2454 100644 --- a/cli/src/main/resources/META-INF/native-image/com.devonfw.tools.IDEasy/ide-cli/reflect-config.json +++ b/cli/src/main/resources/META-INF/native-image/com.devonfw.tools.IDEasy/ide-cli/reflect-config.json @@ -58,5 +58,19 @@ "allPublicConstructors": true, "allDeclaredFields": false, "allDeclaredMethods": false + }, + { + "name": "com.devonfw.tools.ide.tool.ide.IdeToolCommandlet", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredFields": true, + "allDeclaredMethods": true + }, + { + "name": "com.devonfw.tools.ide.tool.intellij.Intellij", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredFields": true, + "allDeclaredMethods": true } ] From 507c37ededebab846c644e723b811737c2722ddd Mon Sep 17 00:00:00 2001 From: ducvu Date: Mon, 13 Jul 2026 10:09:40 +0200 Subject: [PATCH 15/21] #1676: Updated CHANGELOG.adoc --- CHANGELOG.adoc | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.adoc b/CHANGELOG.adoc index 4c4cc93996..296fd52ea6 100644 --- a/CHANGELOG.adoc +++ b/CHANGELOG.adoc @@ -6,6 +6,7 @@ This file documents all notable changes to https://github.com/devonfw/IDEasy[IDE Release with new features and bugfixes: +* https://github.com/devonfw/IDEasy/issues/1676[#1676]: Import extra sdks automatically into ide The full list of changes for this release can be found in https://github.com/devonfw/IDEasy/milestone/47?closed=1[milestone 2026.07.002]. From 2c59544c4bf6858f8013064f0b7826efbf3deb3f Mon Sep 17 00:00:00 2001 From: vivu001 Date: Mon, 20 Jul 2026 17:14:10 +0200 Subject: [PATCH 16/21] #1676: removed synchronizeExtraTools() --- .../tools/ide/commandlet/AbstractUpdateCommandlet.java | 2 +- .../com/devonfw/tools/ide/tool/eclipse/Eclipse.java | 2 +- .../devonfw/tools/ide/tool/ide/IdeToolCommandlet.java | 10 +--------- .../tools/ide/tool/ide/IdeToolDummyCommandletTest.java | 2 +- 4 files changed, 4 insertions(+), 12 deletions(-) diff --git a/cli/src/main/java/com/devonfw/tools/ide/commandlet/AbstractUpdateCommandlet.java b/cli/src/main/java/com/devonfw/tools/ide/commandlet/AbstractUpdateCommandlet.java index c25ecc097d..614771ee18 100644 --- a/cli/src/main/java/com/devonfw/tools/ide/commandlet/AbstractUpdateCommandlet.java +++ b/cli/src/main/java/com/devonfw/tools/ide/commandlet/AbstractUpdateCommandlet.java @@ -358,7 +358,7 @@ private void doUpdateSoftwareStep(Step step) { ToolCommandlet ideCommandlet = commandletManager.getToolCommandlet(ideName); if (ideCommandlet instanceof IdeToolCommandlet) { LOG.info("Synchronizing extra tools into {} workspace", ideName); - ((IdeToolCommandlet) ideCommandlet).synchronizeExtraTools(); + ((IdeToolCommandlet) ideCommandlet).configureWorkspace(); } } } diff --git a/cli/src/main/java/com/devonfw/tools/ide/tool/eclipse/Eclipse.java b/cli/src/main/java/com/devonfw/tools/ide/tool/eclipse/Eclipse.java index 6b5ffdf5c1..77d426fadf 100644 --- a/cli/src/main/java/com/devonfw/tools/ide/tool/eclipse/Eclipse.java +++ b/cli/src/main/java/com/devonfw/tools/ide/tool/eclipse/Eclipse.java @@ -109,7 +109,7 @@ public boolean installPlugin(ToolPluginDescriptor plugin, Step step, ProcessCont } @Override - protected void configureWorkspace() { + public void configureWorkspace() { Path lockfile = this.context.getWorkspacePath().resolve(".metadata/.lock"); if (isLocked(lockfile)) { diff --git a/cli/src/main/java/com/devonfw/tools/ide/tool/ide/IdeToolCommandlet.java b/cli/src/main/java/com/devonfw/tools/ide/tool/ide/IdeToolCommandlet.java index 0658196f07..64dee7dcb8 100644 --- a/cli/src/main/java/com/devonfw/tools/ide/tool/ide/IdeToolCommandlet.java +++ b/cli/src/main/java/com/devonfw/tools/ide/tool/ide/IdeToolCommandlet.java @@ -85,18 +85,10 @@ public ToolInstallation install(ToolInstallRequest request) { return super.install(request); } - /** - * Synchronizes extra tool installations into the IDE workspace. - * This is called after extra tools are installed during ide create/update and before launching the IDE. - */ - public void synchronizeExtraTools() { - configureWorkspace(); - } - /** * Configure (initialize or update) the workspace for this IDE using the templates from the settings. */ - protected void configureWorkspace() { + public void configureWorkspace() { FileAccess fileAccess = this.context.getFileAccess(); Path workspaceFolder = this.context.getWorkspacePath(); diff --git a/cli/src/test/java/com/devonfw/tools/ide/tool/ide/IdeToolDummyCommandletTest.java b/cli/src/test/java/com/devonfw/tools/ide/tool/ide/IdeToolDummyCommandletTest.java index 5e957cf443..9fceae9930 100644 --- a/cli/src/test/java/com/devonfw/tools/ide/tool/ide/IdeToolDummyCommandletTest.java +++ b/cli/src/test/java/com/devonfw/tools/ide/tool/ide/IdeToolDummyCommandletTest.java @@ -69,7 +69,7 @@ public static class IdeToolDummyCommandlet extends IdeToolCommandlet { } @Override - protected void configureWorkspace() { + public void configureWorkspace() { // disable workspace configuration since we have no IDE_HOME and therefore no settings } From eff2e29a8a104c77adbc720cb37eb3bb9fc79ee9 Mon Sep 17 00:00:00 2001 From: vivu001 Date: Mon, 20 Jul 2026 17:14:53 +0200 Subject: [PATCH 17/21] #1676: replaced Exception with Log warning --- .../com/devonfw/tools/ide/tool/extra/ExtraTools.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/cli/src/main/java/com/devonfw/tools/ide/tool/extra/ExtraTools.java b/cli/src/main/java/com/devonfw/tools/ide/tool/extra/ExtraTools.java index a32e9d0c55..e419459b37 100644 --- a/cli/src/main/java/com/devonfw/tools/ide/tool/extra/ExtraTools.java +++ b/cli/src/main/java/com/devonfw/tools/ide/tool/extra/ExtraTools.java @@ -8,6 +8,9 @@ import java.util.Map.Entry; import java.util.Set; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import com.devonfw.tools.ide.json.JsonObject; /** @@ -20,6 +23,8 @@ public class ExtraTools implements JsonObject { private final Map> tool2installationsMap; + private static final Logger LOG = LoggerFactory.getLogger(ExtraTools.class); + /** * The constructor. */ @@ -52,9 +57,9 @@ public List getExtraInstallations(String tool) { public void addExtraInstallations(String tool, ExtraToolInstallation extraInstallation) { if ((tool != null) && (extraInstallation != null) && tool.equalsIgnoreCase(extraInstallation.name())) { - throw new IllegalArgumentException( - "Invalid extra installation name '" + extraInstallation.name() + "' for tool '" + tool - + "': the extra installation name must not be the same as the tool name."); + LOG.warn("Invalid extra installation name '{}' for tool '{}': the extra installation name must not be the same as the tool name.", + extraInstallation.name(), tool); + return; } List list = this.tool2installationsMap.computeIfAbsent(tool, k -> new ArrayList<>()); From a1ecaba1ba972617a1c143b87cef314482be5ec3 Mon Sep 17 00:00:00 2001 From: vivu001 Date: Mon, 20 Jul 2026 17:36:23 +0200 Subject: [PATCH 18/21] #1676: replaced hardcoded repository folder literal with constant --- .../devonfw/tools/ide/context/IdeContext.java | 3 +++ .../git/repository/RepositoryCommandlet.java | 4 +-- .../tools/ide/tool/ide/IdeToolCommandlet.java | 2 +- .../tools/ide/variable/IdeVariables.java | 2 +- .../tools/ide/cli/CliAdvancedParsingTest.java | 3 ++- .../commandlet/RepositoryCommandletTest.java | 26 +++++++++---------- .../ide/commandlet/UpdateCommandletTest.java | 2 +- .../ide/context/AbstractIdeContextTest.java | 2 +- .../tools/ide/context/MvnRepositoryMock.java | 19 +++++++++----- .../tools/ide/context/NpmRepositoryMock.java | 2 +- .../tools/ide/context/PipRepositoryMock.java | 2 +- .../tools/ide/context/UvRepositoryMock.java | 2 +- .../environment/EnvironmentVariablesTest.java | 7 ++--- .../tool/androidstudio/AndroidStudioTest.java | 3 ++- .../devonfw/tools/ide/tool/java/JavaTest.java | 3 ++- .../devonfw/tools/ide/tool/mvn/MvnTest.java | 5 ++-- 16 files changed, 50 insertions(+), 37 deletions(-) diff --git a/cli/src/main/java/com/devonfw/tools/ide/context/IdeContext.java b/cli/src/main/java/com/devonfw/tools/ide/context/IdeContext.java index e8279c7177..b56cffc371 100644 --- a/cli/src/main/java/com/devonfw/tools/ide/context/IdeContext.java +++ b/cli/src/main/java/com/devonfw/tools/ide/context/IdeContext.java @@ -122,6 +122,9 @@ public interface IdeContext extends IdeStartContext { /** The name of the bin folder where executable files are found by default. */ String FOLDER_BIN = "bin"; + /** The name of the repository folder used to store repository data */ + String FOLDER_REPOSITORY = "repository"; + /** The name of the repositories folder where properties files are stores for each repository */ String FOLDER_REPOSITORIES = "repositories"; diff --git a/cli/src/main/java/com/devonfw/tools/ide/git/repository/RepositoryCommandlet.java b/cli/src/main/java/com/devonfw/tools/ide/git/repository/RepositoryCommandlet.java index 1b8dd0b611..9004c7779b 100644 --- a/cli/src/main/java/com/devonfw/tools/ide/git/repository/RepositoryCommandlet.java +++ b/cli/src/main/java/com/devonfw/tools/ide/git/repository/RepositoryCommandlet.java @@ -41,13 +41,13 @@ public RepositoryCommandlet(IdeContext context) { super(context); addKeyword(getName()); addKeyword("setup"); - this.repository = add(new RepositoryProperty("", false, "repository")); + this.repository = add(new RepositoryProperty("", false, IdeContext.FOLDER_REPOSITORY)); } @Override public String getName() { - return "repository"; + return IdeContext.FOLDER_REPOSITORY; } @Override diff --git a/cli/src/main/java/com/devonfw/tools/ide/tool/ide/IdeToolCommandlet.java b/cli/src/main/java/com/devonfw/tools/ide/tool/ide/IdeToolCommandlet.java index 64dee7dcb8..a1ec03e89d 100644 --- a/cli/src/main/java/com/devonfw/tools/ide/tool/ide/IdeToolCommandlet.java +++ b/cli/src/main/java/com/devonfw/tools/ide/tool/ide/IdeToolCommandlet.java @@ -194,7 +194,7 @@ private void synchronizeExtraToolInstallation(String sdk, Set templatePath for (Path templatePath : templatePaths) { Path workspaceFile = this.context.getWorkspacePath().resolve(templatePath); Path templateFile = this.context.getSettingsPath().resolve(this.tool).resolve(IdeContext.FOLDER_WORKSPACE) - .resolve("repository") // TODO: create and use constant IdeContext.FOLDER_REPOSITORY - this string literal exists at least 16 times in our code base + .resolve(IdeContext.FOLDER_REPOSITORY) .resolve(templatePath); if (Files.exists(templateFile)) { for (ExtraToolInstallation extraInstallation : extraInstallations) { diff --git a/cli/src/main/java/com/devonfw/tools/ide/variable/IdeVariables.java b/cli/src/main/java/com/devonfw/tools/ide/variable/IdeVariables.java index 83809e1a2b..3fbb48c61b 100644 --- a/cli/src/main/java/com/devonfw/tools/ide/variable/IdeVariables.java +++ b/cli/src/main/java/com/devonfw/tools/ide/variable/IdeVariables.java @@ -163,6 +163,6 @@ private static Path getMavenRepositoryPath(IdeContext context) { if (mvnConf == null) { return null; } - return mvnConf.resolve("repository"); + return mvnConf.resolve(IdeContext.FOLDER_REPOSITORY); } } diff --git a/cli/src/test/java/com/devonfw/tools/ide/cli/CliAdvancedParsingTest.java b/cli/src/test/java/com/devonfw/tools/ide/cli/CliAdvancedParsingTest.java index 8f2966a717..3b915a75ce 100644 --- a/cli/src/test/java/com/devonfw/tools/ide/cli/CliAdvancedParsingTest.java +++ b/cli/src/test/java/com/devonfw/tools/ide/cli/CliAdvancedParsingTest.java @@ -3,6 +3,7 @@ import org.junit.jupiter.api.Test; import com.devonfw.tools.ide.context.AbstractIdeContextTest; +import com.devonfw.tools.ide.context.IdeContext; import com.devonfw.tools.ide.context.IdeTestContext; /** @@ -38,7 +39,7 @@ void testRunRepositorySetupWithoutArgumentWillSucceed() { // arrange IdeTestContext context = newContext(PROJECT_MVN); - CliArguments args = new CliArguments("repository", "setup"); + CliArguments args = new CliArguments(IdeContext.FOLDER_REPOSITORY, "setup"); args.next(); // act int success = context.run(args); diff --git a/cli/src/test/java/com/devonfw/tools/ide/commandlet/RepositoryCommandletTest.java b/cli/src/test/java/com/devonfw/tools/ide/commandlet/RepositoryCommandletTest.java index 47826ef63e..310c73040b 100644 --- a/cli/src/test/java/com/devonfw/tools/ide/commandlet/RepositoryCommandletTest.java +++ b/cli/src/test/java/com/devonfw/tools/ide/commandlet/RepositoryCommandletTest.java @@ -18,8 +18,6 @@ */ class RepositoryCommandletTest extends AbstractIdeContextTest { - private static final String PROJECT_REPOSITORY = "repository"; - private static final String PROPERTIES_FILE = "test.properties"; private static final String TEST_WORKSPACE = "test-workspace"; private static final String TEST_BRANCH = "test-branch"; @@ -62,7 +60,7 @@ private void saveProperties(IdeTestContext context, Properties properties, Strin void testSetupSpecificRepository() { // arrange - IdeTestContext context = newContext(PROJECT_REPOSITORY); + IdeTestContext context = newContext(IdeContext.FOLDER_REPOSITORY); Properties properties = createDefaultProperties(); RepositoryCommandlet rc = context.getCommandletManager().getCommandlet(RepositoryCommandlet.class); saveProperties(context, properties); @@ -78,7 +76,7 @@ void testSetupSpecificRepository() { void testSetupAllRepositoriesInactive() { // arrange - IdeTestContext context = newContext(PROJECT_REPOSITORY); + IdeTestContext context = newContext(IdeContext.FOLDER_REPOSITORY); Properties properties = createDefaultProperties(); RepositoryCommandlet rc = context.getCommandletManager().getCommandlet(RepositoryCommandlet.class); saveProperties(context, properties); @@ -92,7 +90,7 @@ void testSetupAllRepositoriesInactive() { void testSetupSpecificRepositoryWithoutPath() { // arrange - IdeTestContext context = newContext(PROJECT_REPOSITORY); + IdeTestContext context = newContext(IdeContext.FOLDER_REPOSITORY); Properties properties = createDefaultProperties(); properties.setProperty("path", ""); RepositoryCommandlet rc = context.getCommandletManager().getCommandlet(RepositoryCommandlet.class); @@ -108,7 +106,7 @@ void testSetupSpecificRepositoryWithoutPath() { void testSetupSpecificRepositoryFailsWithoutGitUrl() { // arrange - IdeTestContext context = newContext(PROJECT_REPOSITORY); + IdeTestContext context = newContext(IdeContext.FOLDER_REPOSITORY); Properties properties = createDefaultProperties(); properties.setProperty("git_url", ""); Path repositoryTestProperties = context.getSettingsPath().resolve(IdeContext.FOLDER_REPOSITORIES).resolve(PROPERTIES_FILE); @@ -127,7 +125,7 @@ void testSetupSpecificRepositoryFailsWithoutGitUrl() { void testRunNoRepositoriesOrProjectsFolderFound() { // arrange - IdeTestContext context = newContext(PROJECT_REPOSITORY); + IdeTestContext context = newContext(IdeContext.FOLDER_REPOSITORY); RepositoryCommandlet rc = context.getCommandletManager().getCommandlet(RepositoryCommandlet.class); Path repositoriesPath = context.getSettingsPath().resolve(IdeContext.FOLDER_REPOSITORIES); context.getFileAccess().delete(repositoriesPath); @@ -141,7 +139,7 @@ void testRunNoRepositoriesOrProjectsFolderFound() { void testSetupSpecificRepositoryWithForceOption() { // arrange - IdeTestContext context = newContext(PROJECT_REPOSITORY); + IdeTestContext context = newContext(IdeContext.FOLDER_REPOSITORY); Properties properties = createDefaultProperties(); context.getStartContext().setForceRepositories(true); RepositoryCommandlet rc = context.getCommandletManager().getCommandlet(RepositoryCommandlet.class); @@ -162,7 +160,7 @@ void testSetupSpecificRepositoryWithForceOption() { void testSetupRepositoryWithMultipleWorkspaces() { // arrange - IdeTestContext context = newContext(PROJECT_REPOSITORY); + IdeTestContext context = newContext(IdeContext.FOLDER_REPOSITORY); Properties properties = createDefaultProperties(); String workspace1 = "workspace1"; String workspace2 = "workspace2"; @@ -185,7 +183,7 @@ void testSetupRepositoryWithAllWorkspacesAndLinks() { // arrange String expectedSkillContent = "# dummy for testing link feature with AI use-case\n"; - IdeTestContext context = newContext(PROJECT_REPOSITORY); + IdeTestContext context = newContext(IdeContext.FOLDER_REPOSITORY); context.setGitContext(new GitContextImplMock(context, context.getIdeHome().getParent().resolve("repository/ai-repo"))); Properties properties = createDefaultProperties(); String workspace1 = "workspace1"; @@ -221,7 +219,7 @@ void testSetupVirtualSettingsRepositoryWithoutGitUrlWithLinks() { // arrange String expectedSkillContent = "# dummy for testing virtual settings repository link feature\n"; - IdeTestContext context = newContext(PROJECT_REPOSITORY); + IdeTestContext context = newContext(IdeContext.FOLDER_REPOSITORY); FileAccess fileAccess = context.getFileAccess(); Path settingsAiPath = context.getSettingsPath().resolve("ai"); fileAccess.mkdirs(settingsAiPath); @@ -246,7 +244,7 @@ void testSetupVirtualSettingsRepositoryWithoutGitUrlWithLinks() { void testSetupRepositoryWithMultipleWorkspacesWithSpaces() { // arrange - IdeTestContext context = newContext(PROJECT_REPOSITORY); + IdeTestContext context = newContext(IdeContext.FOLDER_REPOSITORY); Properties properties = createDefaultProperties(); String workspace1 = "workspace1"; String workspace2 = "workspace2"; @@ -270,7 +268,7 @@ void testSetupRepositoryWithMultipleWorkspacesWithSpaces() { void testSetupRepositoryWithEmptyWorkspaceDefaultsToMain() { // arrange - IdeTestContext context = newContext(PROJECT_REPOSITORY); + IdeTestContext context = newContext(IdeContext.FOLDER_REPOSITORY); Properties properties = createDefaultProperties(); properties.setProperty("workspace", ""); RepositoryCommandlet rc = context.getCommandletManager().getCommandlet(RepositoryCommandlet.class); @@ -289,7 +287,7 @@ void testSetupRepositoryWithEmptyWorkspaceDefaultsToMain() { void testSetupRepositoryWithoutActiveProperty() { // arrange - IdeTestContext context = newContext(PROJECT_REPOSITORY); + IdeTestContext context = newContext(IdeContext.FOLDER_REPOSITORY); Properties properties = createDefaultProperties(); properties.remove("active"); // Remove the active property to test default behavior RepositoryCommandlet rc = context.getCommandletManager().getCommandlet(RepositoryCommandlet.class); diff --git a/cli/src/test/java/com/devonfw/tools/ide/commandlet/UpdateCommandletTest.java b/cli/src/test/java/com/devonfw/tools/ide/commandlet/UpdateCommandletTest.java index 35232bb59a..626d0b0aa4 100644 --- a/cli/src/test/java/com/devonfw/tools/ide/commandlet/UpdateCommandletTest.java +++ b/cli/src/test/java/com/devonfw/tools/ide/commandlet/UpdateCommandletTest.java @@ -118,7 +118,7 @@ void testRunUpdateSoftwareDoesNotFailOnFailedSoftwareInstallations() { IdeTestContext context = newContext(PROJECT_UPDATE); Path javaRepository = context.getToolRepositoryPath().resolve("default").resolve("java"); context.getFileAccess().delete(javaRepository); - Path javaDownload = context.getIdeRoot().resolve("repository").resolve("java"); + Path javaDownload = context.getIdeRoot().resolve(IdeContext.FOLDER_REPOSITORY).resolve("java"); context.getFileAccess().delete(javaDownload); UpdateCommandlet update = context.getCommandletManager().getCommandlet(UpdateCommandlet.class); diff --git a/cli/src/test/java/com/devonfw/tools/ide/context/AbstractIdeContextTest.java b/cli/src/test/java/com/devonfw/tools/ide/context/AbstractIdeContextTest.java index dcb5b626d7..dede9b9b53 100644 --- a/cli/src/test/java/com/devonfw/tools/ide/context/AbstractIdeContextTest.java +++ b/cli/src/test/java/com/devonfw/tools/ide/context/AbstractIdeContextTest.java @@ -132,7 +132,7 @@ protected static IdeTestContext newContext(String testProject, String projectPat ToolRepositoryMock toolRepository = null; IdeTestContext context = new IdeTestContext(userDir, logLevel, wmRuntimeInfo); - Path repositoryFolder = ideRoot.resolve("repository"); + Path repositoryFolder = ideRoot.resolve(IdeContext.FOLDER_REPOSITORY); if (Files.isDirectory(repositoryFolder)) { toolRepository = new ToolRepositoryMock(context, repositoryFolder, wmRuntimeInfo); context.setDefaultToolRepository(toolRepository); diff --git a/cli/src/test/java/com/devonfw/tools/ide/context/MvnRepositoryMock.java b/cli/src/test/java/com/devonfw/tools/ide/context/MvnRepositoryMock.java index 071f69b0aa..09c00c8e91 100644 --- a/cli/src/test/java/com/devonfw/tools/ide/context/MvnRepositoryMock.java +++ b/cli/src/test/java/com/devonfw/tools/ide/context/MvnRepositoryMock.java @@ -33,8 +33,7 @@ public class MvnRepositoryMock extends MvnRepository { private final WireMockRuntimeInfo wmRuntimeInfo; /** - * Maps artifact download path to its pre-computed SHA-256 checksum. - * Populated when the mock archive is compressed, queried during verification. + * Maps artifact download path to its pre-computed SHA-256 checksum. Populated when the mock archive is compressed, queried during verification. */ private final Map checksumByPath = new HashMap<>(); @@ -66,7 +65,8 @@ public Path download(MvnArtifactMetadata metadata) { String path = artifact.getDownloadUrl(); path = path.replace(MvnRepositoryMock.MAVEN_CENTRAL, ""); String url = this.wmRuntimeInfo.getHttpBaseUrl() + path; - Path archiveFolder = this.context.getIdeRoot().resolve("repository").resolve("mvn").resolve(artifact.getGroupId() + "/" + artifact.getArtifactId()); + Path archiveFolder = this.context.getIdeRoot().resolve(IdeContext.FOLDER_REPOSITORY).resolve("mvn") + .resolve(artifact.getGroupId() + "/" + artifact.getArtifactId()); try (ByteArrayOutputStream baos = new ByteArrayOutputStream(1024)) { this.context.getFileAccess().compress(archiveFolder, baos, artifact.getFilename()); byte[] body = baos.toByteArray(); @@ -107,8 +107,15 @@ private record SingleChecksumWrapper(String sha256) implements UrlChecksums { @Override public Iterator iterator() { UrlGenericChecksum entry = new UrlGenericChecksum() { - @Override public String getChecksum() { return sha256; } - @Override public String getHashAlgorithm() { return "SHA-256"; } + @Override + public String getChecksum() { + return sha256; + } + + @Override + public String getHashAlgorithm() { + return "SHA-256"; + } }; return Collections.singletonList(entry).iterator(); } @@ -128,7 +135,7 @@ private void mockMvnMetadataResponses(WireMockRuntimeInfo wireMockRuntimeInfo) { if (parent == null) { return; } - Path mvnRoot = parent.resolve("repository").resolve("mvn"); + Path mvnRoot = parent.resolve(IdeContext.FOLDER_REPOSITORY).resolve("mvn"); if (!Files.exists(mvnRoot)) { return; } diff --git a/cli/src/test/java/com/devonfw/tools/ide/context/NpmRepositoryMock.java b/cli/src/test/java/com/devonfw/tools/ide/context/NpmRepositoryMock.java index 8f2b485207..190c031069 100644 --- a/cli/src/test/java/com/devonfw/tools/ide/context/NpmRepositoryMock.java +++ b/cli/src/test/java/com/devonfw/tools/ide/context/NpmRepositoryMock.java @@ -48,7 +48,7 @@ public String getRegistryUrl() { private void mockNpmPackageResponses(WireMockRuntimeInfo wireMockRuntimeInfo) { Path npmRoot = this.context.getIdeHome() .getParent() - .resolve("repository") + .resolve(IdeContext.FOLDER_REPOSITORY) .resolve("npmjs"); if (Files.isDirectory(npmRoot)) { diff --git a/cli/src/test/java/com/devonfw/tools/ide/context/PipRepositoryMock.java b/cli/src/test/java/com/devonfw/tools/ide/context/PipRepositoryMock.java index 6497f99b3b..9f0d5f90ef 100644 --- a/cli/src/test/java/com/devonfw/tools/ide/context/PipRepositoryMock.java +++ b/cli/src/test/java/com/devonfw/tools/ide/context/PipRepositoryMock.java @@ -48,7 +48,7 @@ public String getRegistryUrl() { private void mockPypiPackageResponses(WireMockRuntimeInfo wireMockRuntimeInfo) { Path pypiRoot = this.context.getIdeHome() .getParent() - .resolve("repository") + .resolve(IdeContext.FOLDER_REPOSITORY) .resolve("pypi"); if (!Files.isDirectory(pypiRoot)) { diff --git a/cli/src/test/java/com/devonfw/tools/ide/context/UvRepositoryMock.java b/cli/src/test/java/com/devonfw/tools/ide/context/UvRepositoryMock.java index 95245a340c..a586a762fb 100644 --- a/cli/src/test/java/com/devonfw/tools/ide/context/UvRepositoryMock.java +++ b/cli/src/test/java/com/devonfw/tools/ide/context/UvRepositoryMock.java @@ -44,7 +44,7 @@ protected String getRegistryUrl() { * @param wireMockRuntimeInfo the {@link WireMockRuntimeInfo} providing the base URL. */ private void mockPypiPackageResponses(WireMockRuntimeInfo wireMockRuntimeInfo) { - Path pypiRoot = this.context.getIdeHome().getParent().resolve("repository").resolve("pypi"); + Path pypiRoot = this.context.getIdeHome().getParent().resolve(IdeContext.FOLDER_REPOSITORY).resolve("pypi"); if (!Files.isDirectory(pypiRoot)) { return; } diff --git a/cli/src/test/java/com/devonfw/tools/ide/environment/EnvironmentVariablesTest.java b/cli/src/test/java/com/devonfw/tools/ide/environment/EnvironmentVariablesTest.java index 98619cb78f..2542b7a0fb 100644 --- a/cli/src/test/java/com/devonfw/tools/ide/environment/EnvironmentVariablesTest.java +++ b/cli/src/test/java/com/devonfw/tools/ide/environment/EnvironmentVariablesTest.java @@ -5,6 +5,7 @@ import org.junit.jupiter.api.Test; import com.devonfw.tools.ide.context.AbstractIdeContextTest; +import com.devonfw.tools.ide.context.IdeContext; import com.devonfw.tools.ide.context.IdeTestContext; import com.devonfw.tools.ide.tool.mvn.Mvn; import com.devonfw.tools.ide.variable.IdeVariables; @@ -98,7 +99,7 @@ void testSpecificEnvironmentVariablesNotInheritedFromOtherProject() { assertThat(mavenArgs).isEqualTo("-s " + context.getConfPath().resolve(Mvn.MVN_CONFIG_FOLDER).resolve(Mvn.SETTINGS_FILE)); assertThat(javaHome).isNotEqualTo("/usr/share/java"); assertThat(npmVersion).isNull(); - assertThat(m2Repo).isEqualTo(context.getUserHome().resolve(Mvn.MVN_CONFIG_LEGACY_FOLDER).resolve("repository")); + assertThat(m2Repo).isEqualTo(context.getUserHome().resolve(Mvn.MVN_CONFIG_LEGACY_FOLDER).resolve(IdeContext.FOLDER_REPOSITORY)); assertThat(otherVariable).isEqualTo("other value"); } @@ -131,8 +132,8 @@ void testUserDefinedMavenArgsIsMergedWithIdeasyDefaults() { } /** - * Test that IDEasy's {@code -s} and {@code -Dsettings.security=} arguments override any user-provided ones - * and that unrelated user arguments are correctly appended. + * Test that IDEasy's {@code -s} and {@code -Dsettings.security=} arguments override any user-provided ones and that unrelated user arguments are correctly + * appended. */ @Test void testMergeMavenArgsWithDefault() { diff --git a/cli/src/test/java/com/devonfw/tools/ide/tool/androidstudio/AndroidStudioTest.java b/cli/src/test/java/com/devonfw/tools/ide/tool/androidstudio/AndroidStudioTest.java index cb103a2cc2..0bb8897344 100644 --- a/cli/src/test/java/com/devonfw/tools/ide/tool/androidstudio/AndroidStudioTest.java +++ b/cli/src/test/java/com/devonfw/tools/ide/tool/androidstudio/AndroidStudioTest.java @@ -14,6 +14,7 @@ import org.junit.jupiter.params.provider.ValueSource; import com.devonfw.tools.ide.context.AbstractIdeContextTest; +import com.devonfw.tools.ide.context.IdeContext; import com.devonfw.tools.ide.context.IdeTestContext; import com.devonfw.tools.ide.log.IdeLogEntry; import com.devonfw.tools.ide.log.IdeLogLevel; @@ -125,7 +126,7 @@ private void setupMockedPlugin(WireMockRuntimeInfo wmRuntimeInfo) throws IOExcep Files.writeString(this.context.getSettingsPath().resolve("android-studio").resolve("plugins").resolve("MockedPlugin.properties"), content); - Path mockedPlugin = this.context.getIdeRoot().resolve("repository").resolve(MOCKED_PLUGIN_JAR); + Path mockedPlugin = this.context.getIdeRoot().resolve(IdeContext.FOLDER_REPOSITORY).resolve(MOCKED_PLUGIN_JAR); byte[] contentBytes = Files.readAllBytes(mockedPlugin); int contentLength = contentBytes.length; diff --git a/cli/src/test/java/com/devonfw/tools/ide/tool/java/JavaTest.java b/cli/src/test/java/com/devonfw/tools/ide/tool/java/JavaTest.java index 3e01cd3693..f0dc50f332 100644 --- a/cli/src/test/java/com/devonfw/tools/ide/tool/java/JavaTest.java +++ b/cli/src/test/java/com/devonfw/tools/ide/tool/java/JavaTest.java @@ -9,6 +9,7 @@ import org.junit.jupiter.api.Test; import com.devonfw.tools.ide.context.AbstractIdeContextTest; +import com.devonfw.tools.ide.context.IdeContext; import com.devonfw.tools.ide.context.IdeTestContext; import com.github.tomakehurst.wiremock.junit5.WireMockRuntimeInfo; import com.github.tomakehurst.wiremock.junit5.WireMockTest; @@ -47,7 +48,7 @@ void testJavaInstallAndRun(WireMockRuntimeInfo wmRuntimeInfo) { private static void createFakedSrcJar(IdeTestContext context) { // create large dummy src.zip file to reproduce bug #1437 condition - Path fakedJavaLibDir = context.getIdeRoot().resolve("repository").resolve("java").resolve("java").resolve("default").resolve("lib"); + Path fakedJavaLibDir = context.getIdeRoot().resolve(IdeContext.FOLDER_REPOSITORY).resolve("java").resolve("java").resolve("default").resolve("lib"); context.getFileAccess().mkdirs(fakedJavaLibDir); Path srcZip = fakedJavaLibDir.resolve("src.zip"); Random random = new Random(1); diff --git a/cli/src/test/java/com/devonfw/tools/ide/tool/mvn/MvnTest.java b/cli/src/test/java/com/devonfw/tools/ide/tool/mvn/MvnTest.java index 7cf8e2d121..df94455172 100644 --- a/cli/src/test/java/com/devonfw/tools/ide/tool/mvn/MvnTest.java +++ b/cli/src/test/java/com/devonfw/tools/ide/tool/mvn/MvnTest.java @@ -11,6 +11,7 @@ import org.junit.jupiter.api.Test; import com.devonfw.tools.ide.context.AbstractIdeContextTest; +import com.devonfw.tools.ide.context.IdeContext; import com.devonfw.tools.ide.context.IdeTestContext; import com.devonfw.tools.ide.io.FileAccess; import com.devonfw.tools.ide.variable.IdeVariables; @@ -107,7 +108,7 @@ private void checkInstallation(IdeTestContext context) throws IOException { Path settingsFile = context.getConfPath().resolve(Mvn.MVN_CONFIG_FOLDER).resolve(Mvn.SETTINGS_FILE); assertThat(settingsFile).exists(); - assertFileContent(settingsFile, List.of("${env.M2_REPO}", "repository", "testLogin", "testPassword")); + assertFileContent(settingsFile, List.of("${env.M2_REPO}", IdeContext.FOLDER_REPOSITORY, "testLogin", "testPassword")); Path settingsSecurityFile = context.getConfPath().resolve(Mvn.MVN_CONFIG_FOLDER).resolve(Mvn.SETTINGS_SECURITY_FILE); assertThat(settingsSecurityFile).exists(); @@ -125,7 +126,7 @@ void testMavenRepositoryPathFallsBackToUserHome() { String path = "project/workspaces"; // act IdeTestContext context = newContext(PROJECT_MVN, path, false); - Path mavenRepository = context.getUserHome().resolve(".m2").resolve("repository"); + Path mavenRepository = context.getUserHome().resolve(".m2").resolve(IdeContext.FOLDER_REPOSITORY); // assert assertThat(IdeVariables.M2_REPO.get(context)).isEqualTo(mavenRepository); } From 3a145e24c3da2b08b55837642027471780ba2b0d Mon Sep 17 00:00:00 2001 From: vivu001 Date: Wed, 22 Jul 2026 09:40:55 +0200 Subject: [PATCH 19/21] #1676: reorder IdeContext imports for spotless --- .../java/com/devonfw/tools/ide/context/IdeContext.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/cli/src/main/java/com/devonfw/tools/ide/context/IdeContext.java b/cli/src/main/java/com/devonfw/tools/ide/context/IdeContext.java index c8704df8e5..098cc180b4 100644 --- a/cli/src/main/java/com/devonfw/tools/ide/context/IdeContext.java +++ b/cli/src/main/java/com/devonfw/tools/ide/context/IdeContext.java @@ -30,8 +30,8 @@ import com.devonfw.tools.ide.tool.npm.Npm; import com.devonfw.tools.ide.tool.npm.NpmRepository; import com.devonfw.tools.ide.tool.pip.PipRepository; -import com.devonfw.tools.ide.tool.repository.ToolRepository; import com.devonfw.tools.ide.tool.python.PythonRepository; +import com.devonfw.tools.ide.tool.repository.ToolRepository; import com.devonfw.tools.ide.tool.uv.UvRepository; import com.devonfw.tools.ide.url.model.UrlMetadata; import com.devonfw.tools.ide.variable.IdeVariables; @@ -419,9 +419,9 @@ default void requireOnline(String purpose, boolean explicitOnlineCheck) { Path getIdeRoot(); /** - * @param ideRoot the new value of {@link #getIdeRoot() IDE_ROOT}. Typically detected automatically from the environment and working directory, but may need - * to be set explicitly (e.g. during the initial installation where the {@code IDE_ROOT} environment variable is not yet available but the installation - * target is already known). + * @param ideRoot the new value of {@link #getIdeRoot() IDE_ROOT}. Typically detected automatically from the environment and working directory, but may + * need to be set explicitly (e.g. during the initial installation where the {@code IDE_ROOT} environment variable is not yet available but the + * installation target is already known). */ void setIdeRoot(Path ideRoot); From fce92ca2e3f1c998d9c553f315300710e6830b3f Mon Sep 17 00:00:00 2001 From: vivu001 Date: Wed, 22 Jul 2026 09:51:33 +0200 Subject: [PATCH 20/21] #1676: fixed Checkstyle violation in UvRepositoryMock import --- .../java/com/devonfw/tools/ide/context/UvRepositoryMock.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/cli/src/test/java/com/devonfw/tools/ide/context/UvRepositoryMock.java b/cli/src/test/java/com/devonfw/tools/ide/context/UvRepositoryMock.java index a586a762fb..0c7ce5257b 100644 --- a/cli/src/test/java/com/devonfw/tools/ide/context/UvRepositoryMock.java +++ b/cli/src/test/java/com/devonfw/tools/ide/context/UvRepositoryMock.java @@ -5,7 +5,6 @@ import static com.github.tomakehurst.wiremock.client.WireMock.stubFor; import static com.github.tomakehurst.wiremock.client.WireMock.urlPathEqualTo; -import java.io.File; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; @@ -52,7 +51,7 @@ private void mockPypiPackageResponses(WireMockRuntimeInfo wireMockRuntimeInfo) { files.filter(p -> Files.isRegularFile(p) && p.getFileName().toString().endsWith(".json")) .forEach(jsonFile -> { Path rel = pypiRoot.relativize(jsonFile); - String packageName = rel.toString().replace(File.separatorChar, '/').replaceAll("\\.json$", ""); + String packageName = rel.toString().replace('\\', '/').replaceAll("\\.json$", ""); String packagePath = "/" + packageName + "/json"; String body = IdeTestContext.readAndResolveBaseUrl(jsonFile, wireMockRuntimeInfo); stubFor(get(urlPathEqualTo(packagePath)) From 836c6026e6254262a505fd4cc77b2420eea6acb8 Mon Sep 17 00:00:00 2001 From: vivu001 Date: Wed, 22 Jul 2026 09:53:08 +0200 Subject: [PATCH 21/21] #1676: fix Checkstyle violation in Intellij warning text --- .../java/com/devonfw/tools/ide/tool/intellij/Intellij.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/cli/src/main/java/com/devonfw/tools/ide/tool/intellij/Intellij.java b/cli/src/main/java/com/devonfw/tools/ide/tool/intellij/Intellij.java index 7636218394..0e9823c485 100644 --- a/cli/src/main/java/com/devonfw/tools/ide/tool/intellij/Intellij.java +++ b/cli/src/main/java/com/devonfw/tools/ide/tool/intellij/Intellij.java @@ -112,8 +112,10 @@ protected ToolEditionAndVersion adjustRequestedEdition(ToolEditionAndVersion req (VersionIdentifier.LATEST_UNSTABLE.equals(version))) { // No version specified and no configured version // Switching to IntelliJ Standard edition LOG.warn(""" - Notice: You have configured IDEasy to use the IntelliJ Ultimate Edition. Since version 2025.3, the Ultimate and Community editions of IntelliJ have been unified into a single edition. - Since you are attempting to install a version of IntelliJ that is 2025.3 or newer, we are automatically switching your edition to the unified edition to ensure compatibility. + Notice: You have configured IDEasy to use the IntelliJ Ultimate Edition. + Since version 2025.3, the Ultimate and Community editions of IntelliJ have been unified into a single edition. + Since you are attempting to install a version of IntelliJ that is 2025.3 or newer, + we are automatically switching your edition to the unified edition to ensure compatibility. To specifically install the last true ultimate version of IntelliJ, please run "ide install intellij 2025.2.6.1". Otherwise, we recommend permanently switching to the unified edition by running "ide set-edition intellij intellij"."""); edition = new ToolEdition(this.tool, "intellij");