<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>org.molgenis</groupId>
    <artifactId>molgenis</artifactId>
    <version>6.1.0</version>
    <packaging>pom</packaging>

    <!-- More Project Information -->
    <name>MOLGENIS</name>
    <description>
        MOLGENIS is a collaborative open source project on a mission to generate great software infrastructure for life
        science research
    </description>
    <url>http://www.molgenis.org</url>
    <licenses>
        <license>
            <name>GNU Library or Lesser General Public License (LGPL)</name>
        </license>
    </licenses>
    <scm>
        <connection>scm:git:git://github.com/molgenis/molgenis.git</connection>
        <url>https://github.com/molgenis/molgenis</url>
    </scm>

    <developers>
        <developer>
            <name>MOLGENIS development team</name>
            <email>molgenis@gmail.com</email>
            <organization>University Medical Centre Groningen, System Genetics, Genomics Coordination Centre
            </organization>
            <organizationUrl>http://www.molgenis.org</organizationUrl>
        </developer>
    </developers>

    <properties>
        <!-- maven properties -->
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <maven.build.timestamp.format>yyyy-MM-dd HH:mm z</maven.build.timestamp.format>

        <!-- molgenis specific properties -->
        <molgenis.build.timestamp>${maven.build.timestamp}</molgenis.build.timestamp>

        <!-- code quality monitoring properties -->
        <sonatype.id>sonatype-nexus-staging</sonatype.id>
        <sonar.jacoco.itReportPath>${project.basedir}/../target/jacoco-it.exec</sonar.jacoco.itReportPath>

        <!-- plugin versions -->
        <frontend-maven-plugin.version>1.6</frontend-maven-plugin.version>

        <!-- skip stuff -->
        <skip.js>false</skip.js>
        <skipTests>false</skipTests>
        <skipITs>${skipTests}</skipITs>
        <skipUTs>${skipTests}</skipUTs>

        <!-- dependency versions -->
        <slf4j.version>1.7.25</slf4j.version><!-- must match version in logback-parent pom -->
        <logback.version>1.2.2</logback.version>
        <spring.version>4.3.10.RELEASE</spring.version>
        <spring.security.version>4.2.3.RELEASE</spring.security.version>
        <hibernate.validator.version>4.3.2.Final</hibernate.validator.version>
        <httpclient.version>4.5.3</httpclient.version>
        <google.auto-value.version>1.4.1</google.auto-value.version>
        <caffeine.version>2.3.5</caffeine.version>
        <google.guava.version>21.0</google.guava.version>
        <google.gson.version>2.2.4</google.gson.version>
        <apache.commons.lang.version>3.1</apache.commons.lang.version>
        <apache.commons.io.version>2.4</apache.commons.io.version>
        <apache.rdf4j.version>2.0.2</apache.rdf4j.version>
        <jsr305.version>3.0.1</jsr305.version>
        <elasticsearch.version>5.5.1</elasticsearch.version>
        <postgres.version>9.4.1211</postgres.version>
        <findbugs-annotations.version>3.0.1</findbugs-annotations.version>
        <snakeyaml.version>1.15</snakeyaml.version>
        <jackson-annotations.version>2.8.8</jackson-annotations.version>
        <jackson-core.version>2.8.8</jackson-core.version>
        <jackson-databind.version>2.8.8.1</jackson-databind.version>
        <javax-servlet-api.version>3.0.1</javax-servlet-api.version>
        <freemarker.version>2.3.23</freemarker.version>
        <node.version>v8.9.0</node.version>
        <yarn.version>v1.1.0</yarn.version>

        <!-- test-dependency versions -->
        <jsonpath.version>2.4.0</jsonpath.version>
        <testng.version>6.8</testng.version>
        <mockito.version>2.7.22</mockito.version>
        <hamcrest-all.version>1.3</hamcrest-all.version>
        <awaitility.version>3.0.0</awaitility.version>

        <!-- Integration test properties -->
        <cargo-plugin.version>1.6.6</cargo-plugin.version>
        <tomcat.version>7.0.78</tomcat.version>
        <sql-maven-plugin.version>1.5</sql-maven-plugin.version>
        <elasticsearch-maven-plugin.version>5.7</elasticsearch-maven-plugin.version>
        <!-- if profiles are inactive, set these props to use local infrastructure -->
        <it_db_name>molgenis_test</it_db_name>
        <it_db_user>molgenis</it_db_user>
        <it_db_password>molgenis</it_db_password>
        <elasticsearch.transport.addresses>localhost:9300</elasticsearch.transport.addresses>
        <elasticsearch.cluster.name>molgenis</elasticsearch.cluster.name>
    </properties>

    <distributionManagement>
        <snapshotRepository>
            <id>${sonatype.id}</id>
            <url>https://oss.sonatype.org/content/repositories/snapshots</url>
        </snapshotRepository>
        <repository>
            <id>${sonatype.id}</id>
            <url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>
        </repository>
    </distributionManagement>

    <profiles>
        <!-- [release] Release to sonatype -->
        <profile>
            <id>release</id>
            <build>
                <pluginManagement>
                    <plugins>
                        <plugin>
                            <groupId>org.apache.maven.plugins</groupId>
                            <artifactId>maven-source-plugin</artifactId>
                            <version>3.0.1</version>
                        </plugin>
                        <plugin>
                            <groupId>org.apache.maven.plugins</groupId>
                            <artifactId>maven-javadoc-plugin</artifactId>
                            <version>2.10.4</version>
                            <configuration>
                                <additionalparam>-Xdoclint:none --allow-script-in-comments</additionalparam>
                            </configuration>
                        </plugin>
                        <plugin>
                            <groupId>org.apache.maven.plugins</groupId>
                            <artifactId>maven-gpg-plugin</artifactId>
                            <version>1.6</version>
                        </plugin>
                        <plugin>
                            <groupId>org.sonatype.plugins</groupId>
                            <artifactId>nexus-staging-maven-plugin</artifactId>
                            <version>1.6.8</version>
                            <extensions>true</extensions>
                            <configuration>
                                <serverId>${sonatype.id}</serverId>
                                <nexusUrl>https://oss.sonatype.org/</nexusUrl>
                                <autoReleaseAfterClose>true</autoReleaseAfterClose>
                            </configuration>
                        </plugin>
                    </plugins>
                </pluginManagement>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-source-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>attach-sources</id>
                                <goals>
                                    <goal>jar-no-fork</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-javadoc-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>attach-javadocs</id>
                                <goals>
                                    <goal>jar</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-gpg-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>sign-artifacts</id>
                                <phase>verify</phase>
                                <goals>
                                    <goal>sign</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <groupId>org.sonatype.plugins</groupId>
                        <artifactId>nexus-staging-maven-plugin</artifactId>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <!-- [skip-js-compile] Skip javascript compilation to speed up the build -->
        <profile>
            <id>skip-js-compile</id>
            <properties>
                <skip.js>true</skip.js>
            </properties>
        </profile>
    </profiles>

    <build>
        <!-- include *.ftl in src folder -->
        <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.ftl</include>
                </includes>
            </resource>
            <resource>
                <directory>${project.basedir}/src/main/resources</directory>
                <excludes>
                    <exclude>**molgenis.properties</exclude>
                    <exclude>**git.properties</exclude>
                </excludes>
            </resource>
        </resources>
        <pluginManagement>
            <plugins>
                <!-- use java 1.8 -->
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.6.1</version>
                    <configuration>
                        <source>1.8</source>
                        <target>1.8</target>
                        <compilerArguments>
                            <Xlint/>
                        </compilerArguments>
                    </configuration>
                </plugin>
                <!-- specify plugin version -->
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-war-plugin</artifactId>
                    <version>3.2.0</version>
                </plugin>
                <!-- specify plugin version -->
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-jar-plugin</artifactId>
                    <version>3.0.2</version>
                    <configuration>
                        <archive>
                            <manifest>
                                <addDefaultImplementationEntries>
                                    true
                                </addDefaultImplementationEntries>
                            </manifest>
                        </archive>
                        <excludes>
                            <exclude>**/logback-test.xml</exclude>
                        </excludes>
                    </configuration>
                </plugin>
                <!-- specify plugin version -->
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-resources-plugin</artifactId>
                    <version>3.0.2</version>
                    <executions>
                        <!-- copy generated resources to target folder -->
                        <execution>
                            <id>copy-generated-resources</id>
                            <phase>process-classes</phase>
                            <goals>
                                <goal>copy-resources</goal>
                            </goals>
                            <configuration>
                                <outputDirectory>${project.build.outputDirectory}</outputDirectory>
                                <resources>
                                    <resource>
                                        <directory>target/generated-resources</directory>
                                        <filtering>true</filtering>
                                    </resource>
                                </resources>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
                <plugin>
                    <groupId>com.github.kongchen</groupId>
                    <artifactId>swagger-maven-plugin</artifactId>
                    <version>3.1.5</version>
                </plugin>
                <!-- specify plugin version -->
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>jaxb2-maven-plugin</artifactId>
                    <version>1.5</version>
                </plugin>
                <!-- specify plugin version -->
                <plugin>
                    <groupId>org.jvnet.jax-ws-commons</groupId>
                    <artifactId>jaxws-maven-plugin</artifactId>
                    <version>2.1</version>
                </plugin>
                <!-- specify plugin version -->
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>2.19.1</version>
                    <configuration>
                        <skip>${skipUTs}</skip>
                        <argLine>${argLine}</argLine>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>build-helper-maven-plugin</artifactId>
                    <version>3.0.0</version>
                    <executions>
                        <execution>
                            <id>reserve-network-port</id>
                            <goals>
                                <goal>reserve-network-port</goal>
                            </goals>
                            <!-- disabled by default unless child pom binds it to existing phase -->
                            <phase>none</phase>
                            <configuration>
                                <portNames>
                                    <portName>elasticsearch.tcp.port</portName>
                                    <portName>elasticsearch.http.port</portName>
                                </portNames>
                                <randomPort>true</randomPort>
                            </configuration>
                        </execution>
                        <execution>
                            <id>minify-build-helper</id>
                            <phase>generate-resources</phase>
                            <goals>
                                <goal>add-resource</goal>
                            </goals>
                            <configuration>
                                <resources>
                                    <resource>
                                        <directory>target/generated-resources</directory>
                                    </resource>
                                </resources>
                            </configuration>
                        </execution>
                        <!-- add sources created by Google AutoValue -->
                        <execution>
                            <id>execution-annotations</id>
                            <phase>generate-sources</phase>
                            <goals>
                                <goal>add-source</goal>
                            </goals>
                            <configuration>
                                <sources>
                                    <source>target/generated-sources/annotations</source>
                                </sources>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-dependency-plugin</artifactId>
                    <version>3.0.1</version>
                </plugin>
                <!-- specify plugin version -->
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-site-plugin</artifactId>
                    <version>3.3</version>
                </plugin>
                <!-- specify plugin version -->
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>properties-maven-plugin</artifactId>
                    <version>1.0-alpha-2</version>
                </plugin>
                <!-- specify plugin version -->
                <plugin>
                    <groupId>org.jacoco</groupId>
                    <artifactId>jacoco-maven-plugin</artifactId>
                    <version>0.7.2.201409121644</version>
                </plugin>
                <!-- Eclipse m2e mappings -->
                <plugin>
                    <groupId>org.eclipse.m2e</groupId>
                    <artifactId>lifecycle-mapping</artifactId>
                    <version>1.0.0</version>
                    <configuration>
                        <lifecycleMappingMetadata>
                            <pluginExecutions>
                                <pluginExecution>
                                    <pluginExecutionFilter>
                                        <groupId>org.apache.maven.plugins</groupId>
                                        <artifactId>maven-antrun-plugin</artifactId>
                                        <versionRange>[1.7,)</versionRange>
                                        <goals>
                                            <goal>run</goal>
                                        </goals>
                                    </pluginExecutionFilter>
                                    <action>
                                        <ignore/>
                                    </action>
                                </pluginExecution>
                                <pluginExecution>
                                    <pluginExecutionFilter>
                                        <groupId>org.apache.maven.plugins</groupId>
                                        <artifactId>maven-enforcer-plugin</artifactId>
                                        <versionRange>[1.0.0,)</versionRange>
                                        <goals>
                                            <goal>enforce</goal>
                                        </goals>
                                    </pluginExecutionFilter>
                                    <action>
                                        <ignore/>
                                    </action>
                                </pluginExecution>
                                <pluginExecution>
                                    <pluginExecutionFilter>
                                        <groupId>org.jvnet.jax-ws-commons</groupId>
                                        <artifactId>jaxws-maven-plugin</artifactId>
                                        <versionRange>[2.1,)</versionRange>
                                        <goals>
                                            <goal>wsimport</goal>
                                        </goals>
                                    </pluginExecutionFilter>
                                    <action>
                                        <ignore/>
                                    </action>
                                </pluginExecution>
                                <pluginExecution>
                                    <pluginExecutionFilter>
                                        <groupId>org.codehaus.mojo</groupId>
                                        <artifactId>properties-maven-plugin</artifactId>
                                        <versionRange>[1.0-alpha-2,)</versionRange>
                                        <goals>
                                            <goal>read-project-properties</goal>
                                        </goals>
                                    </pluginExecutionFilter>
                                    <action>
                                        <ignore/>
                                    </action>
                                </pluginExecution>
                                <pluginExecution>
                                    <pluginExecutionFilter>
                                        <groupId>org.codehaus.mojo</groupId>
                                        <artifactId>build-helper-maven-plugin</artifactId>
                                        <versionRange>[1.8,)</versionRange>
                                        <goals>
                                            <goal>reserve-network-port</goal>
                                        </goals>
                                    </pluginExecutionFilter>
                                    <action>
                                        <ignore/>
                                    </action>
                                </pluginExecution>
                                <pluginExecution>
                                    <pluginExecutionFilter>
                                        <groupId>org.jacoco</groupId>
                                        <artifactId>jacoco-maven-plugin</artifactId>
                                        <versionRange>[0.7,)</versionRange>
                                        <goals>
                                            <goal>prepare-agent</goal>
                                        </goals>
                                    </pluginExecutionFilter>
                                    <action>
                                        <ignore/>
                                    </action>
                                </pluginExecution>
                            </pluginExecutions>
                        </lifecycleMappingMetadata>
                    </configuration>
                </plugin>
                <!--  integration test plugin -->
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-failsafe-plugin</artifactId>
                    <version>2.8.1</version>
                    <executions>
                        <execution>
                            <id>integration-test</id>
                            <phase>integration-test</phase>
                            <goals>
                                <goal>integration-test</goal>
                            </goals>
                        </execution>
                        <execution>
                            <id>verify</id>
                            <phase>verify</phase>
                            <goals>
                                <goal>verify</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
                <!-- SQL plugin -->
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>sql-maven-plugin</artifactId>
                    <version>${sql-maven-plugin.version}</version>
                    <dependencies>
                        <dependency>
                            <groupId>org.postgresql</groupId>
                            <artifactId>postgresql</artifactId>
                            <version>${postgres.version}</version>
                        </dependency>
                    </dependencies>
                    <configuration>
                        <driver>org.postgresql.Driver</driver>
                        <url>jdbc:postgresql://localhost/</url>
                        <username>${it_db_user}</username>
                        <password>${it_db_password}</password>
                        <forceMojoExecution>true</forceMojoExecution>
                        <onError>continue</onError>
                        <autocommit>true</autocommit>
                        <skip>${skipTests}</skip>
                    </configuration>
                    <executions>
                        <execution>
                            <id>create postgres integration database</id>
                            <goals>
                                <goal>execute</goal>
                            </goals>
                            <!-- skip by default unless child pom binds it to existing phase -->
                            <phase>none</phase>
                            <configuration>
                                <sqlCommand>CREATE DATABASE ${it_db_name};</sqlCommand>
                            </configuration>
                        </execution>
                        <execution>
                            <id>drop postgres integration database</id>
                            <goals>
                                <goal>execute</goal>
                            </goals>
                            <!-- skip by default unless child pom binds it to existing phase -->
                            <phase>none</phase>
                            <configuration>
                                <sqlCommand>DROP DATABASE ${it_db_name};</sqlCommand>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
                <!-- Elasticsearch plugin start and stop elasticsearch instance -->
                <plugin>
                    <groupId>com.github.alexcojocaru</groupId>
                    <artifactId>elasticsearch-maven-plugin</artifactId>
                    <version>${elasticsearch-maven-plugin.version}</version>
                    <configuration>
                        <version>${elasticsearch.version}</version>
                        <clusterName>${elasticsearch.cluster.name}</clusterName>
                        <pathConf>${project.build.directory}/test-classes/conf/elasticsearch</pathConf>
                        <transportPort>${elasticsearch.tcp.port}</transportPort>
                        <httpPort>${elasticsearch.http.port}</httpPort>
                        <!-- on build server, concurrent launches are slow to start -->
                        <timeout>120</timeout>
                        <skip>${skipTests}</skip>
                    </configuration>
                    <executions>
                        <execution>
                            <id>start-elasticsearch</id>
                            <phase>none</phase>
                            <goals>
                                <goal>runforked</goal>
                            </goals>
                        </execution>
                        <execution>
                            <id>stop-elasticsearch</id>
                            <phase>none</phase>
                            <goals>
                                <goal>stop</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
                <!-- Cargo plugin stops and starts Tomcat -->
                <plugin>
                    <groupId>org.codehaus.cargo</groupId>
                    <artifactId>cargo-maven2-plugin</artifactId>
                    <version>${cargo-plugin.version}</version>
                    <configuration>
                        <skip>${skipTests}</skip>
                    </configuration>
                </plugin>
                <!-- minify css/js -->
                <plugin>
                    <groupId>com.samaxes.maven</groupId>
                    <artifactId>minify-maven-plugin</artifactId>
                    <version>1.7.4</version>
                    <executions>
                        <execution>
                            <id>default-minify</id>
                            <phase>generate-resources</phase>
                            <goals>
                                <goal>minify</goal>
                            </goals>
                            <configuration>
                                <charset>UTF-8</charset>
                                <webappSourceDir>${project.basedir}/src/main/resources</webappSourceDir>
                                <webappTargetDir>${project.build.directory}/generated-resources</webappTargetDir>
                                <cssSourceIncludes>
                                    <cssSourceInclude>**/*.css</cssSourceInclude>
                                    <cssSourceInclude>**/**/*.css</cssSourceInclude>
                                </cssSourceIncludes>
                                <cssSourceExcludes>
                                    <!-- changes to excludes must be applied to molgenis-core-ui/src/main/resources/templates/resource-macros.ftl -->
                                    <cssSourceExclude>**/*.min.css</cssSourceExclude>
                                    <cssSourceExclude>**/*-min.css</cssSourceExclude>
                                    <cssSourceExclude>**/**/*.min.css</cssSourceExclude>
                                    <cssSourceExclude>**/**/*-min.css</cssSourceExclude>
                                </cssSourceExcludes>
                                <jsSourceIncludes>
                                    <jsSourceInclude>**/*.js</jsSourceInclude>
                                </jsSourceIncludes>
                                <jsSourceExcludes>
                                    <!-- changes to excludes must be applied to molgenis-core-ui/src/main/resources/templates/resource-macros.ftl -->
                                    <jsSourceExclude>**/*.min.js</jsSourceExclude>
                                    <cssSourceExclude>**/*-min.js</cssSourceExclude>
                                    <jsSourceExclude>**/src-min-noconflict/**</jsSourceExclude>
                                </jsSourceExcludes>
                                <nosuffix>false</nosuffix>
                                <skipMerge>true</skipMerge>
                                <skipMinify>false</skipMinify>
                                <!-- setting verbose to true will to output js warnings -->
                                <verbose>false</verbose>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </pluginManagement>

        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-enforcer-plugin</artifactId>
                <version>1.4.1</version>
                <executions>
                    <execution>
                        <id>enforce-banned-dependencies</id>
                        <goals>
                            <goal>enforce</goal>
                        </goals>
                        <configuration>
                            <rules>
                                <bannedDependencies>
                                    <excludes>
                                        <exclude>commons-logging:commons-logging</exclude>
                                        <exclude>org.apache.logging.log4j:log4j</exclude>
                                        <exclude>com.google.guava:guava-jdk5</exclude>
                                        <!-- As of Java 1.6 StAX is part of the standard API -->
                                        <exclude>javax.xml.stream:stax-api</exclude>
                                        <exclude>stax:stax-api</exclude>
                                    </excludes>
                                    <searchTransitive>true</searchTransitive>
                                </bannedDependencies>
                            </rules>
                            <fail>true</fail>
                        </configuration>
                    </execution>
                </executions>
                <dependencies>
                    <dependency>
                        <groupId>org.codehaus.mojo</groupId>
                        <artifactId>extra-enforcer-rules</artifactId>
                        <version>1.0-beta-6</version>
                    </dependency>
                </dependencies>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
            </plugin>
            <plugin>
                <!-- add minified resources to build path -->
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>build-helper-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <id>minify-build-helper</id>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.jacoco</groupId>
                <artifactId>jacoco-maven-plugin</artifactId>
                <configuration>
                    <append>true</append>
                </configuration>
                <executions>
                    <execution>
                        <id>agent-for-ut</id>
                        <goals>
                            <goal>prepare-agent</goal>
                        </goals>
                        <configuration>
                            <skip>${skipTests}</skip>
                        </configuration>
                    </execution>
                    <execution>
                        <id>agent-for-it</id>
                        <goals>
                            <goal>prepare-agent-integration</goal>
                        </goals>
                        <configuration>
                            <skip>${skipTests}</skip>
                        </configuration>
                    </execution>
                    <execution>
                        <id>jacoco-site</id>
                        <phase>verify</phase>
                        <goals>
                            <goal>report</goal>
                        </goals>
                        <configuration>
                            <skip>${skipTests}</skip>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

    <reporting>
        <plugins>
            <!-- code analysis -->
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>findbugs-maven-plugin</artifactId>
                <version>3.0.0</version>
                <configuration>
                    <xmlOutput>true</xmlOutput>
                </configuration>
            </plugin>
            <!-- project reports -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-project-info-reports-plugin</artifactId>
                <version>2.9</version>
                <configuration>
                    <!-- improve report generation performance -->
                    <dependencyLocationsEnabled>false</dependencyLocationsEnabled>
                    <project.remoteArtifactRepositories>enonic</project.remoteArtifactRepositories>
                </configuration>
            </plugin>
        </plugins>
    </reporting>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.yaml</groupId>
                <artifactId>snakeyaml</artifactId>
                <version>${snakeyaml.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.httpcomponents</groupId>
                <artifactId>httpclient</artifactId>
                <version>${httpclient.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.httpcomponents</groupId>
                <artifactId>httpmime</artifactId>
                <version>${httpclient.version}</version>
            </dependency>
            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-annotations</artifactId>
                <version>${jackson-annotations.version}</version>
            </dependency>
            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-core</artifactId>
                <version>${jackson-core.version}</version>
            </dependency>
            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-databind</artifactId>
                <version>${jackson-databind.version}</version>
            </dependency>
            <dependency>
                <groupId>org.freemarker</groupId>
                <artifactId>freemarker</artifactId>
                <version>${freemarker.version}</version>
            </dependency>
            <!-- see http://docs.spring.io/spring-security/site/docs/3.2.x/reference/htmlsingle/#maven-bom -->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-framework-bom</artifactId>
                <version>${spring.version}</version>
                <type>pom</type>
                <scope>import</scope>
                <!-- Enable exclusions when dependency management import supports exclusions: https://issues.apache.org/jira/browse/MNG-5600 -->
                <!--
                <exclusions>
                    <exclusion>
                        <groupId>commons-logging</groupId>
                        <artifactId>commons-logging</artifactId>
                    </exclusion>
                </exclusions>
                -->
            </dependency>
            <dependency>
                <groupId>org.springframework.security</groupId>
                <artifactId>spring-security-bom</artifactId>
                <version>${spring.security.version}</version>
                <type>pom</type>
                <scope>import</scope>
                <!-- Enable exclusions when dependency management import supports exclusions: https://issues.apache.org/jira/browse/MNG-5600 -->
                <!--
                <exclusions>
                    <exclusion>
                        <groupId>commons-logging</groupId>
                        <artifactId>commons-logging</artifactId>
                    </exclusion>
                </exclusions>
                -->
            </dependency>
            <dependency>
                <groupId>com.google.guava</groupId>
                <artifactId>guava</artifactId>
                <version>${google.guava.version}</version>
            </dependency>
            <dependency>
                <groupId>com.github.ben-manes.caffeine</groupId>
                <artifactId>caffeine</artifactId>
                <version>${caffeine.version}</version>
            </dependency>
            <dependency>
                <groupId>com.github.ben-manes.caffeine</groupId>
                <artifactId>guava</artifactId>
                <version>${caffeine.version}</version>
            </dependency>
            <dependency>
                <groupId>commons-io</groupId>
                <artifactId>commons-io</artifactId>
                <version>${apache.commons.io.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.commons</groupId>
                <artifactId>commons-lang3</artifactId>
                <version>${apache.commons.lang.version}</version>
            </dependency>
            <dependency>
                <groupId>org.hibernate</groupId>
                <artifactId>hibernate-validator</artifactId>
                <version>${hibernate.validator.version}</version>
            </dependency>
            <dependency>
                <groupId>com.google.auto.value</groupId>
                <artifactId>auto-value</artifactId>
                <version>${google.auto-value.version}</version>
            </dependency>
            <dependency>
                <groupId>com.google.code.findbugs</groupId>
                <artifactId>jsr305</artifactId>
                <version>${jsr305.version}</version>
            </dependency>
            <dependency>
                <groupId>com.google.code.findbugs</groupId>
                <artifactId>findbugs-annotations</artifactId>
                <version>${findbugs-annotations.version}</version>
            </dependency>
            <dependency>
                <groupId>org.elasticsearch.client</groupId>
                <artifactId>transport</artifactId>
                <version>${elasticsearch.version}</version>
            </dependency>
            <dependency>
                <groupId>org.postgresql</groupId>
                <artifactId>postgresql</artifactId>
                <version>${postgres.version}</version>
            </dependency>
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>javax.servlet-api</artifactId>
                <version>${javax-servlet-api.version}</version>
            </dependency>
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>log4j-over-slf4j</artifactId>
                <version>${slf4j.version}</version>
            </dependency>
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>jcl-over-slf4j</artifactId>
                <version>${slf4j.version}</version>
            </dependency>
            <dependency>
                <groupId>org.testng</groupId>
                <artifactId>testng</artifactId>
                <version>${testng.version}</version>
            </dependency>
            <dependency>
                <groupId>com.jayway.jsonpath</groupId>
                <artifactId>json-path</artifactId>
                <version>${jsonpath.version}</version>
            </dependency>
            <dependency>
                <groupId>org.mockito</groupId>
                <artifactId>mockito-core</artifactId>
                <version>${mockito.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>org.hamcrest</groupId>
                        <artifactId>hamcrest-core</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>org.hamcrest</groupId>
                <artifactId>hamcrest-all</artifactId>
                <version>${hamcrest-all.version}</version>
            </dependency>
            <dependency>
                <groupId>org.awaitility</groupId>
                <artifactId>awaitility</artifactId>
                <version>${awaitility.version}</version>
            </dependency>
            <dependency>
                <groupId>io.swagger</groupId>
                <artifactId>swagger-annotations</artifactId>
                <version>1.5.16</version>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <dependencies>
        <dependency>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
        </dependency>
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>${logback.version}</version>
        </dependency>
    </dependencies>

    <modules>
        <module>molgenis-amazon-bucket</module>
        <module>molgenis-api-tests</module>
        <module>molgenis-app</module>
        <module>molgenis-apps</module>
        <module>molgenis-bootstrap</module>
        <module>molgenis-core-ui</module>
        <module>molgenis-core</module>
        <module>molgenis-data-annotators</module>
        <module>molgenis-data-cache</module>
        <module>molgenis-data-csv</module>
        <module>molgenis-data-elasticsearch</module>
        <module>molgenis-data-excel</module>
        <module>molgenis-data-file</module>
        <module>molgenis-data-i18n</module>
        <module>molgenis-data-import</module>
        <module>molgenis-data-index</module>
        <module>molgenis-data-migrate</module>
        <module>molgenis-data-platform</module>
        <module>molgenis-data-plugin</module>
        <module>molgenis-data-postgresql</module>
        <module>molgenis-data-rest-client</module>
        <module>molgenis-data-rest</module>
        <module>molgenis-data-security</module>
        <module>molgenis-data-validation</module>
        <module>molgenis-data-vcf</module>
        <module>molgenis-data</module>
        <module>molgenis-dataexplorer</module>
        <module>molgenis-fair</module>
        <module>molgenis-file-ingester</module>
        <module>molgenis-gavin</module>
        <module>molgenis-genomebrowser</module>
        <module>molgenis-jobs</module>
        <module>molgenis-js</module>
        <module>molgenis-metadata-manager</module>
        <module>molgenis-navigator</module>
        <module>molgenis-one-click-importer</module>
        <module>molgenis-ontology-core</module>
        <module>molgenis-ontology</module>
        <module>molgenis-platform-integration-tests</module>
        <module>molgenis-python</module>
        <module>molgenis-questionnaires</module>
        <module>molgenis-r</module>
        <module>molgenis-searchall</module>
        <module>molgenis-scripts-core</module>
        <module>molgenis-scripts</module>
        <module>molgenis-security-core</module>
        <module>molgenis-security</module>
        <module>molgenis-semantic-mapper</module>
        <module>molgenis-semantic-search</module>
        <module>molgenis-settings</module>
        <module>molgenis-swagger</module>
        <module>molgenis-test</module>
        <module>molgenis-util</module>
        <module>molgenis-web</module>
        <module>molgenis-i18n</module>
        <module>molgenis-beacon</module>
    </modules>
</project>
