<?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>com.buschmais.jqassistant</groupId>
  <artifactId>jqa-uber-parent</artifactId>
  <version>1.2.0</version>
  <packaging>pom</packaging>

  <name>jQAssistant Ueber Parent</name>
  <url>http://jqassistant.org/</url>

  <description>
    Maven Parent POM for all projects of the jQAssistant ecosystem.
    It provides comman and usefull settings shared by all
    jQAssistant projects.
  </description>

  <organization>
    <name>buschmais GbR</name>
    <url>http://www.buschmais.com</url>
  </organization>

  <licenses>
    <license>
      <name>GNU General Public License, v3</name>
      <url>http://www.gnu.org/licenses/gpl-3.0.txt</url>
    </license>
  </licenses>

  <scm>
    <connection>scm:git:git@github.com:buschmais/jqa-uber-parent.git</connection>
    <developerConnection>scm:git:git@github.com:buschmais/jqa-uber-parent.git</developerConnection>
    <url>https://github.com/buschmais/jqa-uber-parent/</url>
    <tag>1.2.0</tag>
  </scm>

  <prerequisites>
    <maven>3.2</maven>
  </prerequisites>

  <distributionManagement>
    <snapshotRepository>
      <id>sonatype-nexus-snapshots</id>
      <name>Sonatype Nexus Snapshots</name>
      <url>https://oss.sonatype.org/content/repositories/snapshots/</url>
    </snapshotRepository>
    <repository>
      <id>sonatype-nexus-staging</id>
      <name>Nexus Release Repository</name>
      <url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>
    </repository>
  </distributionManagement>

  <repositories>
    <repository>
      <snapshots>
        <enabled>true</enabled>
      </snapshots>
      <id>sonatype-nexus-snapshots</id>
      <name>Sonatype Nexus Snapshots</name>
      <url>https://oss.sonatype.org/content/repositories/snapshots</url>
    </repository>
  </repositories>

  <developers>
    <developer>
      <id>dirk-mahler</id>
      <name>Dirk Mahler</name>
      <email>dirk.mahler@buschmais.com</email>
    </developer>
    <developer>
      <id>oliver.b.fischer</id>
      <name>Oliver B. Fischer</name>
      <email>o.b.fischer@swe-blog.net</email>
    </developer>
  </developers>
 
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <com.buschmais.xo.version>0.7.0</com.buschmais.xo.version>
    <maven.clean.version>3.0.0</maven.clean.version>
    <maven.compiler.version>3.5</maven.compiler.version>
    <maven.failsafe.version>2.19.1</maven.failsafe.version>
    <maven.install.version>2.5.2</maven.install.version>
    <maven.javadoc.version>2.10.4</maven.javadoc.version>
    <maven-jaxb2-plugin.version>0.9.0</maven-jaxb2-plugin.version>

    <!--
     ! The current version of jQAssistant is always scanned by the
     ! previous version of jQAssistant.
     !                          Oliver B. Fischer, 2015-11-27
     !-->
    <maven.jqassistant.previous.version>1.2.0-RC1</maven.jqassistant.previous.version>
    <maven.min.version>3.2.5</maven.min.version>
    <maven.source.plugin>3.0.1</maven.source.plugin>
    <maven.surefire.version>${maven.failsafe.version}</maven.surefire.version>
    <org.asciidoctor-plugin.version>1.5.3</org.asciidoctor-plugin.version>
  </properties>
  <build>
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.asciidoctor</groupId>
          <artifactId>asciidoctor-maven-plugin</artifactId>
          <version>${org.asciidoctor-plugin.version}</version>
        </plugin>
        <plugin>
          <groupId>com.buschmais.jqassistant</groupId>
          <artifactId>jqassistant-maven-plugin</artifactId>
          <version>${maven.jqassistant.previous.version}</version>
          <executions>
            <execution>
              <id>default</id>
              <goals>
                <goal>scan</goal>
                <goal>analyze</goal>
              </goals>
            </execution>
          </executions>
          <configuration>
            <failOnViolations>true</failOnViolations>
          </configuration>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-clean-plugin</artifactId>
          <version>${maven.clean.version}</version>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-failsafe-plugin</artifactId>
          <version>${maven.failsafe.version}</version>
          <dependencies>
            <!-- We need the manual specification of the JUnit provider
                 since there is a single TestNG test class for the TestNG
                 scanner plugin. Oliver B. Fischer, 2015-09-20
                 See:
                 https://github.com/buschmais/jqassistant/issues/252
                 https://github.com/buschmais/jqassistant/issues/246
                 https://github.com/buschmais/jqassistant/issues/249 -->
            <dependency>
              <groupId>org.apache.maven.surefire</groupId>
              <artifactId>surefire-junit47</artifactId>
              <version>${maven.failsafe.version}</version>
            </dependency>
          </dependencies>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>${maven.surefire.version}</version>
          <configuration>
            <includes>
              <include>**/*Test.java</include>
            </includes>
          </configuration>
          <dependencies>
            <!-- We need the manual specification of the JUnit provider
                 since there is a single TestNG test class for the TestNG
                 scanner plugin. Oliver B. Fischer, 2015-09-20
                 See:
                 https://github.com/buschmais/jqassistant/issues/252
                 https://github.com/buschmais/jqassistant/issues/246
                 https://github.com/buschmais/jqassistant/issues/249 -->
            <dependency>
              <groupId>org.apache.maven.surefire</groupId>
              <artifactId>surefire-junit47</artifactId>
              <version>${maven.surefire.version}</version>
            </dependency>
          </dependencies>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-assembly-plugin</artifactId>
          <version>2.5.3</version>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>${maven.compiler.version}</version>
          <configuration>
            <encoding>UTF-8</encoding>
            <source>1.7</source>
            <target>1.7</target>
            <testSource>1.8</testSource>
            <testTarget>1.8</testTarget>
          </configuration>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-javadoc-plugin</artifactId>
          <version>${maven.javadoc.version}</version>
          <configuration>
            <encoding>UTF-8</encoding>
          </configuration>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-install-plugin</artifactId>
          <version>${maven.install.version}</version>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-jar-plugin</artifactId>
          <version>2.6</version>
        </plugin>

        <plugin>
          <groupId>org.jvnet.jaxb2.maven2</groupId>
          <artifactId>maven-jaxb2-plugin</artifactId>
          <version>${maven-jaxb2-plugin.version}</version>
          <executions>
            <execution>
              <goals>
                <goal>generate</goal>
              </goals>
              <configuration>
                <schemaDirectory>src/main/resources/META-INF/xsd</schemaDirectory>
                <args>
                  <arg>-mark-generated</arg>
                  <arg>-Xdefault-value</arg>
                  <arg>-Xno-comment</arg>
                </args>
                <plugins>
                  <plugin>
                    <groupId>org.jvnet.jaxb2_commons</groupId>
                    <artifactId>jaxb2-default-value</artifactId>
                    <version>1.1</version>
                  </plugin>
                  <!--
                   ! This is a custom plugin which suppresses the generation
                   ! of JavaDoc descriptions. We this as our JavaDoc is written
                   ! in Asciidoctor and the JAXB 2 plugin generated the standard
                   ! JavaDoc descriptions.
                   ! Oliver B. Fischer, 2016-12-26
                   !-->
                  <plugin>
                      <groupId>com.buschmais.x2j.nocomment</groupId>
                      <artifactId>nocomment-plugin</artifactId>
                      <version>0.1</version>
                  </plugin>
                </plugins>
              </configuration>
            </execution>
          </executions>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-shade-plugin</artifactId>
          <version>2.4.1</version>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-dependency-plugin</artifactId>
          <version>2.10</version>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-deploy-plugin</artifactId>
          <version>2.8.2</version>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-enforcer-plugin</artifactId>
          <version>1.4.1</version>
          <executions>
            <execution>
              <id>enforce-maven</id>
              <goals>
                <goal>enforce</goal>
              </goals>
              <configuration>
                <rules>
                  <requireMavenVersion>
                    <version>[${maven.min.version},)</version>
                  </requireMavenVersion>
                  <requireJavaVersion>
                    <version>1.8</version>
                  </requireJavaVersion>
                  <requireSameVersions>
                    <plugins>
                      <plugin>org.apache.maven.plugins:maven-surefire-plugin</plugin>
                      <plugin>org.apache.maven.plugins:maven-failsafe-plugin</plugin>
                      <plugin>org.apache.maven.plugins:maven-surefire-report-plugin</plugin>
                    </plugins>
                  </requireSameVersions>
                  <requirePluginVersions>
                    <message>Best Practice is to always define plugin versions!</message>
                    <banLatest>true</banLatest>
                    <banRelease>true</banRelease>
                    <banSnapshots>true</banSnapshots>
                    <phases>clean,deploy,site</phases>
                  </requirePluginVersions>
                </rules>
              </configuration>
            </execution>
          </executions>
        </plugin>


        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-release-plugin</artifactId>
          <version>2.5.3</version>
          <configuration>
            <mavenExecutorId>forked-path</mavenExecutorId>
            <autoVersionSubmodules>true</autoVersionSubmodules>
            <tagNameFormat>@{version}</tagNameFormat>
            <goals>deploy</goals>
          </configuration>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-resources-plugin</artifactId>
          <version>3.0.1</version>
          <configuration>
            <encoding>UTF-8</encoding>
          </configuration>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-site-plugin</artifactId>
          <version>3.4</version>
          <dependencies>
            <dependency>
              <groupId>org.apache.maven.doxia</groupId>
              <artifactId>doxia-module-markdown</artifactId>
              <version>1.6</version>
            </dependency>
            <dependency>
              <groupId>org.asciidoctor</groupId>
              <artifactId>asciidoctor-maven-plugin</artifactId>
              <version>${org.asciidoctor-plugin.version}</version>
            </dependency>
          </dependencies>
          <configuration>
            <skipDeploy>true</skipDeploy>
          </configuration>
        </plugin>


        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-source-plugin</artifactId>
          <version>${maven.source.plugin}</version>
          <executions>
            <execution>
              <id>attach-sources</id>
              <goals>
                <goal>jar-no-fork</goal>
              </goals>
            </execution>
          </executions>
        </plugin>

        <plugin>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>build-helper-maven-plugin</artifactId>
          <version>1.9.1</version>
        </plugin>

        <plugin>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>xml-maven-plugin</artifactId>
          <version>1.0</version>
        </plugin>


      </plugins>
    </pluginManagement>

    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-enforcer-plugin</artifactId>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-source-plugin</artifactId>
      </plugin>

    </plugins>

  </build>

  <profiles>
    <profile>
      <id>IT</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-failsafe-plugin</artifactId>
            <executions>
              <execution>
                <goals>
                  <goal>integration-test</goal>
                  <goal>verify</goal>
                </goals>
                <configuration>
                  <argLine>-Xmx768M -XX:+HeapDumpOnOutOfMemoryError</argLine>
                  <forkCount>1</forkCount>
                  <reuseForks>false</reuseForks>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>release</id>
      <!--
       ! This profile is automatically activated by using maven-release-plugin:perfom.
       ! So this mean signing of artifacts is only done in case of running a release.
       !-->
      <activation>
        <property>
          <name>performRelease</name>
          <value>true</value>
        </property>
      </activation>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-gpg-plugin</artifactId>
            <version>1.6</version>
            <executions>
              <execution>
                <id>sign-artifacts</id>
                <phase>verify</phase>
                <goals>
                  <goal>sign</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>

  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>com.buschmais.xo</groupId>
        <artifactId>xo.neo4j</artifactId>
        <version>${com.buschmais.xo.version}</version>
      </dependency>
    </dependencies>

  </dependencyManagement>

</project>
