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}/indexlikehttps://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.managerapplication 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.managerapplication 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.Generatorpurely to generate a description that can be copied into the the Anatomy ofjre-gensection. - JustJ JREs Update Site Generator
-
Launches the
org.eclipse.justj.p2.managerapplication 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.managerapplication 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.Indexerto 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.JdepsIndexto produce an index like the children ofhttps://download.eclipse.org/justj/jdeps/; this is useful for debugging thejdepsindex generation logic locally.
This class is confusing to edit! It is generated fromorg.eclipse.justj.codegen.model.util.JdepsIndexin 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.JdepsIndexinstead. - Run Jdeps Root Index
-
Launches
org.eclipse.justj.codegen.templates.jdeps.JdepsIndexto produce a root index likehttps://download.eclipse.org/justj/jdeps/; this is useful for debugging thejdepsindex 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.