Fork me on GitHub

faktorips:faktorips-build

Full name:

org.faktorips:faktorips-maven-plugin:22.12.21.release:faktorips-build

Description:

Builds the Faktor-IPS project.

By default, the latest Faktor-IPS is used with an Eclipse 2019-03 runtime, all installed from faktorzehn.org update sites.

To change from where the plugins are installed, see additionalRepositories, repositories, fipsRepository/fipsRepositoryVersion and eclipseRepository.

Additional plugins (like the Faktor-IPS Product Variant Plugin) can be configured with additionalPlugins.

Attributes:

  • Requires a Maven project to be executed.
  • The goal is thread-safe and supports parallel builds.
  • Binds by default to the lifecycle phase: generate-sources.

Optional Parameters

Name Type Since Description
<additionalPlugins> List<Dependency> - Additional Eclipse-plugins which will be resolved transitively to make up the eclipse runtime.

Example:

<additionalPlugins>
 <dependency>
  <artifactId>org.faktorips.productvariant.core</artifactId>
  <type>eclipse-plugin</type>
 </dependency>
</additionalPlugins>

If JUnit is integrated as an Eclipse library, one of the following two dependencies must be added:
<additionalPlugins>
 <dependency>
  <artifactId>org.eclipse.jdt.junit</artifactId>
  <type>eclipse-plugin</type>
 </dependency>
</additionalPlugins>

or
<additionalPlugins>
 <dependency>
  <artifactId>org.eclipse.jdt.junit5.runtime</artifactId>
  <type>eclipse-plugin</type>
 </dependency>
</additionalPlugins>


<additionalRepositories> List<Repository> - This parameter makes it possible to define additional repositories while using the default repositories (for which the repositories parameter must remain unused).

Example:

<additionalRepositories>
 <repository>
  <id>productvariants</id>
  <layout>p2</layout>
  <url>https://update.faktorzehn.org/faktorips/productvariants/21.6</url>
 </repository>
</additionalRepositories>


<antScriptPath> String - Path to an ant build file. If no path is specified, a new script is generated.
User property is: ant.script.
<antTarget> String - Name of the ant target to call. If no target name is specified, import is used.
Default value is: import.
User property is: ant.target.
<buildIpsOnly> boolean - Whether to only start the IpsBuilder or all configured builders. The default is to use only the IpsBuilder as it creates the Java source files before the Maven compiler plugin compiles the entire project.
Default value is: true.
<debug> boolean - Starts the build in debug mode and pauses it until a remote debugger has been connected. The default debug port is 8000; a different port can be configured with debugPort.
User property is: faktorips.debug.
<debugLogOptions> String - The full path to a custom trace-options file. This option can significantly increase the logging output. Per default an extensive list of trace-options is added when maven is started with -X or -debug.

For more information see FAQ How do I use the platform debug tracing facility


User property is: faktorips.debuglog.options.
<debugPort> int - The port on which the started Faktor-IPS build will listen for a remote debugger.
See also: debug
Default value is: 8000.
User property is: faktorips.debug.port.
<eclipseRepository> String - Path to the update site to install Eclipse.
Default value is: https://download.eclipse.org/eclipse/updates/4.15/.
User property is: repository.eclipse.
<executionEnvironment> String - Execution environment profile name used to resolve dependencies and run Faktor-IPS. Must be at least "JavaSE-11".
User property is: faktorips.executionEnvironment.
<exportHtml> boolean - Whether to include the HTML export. It will be generated in target/html.

UI-libraries are required for the HTML export to work, so if you run this build on a CI server like Jenkins, make sure to install for example the Xvfb fake X server.

To package the generated HTML export in its own JAR, configure the maven-jar-plugin as follows:

<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>

Default value is: false.
<fipsRepository> String - Path to the update site to install Faktor-IPS. The default uses the official Faktor-IPS repository for the fipsRepositoryVersion.
Default value is: https://update.faktorzehn.org/faktorips/${faktorips.repository.version}/.
User property is: repository.fips.
<fipsRepositoryVersion> String - The version of the Faktor-IPS repository to be used. This parameter is used in the default fipsRepository property.
User property is: faktorips.repository.version.
<gitFailBuild> Boolean - Overrides the org.faktorips.maven.plugin.mojo.internal.GitStatusPorcelain.getFailBuild() parameter. Specially helpful when debugging builds.
User property is: git.fail.build.
<gitStatusPorcelain> GitStatusPorcelain - Runs a Git diff on the project to see if any files where changed. Can be configured to only print warnings or to fail the build for uncommitted changes.
<gitStatusPorcelain>
    <failBuild>false</failBuild>
    <verbosity>VERBOSE</verbosity>
</gitStatusPorcelain>


<importAsMavenProject> boolean - Whether to import the Faktor-IPS project as a Maven project. If set to true the m2e plugin will be used to import the pom.xml of the Faktor-IPS project.
Default value is: true.
<jdkDir> String - Path to the JDK the project should build against. If no path is specified, the parameter jdkId will be evaluated. If both parameters do not contain a value, the executionEnvironment will be used as default.
User property is: jdk.dir.
<jdkId> String - ID of the JDK the project should build against. The corresponding JDK must be configured in the Maven toolchains.xml This parameter is only evaluated if jdkDir is not specified. If this parameter does not contain a value either, the executionEnvironment will be used as default.
User property is: jdk.id.
<jvmArgs> List<String> - List of JVM arguments set on the command line.

Example:

<jvmArgs>
  <args>-javaagent:lombok.jar</args>
</jvmArgs>


<localRepository> String - Path to a local repository.
User property is: maven.repo.local.
<loggingMode> LoggingMode - There are three different logging modes available for this plugin.
  • original
  • perThread
  • perThreadFiltered
Each mode will only affect the output of the Faktor-IPS build e.g. importing, creating java classes or do a HTML model export.

original: will redirect everything to STDOUT.

perThread: will redirect the STDOUT of every thread to it's own file, and output one file after the other.

perThreadFiltered: additionally to the perThread mode this mode will filter the thread's output for well known exceptions e.g. FileNotFoundException of the junit eclipse plugin.

The fastest mode is obviously the original mode while the slowest is the perThreadFiltered one. The overhead added to the build time by the perThreadFiltered is about 5% but will produce a clean and continuous log output even in multi-threaded builds.

When maven is started with -X or -debug, extensive log output is created and therefore the original mode is chosen automatically.


Default value is: perThreadFiltered.
<repositories> List<Repository> - p2 repositories which will be used to resolve dependencies. If the default values should be used this parameter must remain unused. Additional repositories can then be defined using the additionalRepositories parameter. The paths of the default repositories can be changed individually using the parameters fipsRepository and eclipseRepository or the properties repository.fips, repository.eclipse.

Example:

<repositories>
 <repository>
  <id>faktor-ips-21-6</id>
  <layout>p2</layout>
  <url>https://update.faktorzehn.org/faktorips/v21_6/</url>
 </repository>
 <repository>
  <id>eclipse-2020-12</id>
  <layout>p2</layout>
  <url>http://download.eclipse.org/eclipse/updates/4.18/</url>
 </repository>
</repositories>


See also: additionalRepositories
<skip> boolean - Whether to skip mojo execution.
Default value is: false.
User property is: faktorips.skip.
<work> File - Work area. This includes:
  • <work>/configuration: The configuration area (-configuration)
  • <work>/data: The data ('workspace') area (-data)

Parameter Details

<additionalPlugins>

Additional Eclipse-plugins which will be resolved transitively to make up the eclipse runtime.

Example:

<additionalPlugins>
 <dependency>
  <artifactId>org.faktorips.productvariant.core</artifactId>
  <type>eclipse-plugin</type>
 </dependency>
</additionalPlugins>

If JUnit is integrated as an Eclipse library, one of the following two dependencies must be added:
<additionalPlugins>
 <dependency>
  <artifactId>org.eclipse.jdt.junit</artifactId>
  <type>eclipse-plugin</type>
 </dependency>
</additionalPlugins>

or
<additionalPlugins>
 <dependency>
  <artifactId>org.eclipse.jdt.junit5.runtime</artifactId>
  <type>eclipse-plugin</type>
 </dependency>
</additionalPlugins>

  • Type: java.util.List<org.apache.maven.model.Dependency>
  • Required: No

<additionalRepositories>

This parameter makes it possible to define additional repositories while using the default repositories (for which the repositories parameter must remain unused).

Example:

<additionalRepositories>
 <repository>
  <id>productvariants</id>
  <layout>p2</layout>
  <url>https://update.faktorzehn.org/faktorips/productvariants/21.6</url>
 </repository>
</additionalRepositories>

  • Type: java.util.List<org.eclipse.tycho.plugins.p2.extras.Repository>
  • Required: No

<antScriptPath>

Path to an ant build file. If no path is specified, a new script is generated.
  • Type: java.lang.String
  • Required: No
  • User Property: ant.script

<antTarget>

Name of the ant target to call. If no target name is specified, import is used.
  • Type: java.lang.String
  • Required: No
  • User Property: ant.target
  • Default: import

<buildIpsOnly>

Whether to only start the IpsBuilder or all configured builders. The default is to use only the IpsBuilder as it creates the Java source files before the Maven compiler plugin compiles the entire project.
  • Type: boolean
  • Required: No
  • Default: true

<debug>

Starts the build in debug mode and pauses it until a remote debugger has been connected. The default debug port is 8000; a different port can be configured with debugPort.
  • Type: boolean
  • Required: No
  • User Property: faktorips.debug

<debugLogOptions>

The full path to a custom trace-options file. This option can significantly increase the logging output. Per default an extensive list of trace-options is added when maven is started with -X or -debug.

For more information see FAQ How do I use the platform debug tracing facility

  • Type: java.lang.String
  • Required: No
  • User Property: faktorips.debuglog.options

<debugPort>

The port on which the started Faktor-IPS build will listen for a remote debugger.
See also: debug
  • Type: int
  • Required: No
  • User Property: faktorips.debug.port
  • Default: 8000

<eclipseRepository>

Path to the update site to install Eclipse.
  • Type: java.lang.String
  • Required: No
  • User Property: repository.eclipse
  • Default: https://download.eclipse.org/eclipse/updates/4.15/

<executionEnvironment>

Execution environment profile name used to resolve dependencies and run Faktor-IPS. Must be at least "JavaSE-11".
  • Type: java.lang.String
  • Required: No
  • User Property: faktorips.executionEnvironment

<exportHtml>

Whether to include the HTML export. It will be generated in target/html.

UI-libraries are required for the HTML export to work, so if you run this build on a CI server like Jenkins, make sure to install for example the Xvfb fake X server.

To package the generated HTML export in its own JAR, configure the maven-jar-plugin as follows:

<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>
  • Type: boolean
  • Required: No
  • Default: false

<fipsRepository>

Path to the update site to install Faktor-IPS. The default uses the official Faktor-IPS repository for the fipsRepositoryVersion.
  • Type: java.lang.String
  • Required: No
  • User Property: repository.fips
  • Default: https://update.faktorzehn.org/faktorips/${faktorips.repository.version}/

<fipsRepositoryVersion>

The version of the Faktor-IPS repository to be used. This parameter is used in the default fipsRepository property.
  • Type: java.lang.String
  • Required: No
  • User Property: faktorips.repository.version

<gitFailBuild>

Overrides the org.faktorips.maven.plugin.mojo.internal.GitStatusPorcelain.getFailBuild() parameter. Specially helpful when debugging builds.
  • Type: java.lang.Boolean
  • Required: No
  • User Property: git.fail.build

<gitStatusPorcelain>

Runs a Git diff on the project to see if any files where changed. Can be configured to only print warnings or to fail the build for uncommitted changes.
<gitStatusPorcelain>
    <failBuild>false</failBuild>
    <verbosity>VERBOSE</verbosity>
</gitStatusPorcelain>

  • Type: org.faktorips.maven.plugin.mojo.internal.GitStatusPorcelain
  • Required: No

<importAsMavenProject>

Whether to import the Faktor-IPS project as a Maven project. If set to true the m2e plugin will be used to import the pom.xml of the Faktor-IPS project.
  • Type: boolean
  • Required: No
  • Default: true

<jdkDir>

Path to the JDK the project should build against. If no path is specified, the parameter jdkId will be evaluated. If both parameters do not contain a value, the executionEnvironment will be used as default.
  • Type: java.lang.String
  • Required: No
  • User Property: jdk.dir

<jdkId>

ID of the JDK the project should build against. The corresponding JDK must be configured in the Maven toolchains.xml This parameter is only evaluated if jdkDir is not specified. If this parameter does not contain a value either, the executionEnvironment will be used as default.
  • Type: java.lang.String
  • Required: No
  • User Property: jdk.id

<jvmArgs>

List of JVM arguments set on the command line.

Example:

<jvmArgs>
  <args>-javaagent:lombok.jar</args>
</jvmArgs>

  • Type: java.util.List<java.lang.String>
  • Required: No

<localRepository>

Path to a local repository.
  • Type: java.lang.String
  • Required: No
  • User Property: maven.repo.local

<loggingMode>

There are three different logging modes available for this plugin.
  • original
  • perThread
  • perThreadFiltered
Each mode will only affect the output of the Faktor-IPS build e.g. importing, creating java classes or do a HTML model export.

original: will redirect everything to STDOUT.

perThread: will redirect the STDOUT of every thread to it's own file, and output one file after the other.

perThreadFiltered: additionally to the perThread mode this mode will filter the thread's output for well known exceptions e.g. FileNotFoundException of the junit eclipse plugin.

The fastest mode is obviously the original mode while the slowest is the perThreadFiltered one. The overhead added to the build time by the perThreadFiltered is about 5% but will produce a clean and continuous log output even in multi-threaded builds.

When maven is started with -X or -debug, extensive log output is created and therefore the original mode is chosen automatically.

  • Type: org.faktorips.maven.plugin.mojo.internal.LoggingMode
  • Required: No
  • Default: perThreadFiltered

<repositories>

p2 repositories which will be used to resolve dependencies. If the default values should be used this parameter must remain unused. Additional repositories can then be defined using the additionalRepositories parameter. The paths of the default repositories can be changed individually using the parameters fipsRepository and eclipseRepository or the properties repository.fips, repository.eclipse.

Example:

<repositories>
 <repository>
  <id>faktor-ips-21-6</id>
  <layout>p2</layout>
  <url>https://update.faktorzehn.org/faktorips/v21_6/</url>
 </repository>
 <repository>
  <id>eclipse-2020-12</id>
  <layout>p2</layout>
  <url>http://download.eclipse.org/eclipse/updates/4.18/</url>
 </repository>
</repositories>


See also: additionalRepositories
  • Type: java.util.List<org.eclipse.tycho.plugins.p2.extras.Repository>
  • Required: No

<skip>

Whether to skip mojo execution.
  • Type: boolean
  • Required: No
  • User Property: faktorips.skip
  • Default: false

<work>

Work area. This includes:
  • <work>/configuration: The configuration area (-configuration)
  • <work>/data: The data ('workspace') area (-data)
  • Type: java.io.File
  • Required: No