Eclipse 2022-09 has just been launched these days and this is a good moment to talk about the IDE and the installation.
I always have the problem that my Eclipse IDE is polluted with countless plugins that I do not use and that make working with Eclipse rather tougher. So in this blog I will shortly give my recommendation how to install a fast & small Eclipse IDE.
The OpenSource application server OpenLiberty from IBM is very suitable for running microservices and web applications in production. But also for development, the server offers a very good support of autodeploy and hotdeployment.
Per default you can simply drop a new .war file into the folder /config/dropins/ and OpenLiberty will immediately deploy your application. You can configure the behavior of dropins in detail in the server.xml file.
For example, if you add the following tag into your server.xml file:
...
<applicationManager autoExpand="true" />
....
then your application will be automatically expanded into a new folder at
${server.config.dir}/apps/expanded/APP_NAME/
Now when you deploy your application you will have a file layout like this:
In case you use autoexpand=true than the “active” set of files will be the files under the apps/expanded/ folder which you can then hot-update. This approach is useful if you want to deploy a single .war file and then make tweaks to it after you deploy it, such as in dev mode.
javax.faces.PROJECT_STAGE
Note that the hot-deployment for JSF files is only working if your PROJECT_STAGE param is set to ‘development’. So if not yet activated add the following into your web.xml file:
For production it is recommended to set the parameter to ‘Production’. In this mode JSF files will be cached by OpenLiberty internally.
Alternatively you can set the param ‘javax.faces.FACELETS_REFRESH_PERIOD’ to 1 which will also force OpenLiberty to scann for changed JSF files and class files:
If you use the Option ‘Explode Artifacts’ you can deploy the .war as a folder directly into the /config/dropins/ folder of your OpenLiberty installation. The Hotdeployment directory is than the .war/ sub directory after the first deployment. You can disable the ‘autoExpand’ feature of OpenLiberty in this case. See also the discussion here.
Manik-Hot-Deploy is a plugin for the Eclipse IDE which brings auto-deploy and hot-deploy functionallity to the development of web applications. The plugin is Open Source and supports Glassfish, Payara, JBoss, Wildfly and other application servers.
With the latest Release 1.0.6 the plugin improves the Payara Autodeploy support. The new version provides a setting for the target folder with a default setting for maven projects.
To enable the autodeploy feature for Payara you also have to set ‘autodeploy-enabled=true in the ‘das-config’ section of the domain.xml file.
Eclipse IDE provides a cool feature which allows you to execute XSL templates within the IDE. You just need to select the XSL file together with the XML file and choose from the context menu
Run As -> XSL Transformation
But for some reasons Eclipse is not supporting XSL 2.0 – which is standard in these days. So for example if you try to use xsl functions like ‘format-date-time’ or ‘replace’ this will not work. This is also true for Wilfly application server. So here is how to add XSLT 2.0 support for both – Eclipse and Wilffly
Eclipse IDE
You can install an XSLT 2.0 processor manually into your Eclipse IDE:
Unzip the package to get the saxon9he.jar file and place it into your workspace or some external folder
In eclipse choose “Window > Preferences” then “XML > XSL > Java Processors > Add”
Fill in a “Processor Name”, e.g. “Saxon XSLT 2.0”
In field “Processor type” choose “Saxon (XSLT 2.0)”
Choose “Add external jar” and choose your saxon jar, e.g. “saxon9he.jar”
Confirm by clicking “OK”
Now you can use saxon for XSLT 2.0 transformations in Eclipse. You need just configure your Run As Configurations and select the option ‘use specific process‘ to select the newly added Saxon processor.
Wildfly Sever
Also wildfly server supports only XSL 1.0 per default. If you need XSL 2.0 in your application add the following maven dependency:
In eclipse maven project it’s annoying that Eclipse IDE always validates all files from the /target/ folders – which makes no sense in any case.
To avoid this validation you can disable the specific validator in the workspace preferences. Go to validators and edit the XML and JSF Validator and add a ‘Exclude Group – Rule’ for the folder
/target
You can also exclude specific files. In my case I exclude the file
After downloading the new Eclipse IDE Mars I was disappointed of the corrupted design. Several dialog pages did not work as expected or were empty until the dialog window was resized.
As Eclipse release 4.5 (Mars) is based on GTK 3, the problem in my case was the missing library “gtk3-engines-oxygen”. This it the so called Oxygen widget theme for GTK3-based applications like the Eclipse Mars release.
After installing the missing library with apt:
apt-get install gtk3-engines-oxygen
the Eclipse Mars Release works perfect!
Customize Eclipse them Jeeeyul’s Eclipse Themes
A very nice plug-in for Eclipse is the ‘Jeeeyul’s Eclipse Themes‘. This plug-in provides a set of cool themes for eclipse and also a cool editor to customize the theme individually.
Adjusting the window margins
Another annoying thing in Eclipse GTK with Gnome is the small margin between to windows so you cant grasp the space with the mouse to resize the view.This problem can also be solved directly with the Jeeeyul’s plug-in:
In the ‘General’ section of the Jeeeyul’s Themes section you can change the “Winddow Pacing”. Disable the option ‘Cast Shadow’ and set ‘Part Stack Spacing’ to 5 and ‘Margins’ to 0. After that you need to restart Eclipse.
Alternative: Disable GTK3
An alternative is to simply deactivate GTK3 for Eclipse Mars. You need to set the environment variable ‘SWT_GTK3’ to ‘0’.
I am using the following bash start script to launch Eclipse Mars:
#!/bin/bash
cd /opt/eclipse-jee-mars/
export SWT_GTK3=0
./eclipse
In this tutorial I explain some of my experiences in extending the Eclipse BPMN2 Modeler with custom elements and properties. I am extending the BPMN2 Modeler to provide a custom BPMN runtime extension for the Imixs-Workflow Project. You will find the results of this project here.