codeexamples-ide/AGENTS.md at main · vogellacompany/codeexamples-ide · GitHub
Skip to content

Latest commit

 

History

History
74 lines (54 loc) · 3.87 KB

AGENTS.md

File metadata and controls

74 lines (54 loc) · 3.87 KB

Project Overview: codeexamples-ide

This project is a collection of Eclipse IDE plugins maintained by vogella GmbH. It serves as a reference for modern Eclipse development practices, covering both the classic IDE extension points and the newer Eclipse 4 (e4) application model.

Key Technologies and Architecture

  • Eclipse Tycho: Used for building Eclipse plugins, features, and products with Maven.
  • Eclipse 4 (e4): Demonstrates dependency injection (Jakarta Inject), the application model (.e4xmi), and CSS styling.
  • Generic Editor & TM4E: Examples of extending the Eclipse Generic Editor with TextMate grammars (TM4E), for example for shell scripts.
  • OSGi: The underlying modular system for all Eclipse plugins.
  • Java 25: The project is configured to use JavaSE-25.

Project Structure

The repository is organized into many OSGi bundles (plugins):

  • com.vogella.ide.first: Core UI components and product definition.
  • com.vogella.ide.editor.*: Custom editors and extensions for the Generic Editor (Gradle, Shell, Tasks, and a bytecode viewer that translates bytecode into other languages via the Claude Code CLI).
  • com.vogella.tasks.*: A sample task management application split into model, services, and UI.
  • target-platform: Contains the target definition file (target-platform.target) which specifies the Eclipse release and dependencies used for the build.
  • updatesite: The Tycho-generated p2 repository for distributing the plugins.

Building and Running

Prerequisites

  • Java 25: Ensure you have a JDK 25 installed and your JAVA_HOME is set.
  • Maven: The project includes a Maven wrapper (mvnw).

Building the Project

To build all bundles and the update site, run the following command from the root directory:

./mvnw clean verify

Signing the update site

The updatesite module signs its artifacts with PGP via the tycho-gpg-plugin (Bouncy Castle signer), the signatures land in the p2 metadata and the jars stay unchanged. Signing is skipped by default. The CI enables it with -Dgpg.skip=false, writes the key from the MAVEN_GPG_KEY secret to a file and passes the MAVEN_GPG_PASSPHRASE secret, falling back to a throwaway key when the secrets are not set. A local signed build works the same way:

gpg --armor --export-secret-keys release@vogella.com > ~/signing-key.asc
export MAVEN_GPG_PASSPHRASE=<passphrase>
./mvnw clean verify -Dgpg.skip=false -Dtycho.pgp.signer.bc.secretKeys=$HOME/signing-key.asc

The secretKeys file is required, with signer=bc alone Tycho still reads the key through the gpg executable. Check the result with unzip -p updatesite/target/repository/artifacts.jar artifacts.xml | grep -c pgp.signatures. The updatesite module has its own pom.xml only for this plugin.

Running the Application

  1. Import into Eclipse:
    • Use an Eclipse IDE (e.g., Eclipse IDE for RCP and RAP Developers).
    • File -> Import... -> Existing Maven Projects.
    • Select the root directory and import all modules.
  2. Target Platform:
    • Open target-platform/target-platform.target.
    • Click "Set as Active Target Platform" in the top-right corner of the editor.
  3. Launch:
    • You can launch a runtime workbench from the com.vogella.ide.product/ide.product file by clicking the "Launch an Eclipse application" link in the Overview tab.

Development Conventions

  • OSGi Metadata: Always manage dependencies in META-INF/MANIFEST.MF.
  • Extensions: UI contributions are defined in plugin.xml.
  • Dependency Injection: Prefer @Inject (Jakarta) for accessing services and UI components in e4-based bundles.
  • Coding Style: Follow standard Eclipse/Java conventions. The project uses UTF-8 encoding.
  • Testing: Test fragments (e.g., com.vogella.tasks.services.tests) use JUnit and are executed by tycho-surefire-plugin during the build.