Skip to content

Update dependencies to Eclipse 2025-12, replace obsolete target files#368

Open
travkin79 wants to merge 9 commits into
microsoft:mainfrom
travkin79:2025-12-target
Open

Update dependencies to Eclipse 2025-12, replace obsolete target files#368
travkin79 wants to merge 9 commits into
microsoft:mainfrom
travkin79:2025-12-target

Conversation

@travkin79

@travkin79 travkin79 commented Jul 23, 2026

Copy link
Copy Markdown
Contributor

As requested by @jdneo, I prepared a new target platform definition for Eclipse 2025-12 (Eclipse 4.38).

This PR

  • adds new targets 2025-12.target (for Eclipse 4.38 and later), 2024-12.target for terminal.tm bundle and Eclipse 4.36 and earlier
  • replaces the obsolete target files in Maven build
  • updates documentation
  • replaces JDK 17 with JDK 21 (since Eclipse 2025-12 requires JDK 21)
  • adds a Maven (m2e) launch config for mvn clean verify
  • sets projects' encoding to UTF-8
  • unifies output folders to target/classes
  • fixes a compile error in Eclipse, avoids "OSGi access rules not enforced by classpath access rules, which can lead to classloading errors at runtime." error message

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

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.tm bundle.

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",

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Fixed

Comment thread pom.xml
Comment on lines +21 to 26
<!-- 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>

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Change undone

@travkin79

Copy link
Copy Markdown
Contributor Author

I see, we also need to remove the obsolete dynamic loading of the terminal bundles. I'll continue with that tomorrow.

@jdneo

jdneo commented Jul 24, 2026

Copy link
Copy Markdown
Member

Wait, is removing the tm bundle a required step for this task?

@iloveeclipse

Copy link
Copy Markdown

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.

@travkin79

travkin79 commented Jul 24, 2026

Copy link
Copy Markdown
Contributor Author

Wait, is removing the tm bundle a required step for this task?

Hello @jdneo,
Short answer: No, removing the tm bundle is not a required step.

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 base.target plus two different target files for the different terminal bundles. The plug-in dependencies would become obvious and would simplify installation processes. Thus, I fully agree with @iloveeclipse.

I could also separate introducing the new target from removing the tm bundle in two different PRs if you like.

@jdneo

jdneo commented Jul 24, 2026

Copy link
Copy Markdown
Member

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 4.38, if we remove the tm bundle support, they will lose all the updates and fixes.

@travkin79 travkin79 changed the title Update dependencies to Eclipse 2025-12, replace obsolete target files, drop obsolete terminal.tm bundle Update dependencies to Eclipse 2025-12, replace obsolete target files Jul 24, 2026
@travkin79

travkin79 commented Jul 24, 2026

Copy link
Copy Markdown
Contributor Author

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 4.38, if we remove the tm bundle support, they will lose all the updates and fixes.

Hi @jdneo,
I adapted this PR accordingly.

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 2024-12.target, but it seems, all tests (including those running in CI) are using 2025-12.target (similar to using target-terminal.target in main branch). If you want to explicitly test with multiple targets, you might want to adopt the multi-target approach from TM4E project.

@iloveeclipse

Copy link
Copy Markdown

There still quite a lot users using eclipse lower than 4.38

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants