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>