Eclipse JustJ Development

Git Repositories

justj.tools - the tools used to generate JREs and to manage the archive.eclipse.org site.

justj - the projects used for building JREs at https://ci.eclipse.org/justj/.

justj-website - the project used to maintain this website.

.github - the project used to maintain the GitHub site.

Builds

https://ci.eclipse.org/justj/

Wiki

https://wiki.eclipse.org/JustJ

Contributing

To best contribute to Eclipse in general, and to JustJ specifically, please do the following:

Workspace Setup

JustJ has a fully automated Oomph setup. To set up a local environment in which you can replicate JustJ's builds, and contribute to JustJ development, click the following link:
Create JustJ Development Environment...
Please read the instructions that follow and review the screen captures, each of which can be clicked to see the full image details.

Configure the Variables

After applying the configuration you will be prompted for the following variables:

The Setup Variables for a First Time User

If you've used Oomph before, many of the variables will not be prompted unless you checkmark the Show all variables. Please do so now, and review the setting for Git clone location rule to ensure that it contains ${@id.locationQualifier|trim} as illustrated above. Older versions of Oomph did not include this part, so if that is missing, use the dropdown to choose the first choice. Doing so will ensure that the Git clone for the website project will be properly included in the development environment.

If you later wish to do local Maven/Tycho builds, which is highly likely, and mvn is not on your PATH, use the Browse... button for the Maven Command to specify the location fully.

Proceed to the final page and launch the installation to complete the provisioning process.

Workspace Content

Once the provisioning process runs to completion, the workspace will contain the following projects:

The Workspace Projects

Launchers are organized as favorites on the Debug/Run toolbar menu buttons:

Launchers for Debug Favorites

Also, launchers are organized as favorites on the External Tools toolbar menu button:

Launchers for External Tools Favorites

Bootstrapping the JustJ Tools

The Maven/Tycho build of the tools can be replicated by launching Build JustJ Tools. Once this completes, the IDE itself can be updated to install those locally built tools. Open the Updater as follows:

Open the Updater

Hit the BACK button to go back to the Variables page, checkmark the Show all variables checkbox at the bottom left, and modify the JustJ Tools Repository as shown below:

Use the Local p2 Repository for Updates

This will use ${git.clone.justj.tools.location|uri}/releng/org.eclipse.justj.tools.site/target/repository as the location.

Now run the wizard to completion. It will perform in the background as follows on the status line at the bottom right of the IDE:

Updater Running in the Background

You can click the animated button to bring it into the foreground. When it completes, and a restart is needed, as is the case now, you will need to open the dialog and hit Finish to restart the IDE.

Working with the jregen Model

Open the justj.jregen model and double-click the root Model instance to show the Properties view as follows:

The Model Editor with the Properties View

From the context menu or the menu bar Reconcile the model:

Reconcile the Model

This will take quite some time to complete. It uses the Source property to locate a justj.manifest as described in the Anatomy of jre-gen section, downloading all the JREs and storing them in the local-cache folder. Refresh the org.eclipse.justj.model project to see the new jre-gen folder:

The JREs Downloaded to the Local Cache

The model is now reconciled to incorporate the information from the JREs.

The Reconciled Model

From the context menu or the menu bar Generate the model:

Generate the Model

Refresh the org.eclipse.justj.model project to see the new jre-gen folder:

The Generated JRE-Gen Folder

The structure is as described in the Anatomy of jre-gen section.

Generating the JRE p2 Update Site

At this point we can locally build the JRE p2 update site from the /org.eclipse.justj.model/jre-gen/pom.xml as follows:

Generate the JRE p2 Update Site

Note that there are also launchers for additional Maven/Tycho builds.

Build JustJ Tools
Builds the tools p2 repository via ${project_loc:/org.eclipse.justj.tools.parent}/../..
Build JustJ Tools Sample Product
Builds the sample product via ${project_loc:/org.eclipse.justj.tools.sample.product}
Build JustJ Tools Sample Product With Local JRE Site
Builds the sample product via ${project_loc:/org.eclipse.justj.tools.sample.product} but using the locally-built JRE p2 update site -Dorg.eclipse.justj.jre.repository=${file_uri:${resource_loc:/org.eclipse.justj.model/jre-gen/releng/org.eclipse.justj.site}}/target/repository.
Generate JustJ JRE Projects
Builds the model ${project_loc:/org.eclipse.justj.model} by reconciling and generating it.
Generate JustJ JRE Index
Builds a JRE index via ${project_loc:/org.eclipse.justj.releng}/index like https://archive.eclipse.org/justj/jres/14/downloads/latest/
Build JustJ JRE Site
Builds the JRE p2 repository via ${project_loc:/org.eclipse.justj.model}/jre-gen

Debugging the Tools and Generators

The following launchers are available on the Debug toolbar menu button:

Launchers for Debug Favorites

Runtime Workspace
Launches a self-hosted instance of Eclipse that includes the plugins in the workspace; this is useful for debugging the Model editor and the associated tools such as the reconciler and the generator.
JustJ Tools Update Site Generator
Launches the org.eclipse.justj.p2.manager application for the tools repository; this is useful for debugging code that manages the p2 update sites, including the support for generating the update site index.
JustJ Tools Update Site Generator Against Rsync
Launches the org.eclipse.justj.p2.manager application for the tools repository as well; the update site manager has built-in support to use rsync and helps test that. This launcher works only for project committers and is hard coded currently to work only for me.
Run JREGen Reconciler
Launches org.eclipse.justj.codegen.model.util.Reconciler; this is useful for quickly debugging the reconciler logic rather than launching a self-hosted instance.
Run JREGen Generator
Launches org.eclipse.justj.codegen.model.util.Generator; this is useful for quickly debugging the generator logic rather than launching a self-hosted instance.
Run JREGen Generator for Description
Launches org.eclipse.justj.codegen.model.util.Generator purely to generate a description that can be copied into the the Anatomy of jre-gen section.
JustJ JREs Update Site Generator
Launches the org.eclipse.justj.p2.manager application for the JRE repository; this is useful for debugging the specialized site index generation for JRE p2 repositories.
JustJ JREs Update Site Generator With Local Rsync
Launches the org.eclipse.justj.p2.manager application for the JRE repository; this is useful for debugging the specialized site index generation for JRE p2 repositories, including super update sites, and for testing rsynch integration locally.
Run justj.manifest Indexer
Launches org.eclipse.justj.codegen.model.util.Indexer to produce an index like https://archive.eclipse.org/justj/jres/14/downloads/latest/; this is useful for debugging the index generation logic locally.
Run Jdeps Index
Launches org.eclipse.justj.codegen.templates.jdeps.JdepsIndex to produce an index like the children of https://archive.eclipse.org/justj/jdeps/; this is useful for debugging the jdeps index generation logic locally.
This class is confusing to edit! It is generated from org.eclipse.justj.codegen.model.util.JdepsIndex in combination with org.eclipse.justj.codegen/templates/jdeps/index.html.jet. So do not edit it ever—your changes will be lost—edit org.eclipse.justj.codegen.model.util.JdepsIndex instead.
Run Jdeps Root Index
Launches org.eclipse.justj.codegen.templates.jdeps.JdepsIndex to produce a root index like https://archive.eclipse.org/justj/jdeps/; this is useful for debugging the jdeps index generation logic locally.

JET Templates

The tools infrastructure makes heavy use of JET templates.

The JET Editor for a Fragment's <code>p2.inf</code>

Please read the JET Tutorial to make the best use of this tool.