You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
As a devonfw-ide user, I want to use IDEasy on my devonfw-ide project so that I can test things before my entire teams goes for a migration to IDEasy.
Actual behavior
With devon intellij I can launch IntelliJ without errors but with IDEasy I get this:
$ ide intellij
...
Failed to merge workspace file D:\projects\project\workspaces\main\.intellij\config\options\jdk.table.xml with update template D:\projects\project\settings\intellij\workspace\update\.intellij\config\options\jdk.table.xml and setup file D:\projects\project\settings\intellij\workspace\setup\.intellij\config\options\jdk.table.xml!
com.devonfw.tools.ide.merge.xmlmerger.XmlMergeException: Merge strategy combine failed on /application[]/component[@name='ProjectJdkTable']
at com.devonfw.tools.ide.merge.xmlmerger.XmlMergeStrategy.merge(XmlMergeStrategy.java:69)
at com.devonfw.tools.ide.merge.xmlmerger.XmlMergeStrategy.combineChildNodes(XmlMergeStrategy.java:113)
at com.devonfw.tools.ide.merge.xmlmerger.XmlMergeStrategy$1.doMerge(XmlMergeStrategy.java:29)
at com.devonfw.tools.ide.merge.xmlmerger.XmlMergeStrategy.merge(XmlMergeStrategy.java:65)
at com.devonfw.tools.ide.merge.xmlmerger.XmlMerger.merge(XmlMerger.java:123)
at com.devonfw.tools.ide.merge.xmlmerger.XmlMerger.doMerge(XmlMerger.java:82)
at com.devonfw.tools.ide.merge.FileMerger.merge(FileMerger.java:50)
at com.devonfw.tools.ide.merge.DirectoryMerger.merge(DirectoryMerger.java:69)
at com.devonfw.tools.ide.merge.DirectoryMerger.merge(DirectoryMerger.java:73)
at com.devonfw.tools.ide.merge.DirectoryMerger.merge(DirectoryMerger.java:73)
at com.devonfw.tools.ide.merge.DirectoryMerger.merge(DirectoryMerger.java:73)
at com.devonfw.tools.ide.merge.DirectoryMerger.merge(DirectoryMerger.java:73)
at com.devonfw.tools.ide.tool.ide.IdeToolCommandlet.configureWorkspace(IdeToolCommandlet.java:83)
at com.devonfw.tools.ide.tool.ide.IdeToolCommandlet.run(IdeToolCommandlet.java:48)
at com.devonfw.tools.ide.context.AbstractIdeContext.applyAndRun(AbstractIdeContext.java:926)
at com.devonfw.tools.ide.context.AbstractIdeContext.run(AbstractIdeContext.java:844)
at com.devonfw.tools.ide.cli.Ideasy.runOrThrow(Ideasy.java:95)
at com.devonfw.tools.ide.cli.Ideasy.run(Ideasy.java:59)
at com.devonfw.tools.ide.cli.Ideasy.main(Ideasy.java:133)
at java.base@21.0.2/java.lang.invoke.LambdaForm$DMH/sa346b79c.invokeStaticInit(LambdaForm$DMH)
Caused by: java.lang.IllegalStateException: Attribute merge:id is required for XML element /application[]/component[@name='ProjectJdkTable']/jdk[@version='2']
at com.devonfw.tools.ide.merge.xmlmerger.matcher.ElementMatcher.getIdComputer(ElementMatcher.java:43)
at com.devonfw.tools.ide.merge.xmlmerger.matcher.ElementMatcher.matchElement(ElementMatcher.java:60)
at com.devonfw.tools.ide.merge.xmlmerger.XmlMergeStrategy.combineChildNodes(XmlMergeStrategy.java:107)
at com.devonfw.tools.ide.merge.xmlmerger.XmlMergeStrategy$1.doMerge(XmlMergeStrategy.java:29)
at com.devonfw.tools.ide.merge.xmlmerger.XmlMergeStrategy.merge(XmlMergeStrategy.java:65)
... 19 more
Failed to merge workspace file D:\projects\project\workspaces\main\.intellij\config\codestyles\Default.xml with update template D:\projects\project\settings\intellij\workspace\update\.intellij\config\codestyles\Default.xml and setup file D:\projects\project\settings\intellij\workspace\setup\.intellij\config\codestyles\Default.xml!
com.devonfw.tools.ide.merge.xmlmerger.XmlMergeException: Merge strategy combine failed on /code_scheme[@name='Default' @version='173']/JavaCodeStyleSettings[]/option[@name='IMPORT_LAYOUT_TABLE']/value[]
at com.devonfw.tools.ide.merge.xmlmerger.XmlMergeStrategy.merge(XmlMergeStrategy.java:69)
at com.devonfw.tools.ide.merge.xmlmerger.XmlMergeStrategy.combineChildNodes(XmlMergeStrategy.java:113)
at com.devonfw.tools.ide.merge.xmlmerger.XmlMergeStrategy$1.doMerge(XmlMergeStrategy.java:29)
at com.devonfw.tools.ide.merge.xmlmerger.XmlMergeStrategy.merge(XmlMergeStrategy.java:65)
at com.devonfw.tools.ide.merge.xmlmerger.XmlMergeStrategy.combineChildNodes(XmlMergeStrategy.java:113)
at com.devonfw.tools.ide.merge.xmlmerger.XmlMergeStrategy$1.doMerge(XmlMergeStrategy.java:29)
at com.devonfw.tools.ide.merge.xmlmerger.XmlMergeStrategy.merge(XmlMergeStrategy.java:65)
at com.devonfw.tools.ide.merge.xmlmerger.XmlMergeStrategy.combineChildNodes(XmlMergeStrategy.java:113)
at com.devonfw.tools.ide.merge.xmlmerger.XmlMergeStrategy$1.doMerge(XmlMergeStrategy.java:29)
at com.devonfw.tools.ide.merge.xmlmerger.XmlMergeStrategy.merge(XmlMergeStrategy.java:65)
at com.devonfw.tools.ide.merge.xmlmerger.XmlMerger.merge(XmlMerger.java:123)
at com.devonfw.tools.ide.merge.xmlmerger.XmlMerger.doMerge(XmlMerger.java:82)
at com.devonfw.tools.ide.merge.FileMerger.merge(FileMerger.java:50)
at com.devonfw.tools.ide.merge.DirectoryMerger.merge(DirectoryMerger.java:69)
at com.devonfw.tools.ide.merge.DirectoryMerger.merge(DirectoryMerger.java:73)
at com.devonfw.tools.ide.merge.DirectoryMerger.merge(DirectoryMerger.java:73)
at com.devonfw.tools.ide.merge.DirectoryMerger.merge(DirectoryMerger.java:73)
at com.devonfw.tools.ide.merge.DirectoryMerger.merge(DirectoryMerger.java:73)
at com.devonfw.tools.ide.tool.ide.IdeToolCommandlet.configureWorkspace(IdeToolCommandlet.java:83)
at com.devonfw.tools.ide.tool.ide.IdeToolCommandlet.run(IdeToolCommandlet.java:48)
at com.devonfw.tools.ide.context.AbstractIdeContext.applyAndRun(AbstractIdeContext.java:926)
at com.devonfw.tools.ide.context.AbstractIdeContext.run(AbstractIdeContext.java:844)
at com.devonfw.tools.ide.cli.Ideasy.runOrThrow(Ideasy.java:95)
at com.devonfw.tools.ide.cli.Ideasy.run(Ideasy.java:59)
at com.devonfw.tools.ide.cli.Ideasy.main(Ideasy.java:133)
at java.base@21.0.2/java.lang.invoke.LambdaForm$DMH/sa346b79c.invokeStaticInit(LambdaForm$DMH)
Caused by: java.lang.IllegalStateException: 2 matches found for XPath package[@name=''] in workspace XML at /code_scheme[@name='Default' @version='173']/JavaCodeStyleSettings[]/option[@name='IMPORT_LAYOUT_TABLE']/value[]
at com.devonfw.tools.ide.merge.xmlmerger.matcher.IdComputer.evaluateExpression(IdComputer.java:65)
at com.devonfw.tools.ide.merge.xmlmerger.matcher.ElementMatcher.matchElement(ElementMatcher.java:61)
at com.devonfw.tools.ide.merge.xmlmerger.XmlMergeStrategy.combineChildNodes(XmlMergeStrategy.java:107)
at com.devonfw.tools.ide.merge.xmlmerger.XmlMergeStrategy$1.doMerge(XmlMergeStrategy.java:29)
at com.devonfw.tools.ide.merge.xmlmerger.XmlMergeStrategy.merge(XmlMergeStrategy.java:65)
... 25 more
Your workspace configuration failed with 5 error(s) - see log above.
Steps to reproduce (bug) / Use Case of feature request (enhancement)
take any devonfw-ide project with settings containing XML templates for IntelliJ
We should check if the XML merge namespace is present.
If not we could assume the template is old legacy stuff from devonfw-ide.
In that case, the default merge:strategy is keep in case the template is from setup and override if the template is from update.
We could add a property IDE_XML_MERGE_LEGACY_SUPPORT=false to ide-settings in IDEasy like this one: https://github.com/devonfw/ide-settings/blob/9551c1a222b64e958cdf1e8b01a952fa537241a6/ide.properties#L18C1-L18C49
If that property is not set to false, we activate legacy behaviour just as suggested above if the namespace is not present.
However, new projects can use XML templates without the namespace and still have the modern defaults and do not have problems with auto-formatters like IntelliJ that removes the XML namespace automatically if it is not used anywhere else in the XML file.
Affected version:
2025.02.001-SNAPSHOT
The text was updated successfully, but these errors were encountered:
Expected behavior
As a devonfw-ide user, I want to use IDEasy on my devonfw-ide project so that I can test things before my entire teams goes for a migration to IDEasy.
Actual behavior
With
devon intellij
I can launch IntelliJ without errors but with IDEasy I get this:Steps to reproduce (bug) / Use Case of feature request (enhancement)
Related/Dependent Issues
#43
#786
devonfw/ide-settings#72
Comments/Hints:
I see the following options:
If not we could assume the template is old legacy stuff from devonfw-ide.
In that case, the default merge:strategy is
keep
in case the template is from setup andoverride
if the template is from update.IDE_XML_MERGE_LEGACY_SUPPORT=false
toide-settings
in IDEasy like this one:https://github.com/devonfw/ide-settings/blob/9551c1a222b64e958cdf1e8b01a952fa537241a6/ide.properties#L18C1-L18C49
If that property is not set to
false
, we activate legacy behaviour just as suggested above if the namespace is not present.However, new projects can use XML templates without the namespace and still have the modern defaults and do not have problems with auto-formatters like IntelliJ that removes the XML namespace automatically if it is not used anywhere else in the XML file.
Affected version:
The text was updated successfully, but these errors were encountered: