|
|
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).
|
|
|
|