Faktor-IPS workspace settings
Example
<plugins> <plugin> <groupId>org.faktorips</groupId> <artifactId>faktorips-maven-plugin</artifactId> <configuration> <work>${integrationtest.workspace}/${project.name}</work> <importAsMavenProject>false</importAsMavenProject> <exportHtml>true</exportHtml> <debug>true</debug> <debugPort>4711</debugPort> </configuration> <executions> <execution> <goals> <goal>faktorips-clean</goal> <goal>faktorips-build</goal> </goals> </execution> </executions> </plugin>
work
The parameter work
can be used to overwrite the location of the workspace used to compile the Faktor-IPS project. It must not be set to a directory inside the project’s own directory, such as the project’s target directory, as Eclipse can not import a project that contains the workspace directory. The default value is ${java.io.tmpdir}/${project.name}/eclipserun-work
.
importAsMavenProject
By default a Faktor-IPS project will be imported as Maven project, therefore it must have a pom.xml file. It can also be imported as a Eclipse project if a .project file exists. This behavior must be activated by setting <importAsMavenProject>false</importAsMavenProject>
.
exportHtml
With this setting <exportHtml>true</exportHtml>
the Faktor-IPS build will export the model with the Faktor-IPS Html Export Wizard. To package the generated HTML export in its own JAR, configure the maven-jar-plugin like:
<plugin> <artifactId>maven-jar-plugin</artifactId> <executions> <execution> <configuration> <classifier>html</classifier> <classesDirectory>${project.build.directory}/html</classesDirectory> <includes>**/*</includes> </configuration> <id>pack-html</id> <phase>package</phase> <goals> <goal>jar</goal> </goals> </execution> </executions> </plugin>
Keep in mind that UI-libraries are required for the HTML export to work, so if you run this build on a CI server like Jenkins you will need a server with a desktop environment. For a pure CLI Linux server you can use the Xvfb fake X server for example.
Debugging the build
The parameter debug
starts the build in debug mode and pauses it until a remote debugger has been connected. The default debug port is 8000 but a different port can be configured with the parameter debugPort
.
antScriptPath
To correctly import and build the Faktor-IPS project in Eclipse, the plugin uses a Ant script, performing the necessary steps. If no path is specified, a new script is generated based on the configuration.
If a custom ant script is used the parameters exportHtml
, importAsMavenProject
and the JDK settings will be ignored from the maven plugin. The default target is import but can be configured with the parameter antTarget
.
<plugins> <plugin> <groupId>org.faktorips</groupId> <artifactId>faktorips-maven-plugin</artifactId> <configuration> <antScriptPath>${project.basedir}/build/importProjects.xml</antScriptPath> <antTarget>doBuild</antTarget> </configuration> <executions> <execution> <goals> <goal>faktorips-clean</goal> <goal>faktorips-build</goal> </goals> </execution> </executions> </plugin>
An example for a custom ant script:
<project name="importProjects"> <taskdef name="faktorips.import" classname="org.faktorips.devtools.ant.ProjectImportTask" /> <taskdef name="faktorips.fullBuild" classname="org.faktorips.devtools.ant.FullBuildTask" /> <taskdef name="faktorips.exportHtml" classname="org.faktorips.devtools.ant.ExportHtmlTask" /> <taskdef name="faktorips.configureJdk" classname="org.faktorips.devtools.ant.ConfigureJdkTask" /> <!-- <taskdef name="faktorips.mavenRefresh" classname="org.faktorips.devtools.ant.MavenProjectRefreshTask" /> --> <target name="doBuild"> <echo message="executing faktorips import now" /> <faktorips.configureJdk dir="${jdk.dir}" /> <faktorips.import dir="${sourcedir}" copy="false" /> <!-- <faktorips.mavenImport dir="${sourcedir}" /> <faktorips.mavenRefresh updateSnapshots="true" /> --> <faktorips.fullBuild /> <faktorips.exportHtml ipsProjectName="my.awesome.fips.project" showValidationErrors="true" showInheritedObjectPartsInTable="true" locale="de" destination="${sourcedir}/target/html" ipsObjectTypes="ALL" /> </target> </project>