blob: dd8ead2247c3c7df71001115ffa0e037c61e1b31 [file] [log] [blame] [view]
# Eugenia: Automated Invocation with Ant
Eugenia can be called from Ant, using the `<epsilon.eugenia>` Ant task. This way, the creation of the GMF editors can be easily automated by using a standard Ant Builder. Additionally, the Ant task has several features which are not currently available through the regular graphical user interface.
In this article, we will show how to invoke the Eugenia Ant task and offer some recommendations on how to adopt it.
## Basic usage
The Eugenia Ant task only requires specifying the source Emfatic description or Ecore model through the `src` attribute:
```xml
<!-- Generate myfile.ecore from myfile.emf and then proceed -->
<epsilon.eugenia src="myfile.emf"/>
<!-- Start directly from the Ecore model -->
<epsilon.eugenia src="myfile.ecore"/>
```
!!! warning Important
The Eugenia Ant task requires that the Ant buildfile is run from the same JRE as the workspace. Please check the [Workflow](../../../doc/workflow) documentation for instructions on how to do it.
## Limiting the steps to be run
Normally, Eugenia runs all these steps:
- Clean the models from the previous run (the `clean` step)
- If `src` is an Emfatic source file (with the `.emf` extension), generate the Ecore model from it (`ecore`)
- Generate the EMF GenModel from the Ecore model and polish it with `Ecore2GenModel.eol` if available (`genmodel`)
- Generate the GmfGraph, GmfTool and GmfMap models and polish them with `Ecore2GMF.eol` if available (`gmf`)
- Generate the GmfGen model and polish it with `FixGMFGen.eol` if available (`gmfgen`)
- Generate the EMF code from the EMF GenModel model (`emfcode`)
- Generate the GMF code from the GMFGen model (`gmfcode`)
Optionally, the Ant task can run only some of these steps. The `firstStep` attribute can be used to specify the first step to be run, and the `lastStep` can be used to specify the last step to be run. For example:
```xml
<!-- Skips the clean, ecore and genmodel steps -->
<epsilon.eugenia src="myfile.ecore" firstStep="gmf"/>
<!-- Does not run the emfcode and gmfcode steps -->
<epsilon.eugenia src="myfile.emf" lastStep="gmfgen"/>
<!-- Only runs the gmf and gmfgen steps -->
<epsilon.eugenia src="myfile.ecore" firstStep="gmf" lastStep="gmfgen"/>
```
## Using extra models for polishing
Additional models to be used in a polishing transformation can be specified through the `<model>` nested element. `<model>` has three attributes:
* `ref` (mandatory) is the name with which the model was loaded into the model repository of the Ant project, using the Epsilon model loading Ant tasks.
* `as` (optional) is the name to be used for the model inside the polishing transformation.
* `step` (mandatory) is the identifier of the Eugenia step to which we will add the model reference.
As an example, consider the following fragment:
```xml
<epsilon.emf.loadModel name="Labels"
modelfile="my.model" metamodeluri="mymetamodelURI"
read="true" store="false"/>
<epsilon.eugenia src="myfile.emf">
<model ref="Labels" step="gmf"/>
</epsilon.eugenia>
```
This example will make the Labels model available to the `Ecore2GMF.eol` polishing transformation, which is part of the `gmf` step.