Project

General

Profile

Open JavaFX P2 repository

The Open JavaFX (OpenJFX) P2 repository generator is located at https://git.fortiss.org/af3/org.fortiss.openjfx

General information

This repository contains the gradle configuration to build a P2 repository from the OpenJFX jars distributed by maven central. These libraries/Java modules are provided by the OpenJDK team. A P2 repository of osgi-based plugins is required for these libraries such that they can be included in eclipse development environments and eclipse-based products.

In order to build the P2 repository, there exists a jenkins job named "OpenJFX P2 site" to build OpenJFX. Alternatively, you can clone the repository to your local machine and install gradle. Then, navigate to the cloned repository in a terminal and type gradle. Afterwards, the generated p2 site should be accessible in the folder "build".

To update the p2 repository to a newer OpenJFX version, just update the 2 version strings "ext.javafxVersion" and "javafxVersion" in the main gradle file, push the change, rebuild, and deploy the repository in the public download folder (ask your colleagues how to do this).

About the build system

The generator uses gradle and the bnd plugin to repack the provided jars. Therefore, a subproject exists in the "bundles" folder for each library and platform-specific library. This is required since efxclipse (the JavaFX eclipse integration) demands special format of OpenJFX eclipse plugins: The original libraries have to be placed within the generated plugin, instead of being unwrapped as the typical osgi-conversion implies.

The following efxclipse constraints are implemented in this repository:
  • The original library/module must be placed in the root of the generated plugin.
  • The original library/module must be referenced by the attribute "Java-Module" in the generated "META-INF/Manifest.MF" file, e.g. (javafx.base for the library "javafx-base.jar").
Each plugin is built as follows:
  • First, the JFX library is fetched from mavencentral as a dependency .
  • Then, the dependency is copied to "src/main/resources" to be included in the build.
  • Finally, the jar is built.

Note that the SWT plugin depends on the "graphics" library to extract the embedded swt library, which is wrapped by this plugin.

The plugins are contained in features to group them logically and to allow the distribution of platform-specific plugins to eclipse installations / builds.

Modifying the build

There are mainly two places to modify the build: The main gradle file in the root of the repository and the gradle files within the bundle sub-folders. The latter share most configuration, but point to their respective JFX libs and may implement os-specific, or libraryƤ-specific handling code (e.g., the SWT plugin).