Update dependencies to Eclipse 2025-12, replace obsolete target files#368
Update dependencies to Eclipse 2025-12, replace obsolete target files#368travkin79 wants to merge 9 commits into
Conversation
There was a problem hiding this comment.
Pull request overview
Updates the GitHub Copilot for Eclipse build and development setup to target Eclipse 2025-12 (Eclipse 4.38) and Java 21, while removing legacy/obsolete target definitions and the legacy TM-terminal bundle intended for older Eclipse versions.
Changes:
- Introduces a new target definition for Eclipse 2025-12 and updates Tycho/Maven to build against it.
- Migrates bundle execution environments and Eclipse project settings from Java 17 to Java 21; standardizes encodings/output folders.
- Removes obsolete target files and deletes the legacy
com.microsoft.copilot.eclipse.ui.terminal.tmbundle.
Reviewed changes
Copilot reviewed 66 out of 66 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| target-tm-terminal.target | Removed obsolete TM-terminal target definition. |
| target-terminal.target | Removed obsolete terminal target definition. |
| target-platforms/2025-12.target | Added new Eclipse 2025-12 target platform definition (incl. Orbit deps). |
| pom.xml | Drops legacy TM-terminal module and points Tycho at the new 2025-12 target + JavaSE-21. |
| launch/Verify Copilot for Eclipse.launch | Adds an m2e launch config for mvn clean verify. |
| launch/plugin_debug_configuration.launch | Updates PDE launch JRE from Java 17 to Java 21. |
| CONTRIBUTING.md | Updates dev prerequisites and target-platform guidance to 2025-12 / Java 21. |
| com.microsoft.copilot.eclipse.ui/META-INF/MANIFEST.MF | Bumps BREE to JavaSE-21. |
| com.microsoft.copilot.eclipse.ui/build.properties | Normalizes source/output folder entries. |
| com.microsoft.copilot.eclipse.ui/.settings/org.eclipse.jdt.core.prefs | Updates compiler settings to Java 21. |
| com.microsoft.copilot.eclipse.ui/.settings/org.eclipse.core.resources.prefs | Sets project encoding to UTF-8. |
| com.microsoft.copilot.eclipse.ui/.classpath | Updates JRE container to JavaSE-21 and marks it as modular. |
| com.microsoft.copilot.eclipse.ui.test/META-INF/MANIFEST.MF | Bumps BREE to JavaSE-21. |
| com.microsoft.copilot.eclipse.ui.test/build.properties | Normalizes source/output folder entries. |
| com.microsoft.copilot.eclipse.ui.test/.settings/org.eclipse.jdt.core.prefs | Updates compiler settings to Java 21. |
| com.microsoft.copilot.eclipse.ui.test/.settings/org.eclipse.core.resources.prefs | Sets project encoding to UTF-8. |
| com.microsoft.copilot.eclipse.ui.test/.classpath | Updates JRE container to JavaSE-21 and marks it as modular. |
| com.microsoft.copilot.eclipse.ui.terminal/pom.xml | Switches Tycho target file to the new 2025-12 target. |
| com.microsoft.copilot.eclipse.ui.terminal/META-INF/MANIFEST.MF | Bumps BREE to JavaSE-21. |
| com.microsoft.copilot.eclipse.ui.terminal/build.properties | Unifies output folder to target/classes/. |
| com.microsoft.copilot.eclipse.ui.terminal/.settings/org.eclipse.jdt.core.prefs | Updates compiler settings to Java 21. |
| com.microsoft.copilot.eclipse.ui.terminal/.settings/org.eclipse.core.resources.prefs | Sets project encoding to UTF-8. |
| com.microsoft.copilot.eclipse.ui.terminal/.classpath | Updates JRE container to JavaSE-21 and marks it as modular. |
| com.microsoft.copilot.eclipse.ui.terminal.tm/src/com/microsoft/copilot/eclipse/ui/terminal/tm/RunInTerminalTool.java | Removes legacy TM-terminal implementation. |
| com.microsoft.copilot.eclipse.ui.terminal.tm/pom.xml | Removes legacy bundle’s Maven module definition. |
| com.microsoft.copilot.eclipse.ui.terminal.tm/OSGI-INF/component.xml | Removes DS component definition for legacy bundle. |
| com.microsoft.copilot.eclipse.ui.terminal.tm/META-INF/MANIFEST.MF | Removes OSGi manifest for legacy bundle. |
| com.microsoft.copilot.eclipse.ui.terminal.tm/build.properties | Removes PDE build properties for legacy bundle. |
| com.microsoft.copilot.eclipse.ui.terminal.tm/.settings/org.eclipse.m2e.core.prefs | Removes legacy module m2e settings. |
| com.microsoft.copilot.eclipse.ui.terminal.tm/.settings/org.eclipse.jdt.core.prefs | Removes legacy module Java compiler settings. |
| com.microsoft.copilot.eclipse.ui.terminal.tm/.project | Removes legacy Eclipse project metadata. |
| com.microsoft.copilot.eclipse.ui.terminal.tm/.classpath | Removes legacy module classpath metadata. |
| com.microsoft.copilot.eclipse.ui.terminal.tm/.checkstyle | Removes legacy module Checkstyle metadata. |
| com.microsoft.copilot.eclipse.ui.jobs/META-INF/MANIFEST.MF | Bumps BREE to JavaSE-21. |
| com.microsoft.copilot.eclipse.ui.jobs/build.properties | Unifies output folder to target/classes/. |
| com.microsoft.copilot.eclipse.ui.jobs/.settings/org.eclipse.jdt.core.prefs | Updates compiler settings to Java 21 (and forbiddenReference severity). |
| com.microsoft.copilot.eclipse.ui.jobs/.settings/org.eclipse.core.resources.prefs | Sets project encoding to UTF-8. |
| com.microsoft.copilot.eclipse.ui.jobs/.classpath | Updates JRE container to JavaSE-21 and marks it as modular. |
| com.microsoft.copilot.eclipse.terminal.api/META-INF/MANIFEST.MF | Bumps BREE to JavaSE-21. |
| com.microsoft.copilot.eclipse.terminal.api/build.properties | Unifies output folder to target/classes/. |
| com.microsoft.copilot.eclipse.terminal.api/.settings/org.eclipse.jdt.core.prefs | Updates compiler settings to Java 21. |
| com.microsoft.copilot.eclipse.terminal.api/.settings/org.eclipse.core.resources.prefs | Sets project encoding to UTF-8. |
| com.microsoft.copilot.eclipse.terminal.api/.classpath | Updates JRE container to JavaSE-21 and marks it as modular. |
| com.microsoft.copilot.eclipse.swtbot.test/META-INF/MANIFEST.MF | Bumps BREE to JavaSE-21. |
| com.microsoft.copilot.eclipse.swtbot.test/build.properties | Normalizes source/output folder entries. |
| com.microsoft.copilot.eclipse.swtbot.test/.settings/org.eclipse.jdt.core.prefs | Updates compiler settings to Java 21. |
| com.microsoft.copilot.eclipse.swtbot.test/.settings/org.eclipse.core.resources.prefs | Sets project encoding to UTF-8. |
| com.microsoft.copilot.eclipse.swtbot.test/.classpath | Updates JRE container to JavaSE-21 and marks it as modular. |
| com.microsoft.copilot.eclipse.core/META-INF/MANIFEST.MF | Bumps BREE to JavaSE-21 (and touches exported package metadata). |
| com.microsoft.copilot.eclipse.core/build.properties | Normalizes source/output folder entries. |
| com.microsoft.copilot.eclipse.core/.settings/org.eclipse.jdt.core.prefs | Updates compiler settings to Java 21 and related codegen/debug prefs. |
| com.microsoft.copilot.eclipse.core/.settings/org.eclipse.core.resources.prefs | Sets project encoding to UTF-8. |
| com.microsoft.copilot.eclipse.core/.classpath | Updates JRE container to JavaSE-21 and marks it as modular. |
| com.microsoft.copilot.eclipse.core.test/META-INF/MANIFEST.MF | Bumps BREE to JavaSE-21. |
| com.microsoft.copilot.eclipse.core.test/build.properties | Normalizes source/output folder entries. |
| com.microsoft.copilot.eclipse.core.test/.settings/org.eclipse.jdt.core.prefs | Updates compiler settings to Java 21. |
| com.microsoft.copilot.eclipse.core.test/.settings/org.eclipse.core.resources.prefs | Sets project encoding to UTF-8. |
| com.microsoft.copilot.eclipse.core.test/.classpath | Updates JRE container to JavaSE-21 and marks it as modular. |
| com.microsoft.copilot.eclipse.core.agent.win32/META-INF/MANIFEST.MF | Bumps fragment BREE to JavaSE-21. |
| com.microsoft.copilot.eclipse.core.agent.macosx.x64/META-INF/MANIFEST.MF | Bumps fragment BREE to JavaSE-21. |
| com.microsoft.copilot.eclipse.core.agent.macosx.aarch64/META-INF/MANIFEST.MF | Bumps fragment BREE to JavaSE-21. |
| com.microsoft.copilot.eclipse.core.agent.linux.x64/META-INF/MANIFEST.MF | Bumps fragment BREE to JavaSE-21. |
| com.microsoft.copilot.eclipse.core.agent.linux.aarch64/META-INF/MANIFEST.MF | Bumps fragment BREE to JavaSE-21. |
| base.target | Removes the previous base target definition. |
| .github/workflows/ci.yml | Updates CI to use JDK 21. |
| .github/copilot-instructions.md | Updates repo instructions to reference the new target + Java 21 baseline. |
| @@ -26,7 +26,7 @@ Export-Package: com.microsoft.copilot.eclipse.core, | |||
| com.microsoft.copilot.eclipse.core.persistence;x-friends:="com.microsoft.copilot.eclipse.ui,com.microsoft.copilot.eclipse.core.test,com.microsoft.copilot.eclipse.core.utils", | |||
| <!-- terminal bundles must be built before ui bundle as ui bundle depends on terminal bundle artifacts --> | ||
| <module>com.microsoft.copilot.eclipse.terminal.api</module> | ||
| <module>com.microsoft.copilot.eclipse.ui.terminal</module> | ||
| <module>com.microsoft.copilot.eclipse.ui.terminal.tm</module> | ||
|
|
||
| <module>com.microsoft.copilot.eclipse.core</module> | ||
| <module>com.microsoft.copilot.eclipse.ui</module> |
|
I see, we also need to remove the obsolete dynamic loading of the terminal bundles. I'll continue with that tomorrow. |
|
Wait, is removing the tm bundle a required step for this task? |
Why is this a problem? Of course one can try to use old tm. terminal bundles with "modern" 4.38 Eclipse (I believe it would still work, but I didn't tried it), but what is the point doing so? Benefit is that we finally can get all the dependencies explicitly defined before installation, so the "modern" terminal bundles can be automatically installed along the Copilot plugin, and we don't need to have extra p2 code in Copilot which tries to installs the "right" terminal fragment on second startup. |
Hello @jdneo, I thought, the terminal.tm bundle was only needed because of copilot's support for Eclipse versions below 4.37. If we move to the oldest supported Eclipse version 4.38 (2025-12), we no longer need that. So we can (don't have to) remove that obsolete bundle and also the complex terminal bundle loading mechanics that are no longer needed. That would make the code significantly less complex and even the target definition file does no longer need to be splitten into a common I could also separate introducing the new target from removing the tm bundle in two different PRs if you like. |
|
I tend to avoid removing the tm bundle at current stage, if it is not necessary. There still quite a lot users using eclipse lower than |
Avoid "OSGi access rules not enforced by classpath access rules, which can lead to classloading errors at runtime."
Build the new target file for terminal.tm bundle (2024-12.target) similar to 2025-12.target and update docs.
f43c01e to
5529559
Compare
See review comment microsoft#368 (comment)
Hi @jdneo, In case you're interested in seeing how removing terminal.tm bundle and obsolete code for dynamically loading the terminal bundles would look like take a look at this branch: https://github.com/travkin79/copilot-for-eclipse/tree/drop-tm-bundle. In this PR, terminal.tm bundle is built using |
Hmm. If 4.38 is in the target, how do you want to check compatibility with older releases? This would imply extra tests with older target platforms covering all used Eclipse API's are compatible with older versions. Anyway, would it be easier to only require new versions of lsp4j/lsp4e, because AFAIK they can be changed/installed (almost) independently on used Eclipse SDK version. |
As requested by @jdneo, I prepared a new target platform definition for Eclipse 2025-12 (Eclipse 4.38).
This PR
2025-12.target(for Eclipse 4.38 and later),2024-12.targetfor terminal.tm bundle and Eclipse 4.36 and earliermvn clean verifytarget/classes