Development
Git Repositories
justj.tools
- the tools used to generate JREs and to manage the download.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
Wiki
https://wiki.eclipse.org/JustJ
Contributing
To best contribute to Eclipse in general, and to JustJ specifically, please do the following:
- If you don't already have a GitHub Account, register now.
- If you don't already have an Eclipse Account, register now; use the same email address for both accounts.
- If you haven't already signed your Eclipse Contributor Agreement, sign now; for this to be used to process your pull requests, you need to use the same email address as is used for your GitHub account.
- Use each repository's issues list to report problems and each repository's discussions list to ask questions.
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:
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:
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:
Launchers are organized as favorites on the Debug/Run toolbar menu buttons:
Also, launchers are organized as favorites on the External Tools toolbar menu button:
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:
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:
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:
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:
From the context menu or the menu bar 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 model is now reconciled to incorporate the information from the JREs.
From the context menu or the menu bar Generate the model:
Refresh the org.eclipse.justj.model
project to see the new 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:
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
likehttps://download.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:
- 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 ofjre-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 likehttps://download.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 ofhttps://download.eclipse.org/justj/jdeps/
; this is useful for debugging thejdeps
index generation logic locally.
This class is confusing to edit! It is generated fromorg.eclipse.justj.codegen.model.util.JdepsIndex
in combination withorg.eclipse.justj.codegen/templates/jdeps/index.html.jet
. So do not edit it ever—your changes will be lost—editorg.eclipse.justj.codegen.model.util.JdepsIndex
instead. - Run Jdeps Root Index
-
Launches
org.eclipse.justj.codegen.templates.jdeps.JdepsIndex
to produce a root index likehttps://download.eclipse.org/justj/jdeps/
; this is useful for debugging thejdeps
index generation logic locally.
JET Templates
The tools infrastructure makes heavy use of JET templates.
Please read the JET Tutorial to make the best use of this tool.