Maven

Last modified: 20 April 2023

Note that you can create new Maven-based build configuration Creating and Editing Build Configurations, and set up a Configuring Maven Triggers, if specific Maven artifact has changed.

Below you can find reference information about the Maven2 Build Runner fields:

Maven Parameters



Maven Home



In Maven selection field choose Maven version you want to use. By default the path to Maven installation is taken from the M2_HOME environment variable, otherwise the bundled Maven 3 is used. Alternatively, you can set it as %\MAVEN_HOME% environment variable right on a build agent.

User Settings



Specify what kind of user settings to use here. This is equivalent to Maven command line option -s or --settings. The available options are:

Java Parameters



Local Artifact Repository Settings



Select Use own local repository for this build configuration to isolate this build configuration's artifacts repository from other local repositories.

Incremental Building



Select Build only modules affected by changes check box to enable incremental building of Maven modules. The general idea is that if you have a number of modules interconnected by dependencies, a change most probably affects (directly or transitively) only some of them, so if we build only affected modules and take the result of building the rest of the modules from the previous build we will have the overall result equal to the result of building the whole project from scratch with less effort and faster.

Since Maven itself has very limited support for incremental builds, TeamCity uses its own change impact analysis algorithm for determining the set of affected modules and uses a special preliminary phase for making dependencies of the affected modules.

First TeamCity performs own change impact analysis taking into account parent relationship and different dependency scopes and determines affected modules. Then the build is split into two sequential Maven executions.

The first Maven execution called preparation phase is intended for building the dependencies of affected modules. The preparation phase is to assure there will be no compiler or other errors during the second execution caused by absence or inconsistency of dependency classes.

The second Maven execution called main phase executes the main goal (for example, test), thus performing only those tests affected by the change.

Code Coverage



Coverage support based on IDEA coverage engine is added to Maven runner. To learn about configuring code coverage options, please refer to the Configuring Java Code Coverage page.