<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">

  <modelVersion>4.0.0</modelVersion>

  <groupId>name.didier.david</groupId>
  <artifactId>ndd-maven-parent</artifactId>
  <version>0.3.0</version>

  <packaging>pom</packaging>

  <name>NDD Maven Parent</name>
  <description>Common Maven configuration for NDD projects</description>
  <url>https://gitlab.com/ddidier/java-${project.artifactId}/</url>
  <inceptionYear>2014</inceptionYear>

  <licenses>
    <license>
      <name>Apache-2.0</name>
      <url>LICENSE.txt</url>
      <distribution>repo</distribution>
    </license>
  </licenses>

  <organization>
    <name>David DIDIER</name>
    <url>https://gitlab.com/ddidier/</url>
  </organization>

  <developers>
    <developer>
      <id>ddidier</id>
      <name>David DIDIER</name>
      <email>c_inconnu2@yahoo.fr</email>
      <url>https://gitlab.com/ddidier/</url>
      <organization>David DIDIER</organization>
      <organizationUrl>https://gitlab.com/ddidier/</organizationUrl>
      <roles>
        <role>Architect</role>
        <role>Developer</role>
        <role>Owner</role>
      </roles>
      <timezone>1</timezone>
      <properties />
    </developer>
  </developers>

  <!--contributors></contributors -->

  <issueManagement>
    <system>GitLab Issues</system>
    <url>https://gitlab.com/ddidier/java-${project.artifactId}/issues</url>
  </issueManagement>

  <!--ciManagement></ciManagement -->

  <scm>
    <connection>scm:git:https://gitlab.com/ddidier/java-${project.artifactId}.git</connection>
    <developerConnection>scm:git:https://gitlab.com/ddidier/java-${project.artifactId}.git</developerConnection>
    <url>https://gitlab.com/ddidier/java-${project.artifactId}.git</url>
  </scm>

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

  <build>

    <pluginManagement>
      <plugins>

        <!-- ========== Official Maven - Core plugins ========== -->

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-clean-plugin</artifactId>
          <version>3.1.0</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.8.1</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-deploy-plugin</artifactId>
          <version>3.0.0-M1</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-failsafe-plugin</artifactId>
          <version>3.0.0-M5</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-install-plugin</artifactId>
          <version>3.0.0-M1</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-resources-plugin</artifactId>
          <version>3.2.0</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-site-plugin</artifactId>
          <version>3.9.1</version>
          <dependencies>
            <dependency>
              <groupId>org.apache.maven.doxia</groupId>
              <artifactId>doxia-module-markdown</artifactId>
              <version>1.9.1</version>
              <!-- v1.10 is incompatible with 3.9.1 -->
            </dependency>
          </dependencies>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>3.0.0-M5</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-verifier-plugin</artifactId>
          <version>1.1</version>
        </plugin>

        <!-- ========== Official Maven - Packaging plugins ========== -->

        <!-- <plugin> -->
        <!-- <groupId>org.apache.maven.plugins</groupId> -->
        <!-- <artifactId>maven-acr-plugin</artifactId> -->
        <!-- <version>x.y.z</version> -->
        <!-- </plugin> -->
        <!-- <plugin> -->
        <!-- <groupId>org.apache.maven.plugins</groupId> -->
        <!-- <artifactId>maven-ear-plugin</artifactId> -->
        <!-- <version>x.y.z</version> -->
        <!-- <plugin> -->
        <!-- </plugin> -->
        <!-- <groupId>org.apache.maven.plugins</groupId> -->
        <!-- <artifactId>maven-ejb-plugin</artifactId> -->
        <!-- <version>x.y.z</version> -->
        <!-- </plugin> -->
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-jar-plugin</artifactId>
          <version>3.2.0</version>
        </plugin>
        <!-- <plugin> -->
        <!-- <groupId>org.apache.maven.plugins</groupId> -->
        <!-- <artifactId>maven-jlink-plugin</artifactId> -->
        <!-- <version>x.y.z</version> -->
        <!-- </plugin> -->
        <!-- <plugin> -->
        <!-- <groupId>org.apache.maven.plugins</groupId> -->
        <!-- <artifactId>maven-jmod-plugin</artifactId> -->
        <!-- <version>x.y.z</version> -->
        <!-- </plugin> -->
        <!-- <plugin> -->
        <!-- <groupId>org.apache.maven.plugins</groupId> -->
        <!-- <artifactId>maven-rar-plugin</artifactId> -->
        <!-- <version>x.y.z</version> -->
        <!-- </plugin> -->
        <!-- <plugin> -->
        <!-- <groupId>org.apache.maven.plugins</groupId> -->
        <!-- <artifactId>maven-shade-plugin</artifactId> -->
        <!-- <version>x.y.z</version> -->
        <!-- </plugin> -->
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-source-plugin</artifactId>
          <version>3.2.1</version>
        </plugin>
        <!-- <plugin> -->
        <!-- <groupId>org.apache.maven.plugins</groupId> -->
        <!-- <artifactId>maven-war-plugin</artifactId> -->
        <!-- <version>x.y.z</version> -->
        <!-- </plugin> -->

        <!-- ========== Official Maven - Reporting plugins ========== -->

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-changelog-plugin</artifactId>
          <version>2.3</version>
        </plugin>
        <!-- <plugin> -->
        <!-- <groupId>org.apache.maven.plugins</groupId> -->
        <!-- <artifactId>maven-changes-plugin</artifactId> -->
        <!-- <version>2.12.1</version> -->
        <!-- </plugin> -->
        <!-- <plugin> -->
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-checkstyle-plugin</artifactId>
          <version>3.1.2</version>
        </plugin>
        <!-- <plugin> -->
        <!-- <groupId>org.apache.maven.plugins</groupId> -->
        <!-- <artifactId>maven-doap-plugin</artifactId> -->
        <!-- <version>x.y.z</version> -->
        <!-- </plugin> -->
        <!-- <plugin> -->
        <!-- <groupId>org.apache.maven.plugins</groupId> -->
        <!-- <artifactId>maven-docck-plugin</artifactId> -->
        <!-- <version>x.y.z</version> -->
        <!-- </plugin> -->
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-javadoc-plugin</artifactId>
          <version>3.3.1</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-jdeps-plugin</artifactId>
          <version>3.1.2</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-jxr-plugin</artifactId>
          <version>3.1.1</version>
        </plugin>
        <!-- <plugin> -->
        <!-- <groupId>org.apache.maven.plugins</groupId> -->
        <!-- <artifactId>maven-linkcheck-plugin</artifactId> -->
        <!-- <version>1.2</version> -->
        <!-- </plugin> -->
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-pmd-plugin</artifactId>
          <version>3.14.0</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-project-info-reports-plugin</artifactId>
          <version>3.1.2</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-surefire-report-plugin</artifactId>
          <version>3.0.0-M5</version>
        </plugin>

        <!-- ========== Official Maven - Tools plugins ========== -->

        <!--<plugin> -->
        <!-- <groupId>org.apache.maven.plugins</groupId> -->
        <!-- <artifactId>maven-antrun-plugin</artifactId> -->
        <!-- <version>3.0.0</version> -->
        <!--</plugin> -->
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-archetype-plugin</artifactId>
          <version>3.2.0</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-artifact-plugin</artifactId>
          <version>3.1.0</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-assembly-plugin</artifactId>
          <version>3.3.0</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-dependency-plugin</artifactId>
          <version>3.2.0</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-enforcer-plugin</artifactId>
          <version>3.0.0</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-gpg-plugin</artifactId>
          <version>3.0.1</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-help-plugin</artifactId>
          <version>3.2.0</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-jarsigner-plugin</artifactId>
          <version>3.0.0</version>
        </plugin>
        <!-- <plugin> -->
        <!-- <groupId>org.apache.maven.plugins</groupId> -->
        <!-- <artifactId>maven-jdeprscan-plugin</artifactId> -->
        <!-- <version>x.y.z</version> -->
        <!-- </plugin> -->
        <!-- <plugin> -->
        <!-- <groupId>org.apache.maven.plugins</groupId> -->
        <!-- <artifactId>maven-patch-plugin</artifactId> -->
        <!-- <version>x.y.z</version> -->
        <!-- </plugin> -->
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-pdf-plugin</artifactId>
          <version>1.4</version>
        </plugin>
        <!-- <plugin> -->
        <!-- <groupId>org.apache.maven.plugins</groupId> -->
        <!-- <artifactId>maven-plugin-plugin</artifactId> -->
        <!-- <version>x.y.z</version> -->
        <!-- </plugin> -->
        <!-- <plugin> -->
        <!-- <groupId>org.apache.maven.plugins</groupId> -->
        <!-- <artifactId>maven-release-plugin</artifactId> -->
        <!-- <version>3.0.0-M4</version> -->
        <!-- </plugin> -->
        <!-- <plugin> -->
        <!-- <groupId>org.apache.remote-resources.plugins</groupId> -->
        <!-- <artifactId>maven-remote-resources-plugin</artifactId> -->
        <!-- <version>1.7.0</version> -->
        <!-- </plugin> -->
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-scm-plugin</artifactId>
          <version>1.11.3</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-scm-publish-plugin</artifactId>
          <version>3.1.0</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-scripting-plugin</artifactId>
          <version>3.0.0</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-stage-plugin</artifactId>
          <version>1.0</version>
        </plugin>
        <!-- <plugin> -->
        <!-- <groupId>org.apache.maven.plugins</groupId> -->
        <!-- <artifactId>maven-toolchains-plugin</artifactId> -->
        <!-- <version>3.0.0</version> -->
        <!-- </plugin> -->
        <!-- <plugin> -->
        <!-- <groupId>org.apache.maven.plugins</groupId> -->
        <!-- <artifactId>maven-wrapper-plugin</artifactId> -->
        <!-- <version>3.0.2</version> -->
        <!-- </plugin> -->

        <!-- ========== Other plugins ========== -->

        <plugin>
          <groupId>com.github.spotbugs</groupId>
          <artifactId>spotbugs-maven-plugin</artifactId>
          <version>4.3.0</version>
        </plugin>
        <plugin>
          <groupId>io.fabric8</groupId>
          <artifactId>docker-maven-plugin</artifactId>
          <version>0.37.0</version>
        </plugin>
        <plugin>
          <groupId>org.assertj</groupId>
          <artifactId>assertj-assertions-generator-maven-plugin</artifactId>
          <version>2.2.0</version>
        </plugin>
        <plugin>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>jdepend-maven-plugin</artifactId>
          <version>2.0</version>
        </plugin>
        <plugin>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>taglist-maven-plugin</artifactId>
          <version>2.4</version>
        </plugin>
        <plugin>
          <groupId>org.jacoco</groupId>
          <artifactId>jacoco-maven-plugin</artifactId>
          <version>0.8.7</version>
        </plugin>
        <plugin>
          <groupId>org.owasp</groupId>
          <artifactId>dependency-check-maven</artifactId>
          <version>6.3.1</version>
        </plugin>
        <plugin>
          <groupId>org.simplify4u.plugins</groupId>
          <artifactId>sign-maven-plugin</artifactId>
          <version>0.3.1</version>
        </plugin>
        <plugin>
          <groupId>org.sonatype.plugins</groupId>
          <artifactId>nexus-staging-maven-plugin</artifactId>
          <version>1.6.8</version>
          <extensions>true</extensions>
        </plugin>
        <plugin>
          <groupId>se.vandmo</groupId>
          <artifactId>dependency-lock-maven-plugin</artifactId>
          <version>0.14</version>
        </plugin>

      </plugins>
    </pluginManagement>

    <plugins>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-assembly-plugin</artifactId>
        <executions>
          <execution>
            <id>make-assembly</id>
            <phase>package</phase>
            <goals>
              <goal>single</goal>
            </goals>
            <configuration>
              <descriptorRefs>
                <descriptorRef>project</descriptorRef>
              </descriptorRefs>
              <tarLongFileMode>posix</tarLongFileMode>
            </configuration>
          </execution>
        </executions>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-enforcer-plugin</artifactId>
        <executions>
          <execution>
            <id>enforce-constraints</id>
            <goals>
              <goal>enforce</goal>
            </goals>
            <configuration>
              <rules>
                <requireMavenVersion>
                  <version>3.3.9</version>
                </requireMavenVersion>
                <requireUpperBoundDeps>
                  <!-- -->
                </requireUpperBoundDeps>
              </rules>
            </configuration>
          </execution>
        </executions>
      </plugin>

      <plugin>
        <groupId>org.owasp</groupId>
        <artifactId>dependency-check-maven</artifactId>
        <version>6.3.1</version>
        <!-- WARNING: review the configuration in 'plugins' section and in 'reports' section -->
        <configuration>
          <failBuildOnCVSS>7</failBuildOnCVSS>
          <!--<hintsFile>${project.basedir}/src/tools/dependency-check/hints.xml</hintsFile>-->
          <name>Dependency-Check</name>
          <outputDirectory>${project.build.directory}/site</outputDirectory>
          <!--<suppressionFiles>-->
          <!--<suppressionFile>${project.basedir}/src/tools/dependency-check/suppressions.xml</suppressionFile>-->
          <!--</suppressionFiles>-->
        </configuration>
        <executions>
          <execution>
            <phase>test</phase>
            <goals>
              <goal>check</goal>
            </goals>
          </execution>
        </executions>
      </plugin>

      <plugin>
        <groupId>se.vandmo</groupId>
        <artifactId>dependency-lock-maven-plugin</artifactId>
        <configuration>
          <filename>pom.lock.json</filename>
        </configuration>
        <executions>
          <execution>
            <id>check-dependencies</id>
            <phase>validate</phase>
            <goals>
              <goal>check</goal>
            </goals>
          </execution>
        </executions>
      </plugin>

    </plugins>

  </build>

  <reporting>
    <plugins>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-project-info-reports-plugin</artifactId>
      </plugin>

      <plugin>
        <groupId>org.owasp</groupId>
        <artifactId>dependency-check-maven</artifactId>
        <!-- WARNING: review the configuration in 'plugins' section and in 'reports' section -->
        <configuration>
          <failBuildOnCVSS>7</failBuildOnCVSS>
          <!--<hintsFile>${project.basedir}/src/tools/dependency-check/hints.xml</hintsFile>-->
          <name>Dependency-Check</name>
          <outputDirectory>${project.build.directory}/site</outputDirectory>
          <!--<suppressionFiles>-->
          <!--<suppressionFile>${project.basedir}/src/tools/dependency-check/suppressions.xml</suppressionFile>-->
          <!--</suppressionFiles>-->
        </configuration>
        <reportSets>
          <reportSet>
            <reports>
              <report>aggregate</report>
            </reports>
          </reportSet>
        </reportSets>
      </plugin>

    </plugins>
  </reporting>

  <properties>
    <!-- required for JAR packaging without the maven-compiler-plugin -->
    <java.version>16</java.version>
    <maven.compiler.release>${java.version}</maven.compiler.release>
    <maven.compiler.source>${java.version}</maven.compiler.source>
    <project.build.sourceVersion>${java.version}</project.build.sourceVersion>
    <project.build.targetVersion>${java.version}</project.build.targetVersion>

    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
  </properties>

  <profiles>

    <!-- Eclipse profile : this profile IS NOT ACTIVE by default. To be -->
    <!-- activated, the "eclipse.running" variable must be set to "true" -->
    <!-- (a convenient location is the "eclipse.ini" file). -->
    <profile>
      <id>ndd.eclipse</id>
      <activation>
        <property>
          <name>eclipse.running</name>
          <value>true</value>
        </property>
      </activation>
      <build>
        <pluginManagement>
          <plugins>
            <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-dependency-plugin</artifactId>
                        <versionRange>[0.0.0,)</versionRange>
                        <goals>
                          <goal>copy-dependencies</goal>
                          <goal>unpack</goal>
                        </goals>
                      </pluginExecutionFilter>
                      <action>
                        <ignore />
                      </action>
                    </pluginExecution>
                    <pluginExecution>
                      <pluginExecutionFilter>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-enforcer-plugin</artifactId>
                        <versionRange>[0.0.0,)</versionRange>
                        <goals>
                          <goal>enforce</goal>
                        </goals>
                      </pluginExecutionFilter>
                      <action>
                        <ignore />
                      </action>
                    </pluginExecution>
                    <pluginExecution>
                      <pluginExecutionFilter>
                        <groupId>org.jacoco</groupId>
                        <artifactId>jacoco-maven-plugin</artifactId>
                        <versionRange>[0.0.0,)</versionRange>
                        <goals>
                          <goal>prepare-agent</goal>
                        </goals>
                      </pluginExecutionFilter>
                      <action>
                        <ignore />
                      </action>
                    </pluginExecution>
                    <pluginExecution>
                      <pluginExecutionFilter>
                        <groupId>org.jolokia</groupId>
                        <artifactId>docker-maven-plugin</artifactId>
                        <versionRange>[0.0.0,)</versionRange>
                        <goals>
                          <goal>start</goal>
                          <goal>stop</goal>
                          <goal>build</goal>
                          <goal>watch</goal>
                          <goal>push</goal>
                          <goal>remove</goal>
                          <goal>logs</goal>
                        </goals>
                      </pluginExecutionFilter>
                      <action>
                        <ignore />
                      </action>
                    </pluginExecution>
                    <pluginExecution>
                      <pluginExecutionFilter>
                        <groupId>se.vandmo</groupId>
                        <artifactId>dependency-lock-maven-plugin</artifactId>
                        <versionRange>[0.0.0,)</versionRange>
                        <goals>
                          <goal>check</goal>
                          <goal>format</goal>
                          <goal>lock</goal>
                        </goals>
                      </pluginExecutionFilter>
                      <action>
                        <ignore />
                      </action>
                    </pluginExecution>
                  </pluginExecutions>
                </lifecycleMappingMetadata>
              </configuration>
            </plugin>
          </plugins>
        </pluginManagement>
      </build>
    </profile>

    <profile>
      <id>ndd.release</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.simplify4u.plugins</groupId>
            <artifactId>sign-maven-plugin</artifactId>
            <executions>
              <execution>
                <goals>
                  <goal>sign</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <groupId>org.sonatype.plugins</groupId>
            <artifactId>nexus-staging-maven-plugin</artifactId>
            <configuration>
              <serverId>releases.oss.sonatype</serverId>
              <nexusUrl>https://oss.sonatype.org/</nexusUrl>
              <autoReleaseAfterClose>true</autoReleaseAfterClose>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>

  </profiles>

</project>
