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

  <parent>
    <groupId>de.japrost</groupId>
    <artifactId>japrost-parent</artifactId>
    <version>5.4</version>
  </parent>

  <artifactId>japrost-java-parent</artifactId>
  <version>11.0.3</version>
  <packaging>pom</packaging>

  <name>JaProSt Java Development</name>
  <description>Java Programming Studio - Java Development</description>
  <url>http://www.japrost.de/java/</url>

  <properties>
    <!-- configuration -->
    <maven.compiler.release>11</maven.compiler.release>
    <japrost.qa.version>1.0</japrost.qa.version>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <!-- plugin versions -->
    <version.build-helper-maven-plugin>3.0.0</version.build-helper-maven-plugin>
    <version.jacoco-maven-plugin>0.8.2</version.jacoco-maven-plugin>
    <version.maven-checkstyle-plugin>3.0.0</version.maven-checkstyle-plugin>
    <version.maven-checkstyle-plugin.checkstyle>8.15</version.maven-checkstyle-plugin.checkstyle>
    <version.maven-compiler-plugin>3.8.0</version.maven-compiler-plugin>
    <version.maven-failsafe-plugin>2.22.0</version.maven-failsafe-plugin>
    <version.maven-javadoc-plugin>3.0.1</version.maven-javadoc-plugin>
    <version.maven-jxr-plugin>3.0.0</version.maven-jxr-plugin>
    <version.maven-surefire-plugin>3.0.0-M4</version.maven-surefire-plugin>
    <version.maven-source-plugin>3.0.1</version.maven-source-plugin>
    <!-- dependencies versions compile / runtime -->
    <version.commons-io>2.6</version.commons-io>
    <version.commons-lang3>3.8</version.commons-lang3>
    <!-- dependencies versions test -->
    <version.assertj>3.11.1</version.assertj>
    <version.easymock>3.2</version.easymock>
    <version.junit>5.6.0</version.junit>
    <version.mockito-core>2.22.0</version.mockito-core>
    <version.testUtils>0.1.3</version.testUtils>
  </properties>

  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-lang3</artifactId>
        <version>${version.commons-lang3}</version>
      </dependency>
      <dependency>
        <groupId>commons-io</groupId>
        <artifactId>commons-io</artifactId>
        <version>${version.commons-io}</version>
      </dependency>
      <!-- TEST Dependencies -->
      <dependency>
        <groupId>org.junit</groupId>
        <artifactId>junit-bom</artifactId>
        <version>${version.junit}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
      <dependency>
        <groupId>org.outsideMyBox</groupId>
        <artifactId>testUtils</artifactId>
        <version>${version.testUtils}</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.mockito</groupId>
        <artifactId>mockito-core</artifactId>
        <version>${version.mockito-core}</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.assertj</groupId>
        <artifactId>assertj-core</artifactId>
        <!-- use 2.8.0 for Java 7 projects -->
        <version>${version.assertj}</version>
        <scope>test</scope>
      </dependency>
    </dependencies>
  </dependencyManagement>
  <build>
    <pluginManagement>
      <plugins>
        <plugin>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>${version.maven-compiler-plugin}</version>
        </plugin>
        <plugin>
          <artifactId>maven-failsafe-plugin</artifactId>
          <version>${version.maven-failsafe-plugin}</version>
        </plugin>
        <plugin>
          <artifactId>maven-javadoc-plugin</artifactId>
          <version>${version.maven-javadoc-plugin}</version>
          <dependencies>
            <dependency>
              <groupId>org.ow2.asm</groupId>
              <artifactId>asm</artifactId>
              <version>7.0</version>
            </dependency>
          </dependencies>
        </plugin>
        <plugin>
          <artifactId>maven-source-plugin</artifactId>
          <version>${version.maven-source-plugin}</version>
        </plugin>
        <plugin>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>${version.maven-surefire-plugin}</version>
        </plugin>
        <plugin>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>build-helper-maven-plugin</artifactId>
          <version>${version.build-helper-maven-plugin}</version>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>
  <!-- additional reporting for java projects -->
  <reporting>
    <plugins>
    </plugins>
  </reporting>
  <profiles>
    <profile>
      <id>javadocNsources</id>
      <build>
        <plugins>
          <plugin>
            <artifactId>maven-javadoc-plugin</artifactId>
            <executions>
              <execution>
                <id>attach-javadoc</id>
                <goals>
                  <goal>jar</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <artifactId>maven-source-plugin</artifactId>
            <executions>
              <execution>
                <id>attach-sources</id>
                <goals>
                  <goal>jar-no-fork</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>javaReports</id>
      <activation>
        <file>
          <exists>${basedir}/src/main/java</exists>
        </file>
      </activation>
      <build>
        <plugins>
          <plugin>
            <groupId>org.jacoco</groupId>
            <artifactId>jacoco-maven-plugin</artifactId>
            <version>${version.jacoco-maven-plugin}</version>
            <executions>
              <execution>
                <id>default-prepare-agent</id>
                <goals>
                  <goal>prepare-agent</goal>
                </goals>
              </execution>
              <execution>
                <id>default-report</id>
                <phase>prepare-package</phase>
                <goals>
                  <goal>report</goal>
                </goals>
              </execution>
              <execution>
                <id>default-check</id>
                <goals>
                  <goal>check</goal>
                </goals>
                <configuration>
                  <rules>
                    <rule>
                      <element>BUNDLE</element>
                      <limits>
                        <limit>
                          <!-- overall INSTRUCTION coverage must be 60% -->
                          <counter>INSTRUCTION</counter>
                          <value>COVEREDRATIO</value>
                          <minimum>0.60</minimum>
                        </limit>
                        <limit>
                          <!-- overall BRANCH coverage must be 60% -->
                          <counter>BRANCH</counter>
                          <value>COVEREDRATIO</value>
                          <minimum>0.60</minimum>
                        </limit>
                      </limits>
                    </rule>
                  </rules>
                </configuration>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <artifactId>maven-checkstyle-plugin</artifactId>
            <version>${version.maven-checkstyle-plugin}</version>
            <configuration>
              <excludes>**/module-info.java,module-info.java</excludes>
            </configuration>
            <dependencies>
              <dependency>
                <groupId>com.puppycrawl.tools</groupId>
                <artifactId>checkstyle</artifactId>
                <version>${version.maven-checkstyle-plugin.checkstyle}</version>
              </dependency>
              <dependency>
                <groupId>de.japrost</groupId>
                <artifactId>japrost-qa</artifactId>
                <classifier>java-qa-resources</classifier>
                <version>${japrost.qa.version}</version>
              </dependency>
            </dependencies>
          </plugin>
        </plugins>
      </build>
      <reporting>
        <plugins>
          <plugin>
            <artifactId>maven-javadoc-plugin</artifactId>
            <version>${version.maven-javadoc-plugin}</version>
          </plugin>
          <plugin>
            <artifactId>maven-checkstyle-plugin</artifactId>
            <version>${version.maven-checkstyle-plugin}</version>
            <configuration>
              <configLocation>de/japrost/java/qa/checkstyle_easy-going.xml</configLocation>
              <excludes>**/module-info.java,module-info.java</excludes>
            </configuration>
            <reportSets>
              <reportSet>
                <reports>
                  <report>checkstyle</report>
                </reports>
              </reportSet>
            </reportSets>
          </plugin>
          <plugin>
            <artifactId>maven-jxr-plugin</artifactId>
            <version>${version.maven-jxr-plugin}</version>
          </plugin>
          <plugin>
            <groupId>org.jacoco</groupId>
            <artifactId>jacoco-maven-plugin</artifactId>
            <version>${version.jacoco-maven-plugin}</version>
          </plugin>
        </plugins>
      </reporting>
    </profile>
  </profiles>
  <distributionManagement>
    <site>
      <id>japrostSiteId</id>
      <name>JaProSt-Site</name>
      <url>${japrost.distribution.site.url}/java11/</url>
    </site>
  </distributionManagement>
  <scm>
    <developerConnection>scm:git:git://bitbucket.org/daprost/japrost-java-parent</developerConnection>
    <url>https://bitbucket.org/daprost/japrost-java-parent</url>
    <tag>japrost-java-parent-11.0.3</tag>
  </scm>
  <modules>
    <module>japrost-java-qa</module>
  </modules>
</project>