This document describes how the typical development lifecycle looks like for EvoAl core development. Please have an additional look at the topics on release planning and the issue workflows.
Prerequisites
For development, we are using Eclipse and IntelliJ. Eclipse is used for creating and developing the models and languages. Using Eclipse is necessary since we are using the Eclipse Modeling Framework and Xtext. Please make sure that you install all necessary dependencies for the development. IntelliJ is used to develop the EvoAl execution environment. We are using IntelliJ here since it offers good support for Maven-based projects, and they offer their full version (IntelliJ Ultimate) for university members for free.
Furthermore, you have to check out EvoAl to your computer.
Modifying Models and Languages
You can find the models and languages in the src/languages
folder in the repository.
Required Eclipse Plugins
You have to install the following Eclipse plugins (WARNING: This is not yet validated. Please contact us if you have problems which plugins to choose):
-
m2e
Maven support for Eclipse (this will install Tycho and additional plugins) -
EMF
Eclipse Modelling Framework plugins -
Xtext
The Xtext DSL support
Setting Up Eclipse
First, you have to import the existing Maven project.
To this end, select the pom.xml
that exists in the src/languages
folder.
After successfully importing all projects you have to activate the Target Platform
of EvoAl.
Therefore, you have to go to the Eclipse settings, search for the Target Platform Settings
and select the target platform that is present in the de.evoal.languages.releng.target
project.
Changing Code
Simply do your changes and test them by starting an Eclipse that include the changes (Run As
> Eclipse
).
Installing Changed Languages for the Execution Environment
For using the changes in the EvoAl execution environment, you have to install your changes to your local maven repository by executing mvn flatten:flatten install
in the src/languages
folder.
The flatten:flatten
parameter is necessary to replace some variables used in the pom.xml
files by their concrete values to allow the downstream maven projects (those from the EvoAl execution environment) to use them without problems.
Changing EvoAl Execution Environment
You can find the source code of the EvoAl execution runtime in the $EVOAL_REPO/src/evoal
folder in the repository.
There you will do all your local changes.
When testing your changes, you have to create a local release, which you can create automatically and can be found in $EVOAL_REPO/evoal
.
Setting up IntelliJ
Simply import the parent project from $EVOAL_REPO/src/evoal
.
Changing the Code
Simply use IntelliJ to change the code.
Creating a Local Execution Environment
To create an execution environment that include your changes you first have to execute mvn package
in the $EVOAL_REPO/src/evoal
folder.
This step will create a plugin folder in the target
folder of every Maven plugin.
Then, you execute the script $EVOAL_REPO/ci/create-release.sh
in the root folder of your repository.
This script will create a local release in the folder $EVOAL_REPO/evoal
.
Note: If you don't want to create a release every time you are doing a change, you
can simply add a symbolic link from $EVOAL_REPO/src/evoal/plugins/.../target/<plugin-name>
to $EVOAL_REPO/evoal/plugins/<plugin-name>
. Then it is only necessary to execute mvn package
to update your plugin.
Logging and Debugging of EvoAl Exution Environment
You can set the environment variable EVOAL_LOGGING
in your execution shell to a logging level (error
, warn
, info
, debug
) to turn on logging in EvoAl. If you want to debug your plugin, you can set the environment variable to EVOAL_DEBUG
to true
to start the execution environment in the debug mode. Using any EvoAl script will result in starting the execution environment and make it wait for a debugger. You can attach your IntelliJ by selecting "Attach to ...". Then you can simply debug the application.