LcDsl: a new dawn for launch configurations | EclipseCon Europe 2018
EclipseCon Europe 2018
Ludwigsburg, Germany · October 23 - 25, 2018
https://www.eclipsecon.org/europe2018
Speaker(s):
Markus Duft (SSI Schaefer IT Solutions GmbH)
https://www.eclipsecon.org/europe2018/sessions/lcdsl-new-dawn-launch-configurations
Traditional launch configurations have a few problems:
They are XML, so they are hard to read/diff/understand, especially when working with VCS' like GIT.
Manually maintaining the list of included plugins for Eclipse launch configurations can be a pain in quickly changing environments.
Sometimes, Eclipse creates changes in launch configuration files only by opening the launch configuration in the run dialog, with no obvious reason (probably some HashMap? :)).
... and more
In this talk, you will learn how all of this can easily be fixed by using LcDsl.
This was the reason for us to start the LcDsl project (https://github.com/mduft/lcdsl). It provides a DSL that allows to create easily readable and mergable launch configurations, and even provides additional features traditionally not available to launch configurations (like automatically calculating dependencies and adding plugins on launch, ...). Common parts of launch configurations can be extracted to super configurations, just like inheritance in Java, resulting in even slicker configurations.
LcDsl also provides API to programmatically build launch configuration models (EMF/Xtext based) from within the IDE - this nicely integrates with Eclipse TEA and Eclipse EASE.
Along with LcDsl, we also developed a "Launch Configuration View", that allows to display, manage, run (debug, profile, ...) launch configurations. It not only supports LcDsl launch configurations (in fact, LcDsl support is only an extension to the view), but all possible Eclipse launch configuration types. This view is subject to be contributed back to Eclipse (https://git.eclipse.org/r/#/c/93689/).
A sample eclipse launch configuration would look like this:
eclipse configuration ThisIsAnEclipseApplication {
application com.wamas.test.theApplication;
memory min=256M max=2G;
workspace "${workspace_loc}/../SomeWorkspace";
execution-environment 'JavaSE-1.7';
favorite run debug;
plugin com.wamas.test; // can resolve dependencies automatically for you!
}
This is not only possible for RCP applications, but also for (currently) plain java applications, launch groups and RAP web applications. More launch configuration types can be added on demand :)