<?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>zone.dragon</groupId>
    <artifactId>base-pom</artifactId>
    <version>2.0.39-515607</version>
    <packaging>pom</packaging>

    <name>DragonZone :: Base POM</name>
    <description>POM file for managing DragonZone projects</description>
    <url>https://github.com/dragonzone/base-pom</url>

    <licenses>
        <license>
            <name>MIT License</name>
            <url>https://github.com/dragonzone/base-pom/blob/master/LICENSE</url>
        </license>
    </licenses>

    <!-- DragonZone -->
    <organization>
        <name>DragonZone</name>
        <url>https://dragon.zone/</url>
    </organization>

    <!-- Developer Info -->
    <developers>
        <developer>
            <id>baharclerode</id>
            <name>Bryan Harclerode</name>
            <email>baharclerode@devdragon.net</email>
            <timezone>-6</timezone>
            <roles>
                <role>developer</role>
            </roles>
        </developer>
    </developers>

    <!-- Modules -->
    <modules>
        <module>base-java-pom</module>
        <module>base-kotlin-pom</module>
        <module>base-wow-pom</module>
    </modules>

    <!-- Global Properties -->
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <deployAtEnd>true</deployAtEnd>
        <!-- Core Plugin Versions -->
        <clean.plugin.version>3.1.0</clean.plugin.version>
        <compiler.plugin.version>3.8.1</compiler.plugin.version>
        <deploy.plugin.version>2.8.2</deploy.plugin.version>
        <failsafe.plugin.version>3.0.0-M3</failsafe.plugin.version>
        <install.plugin.version>3.0.0-M1</install.plugin.version>
        <resources.plugin.version>3.1.0</resources.plugin.version>
        <site.plugin.version>3.7.1</site.plugin.version>
        <surefire.plugin.version>3.0.0-M3</surefire.plugin.version>
        <verifier.plugin.version>1.1</verifier.plugin.version>
        <!-- Packaging Plugin Versions -->
        <ear.plugin.version>3.0.1</ear.plugin.version>
        <ejb.plugin.version>3.0.1</ejb.plugin.version>
        <jar.plugin.version>3.1.2</jar.plugin.version>
        <rar.plugin.version>2.4</rar.plugin.version>
        <war.plugin.version>3.2.3</war.plugin.version>
        <acr.plugin.version>3.1.0</acr.plugin.version>
        <shade.plugin.version>3.2.1</shade.plugin.version>
        <source.plugin.version>3.1.0</source.plugin.version>
        <!-- Reporting Plugin Versions -->
        <changelog.plugin.version>2.3</changelog.plugin.version>
        <changes.plugin.version>2.12.1</changes.plugin.version>
        <checkstyle.plugin.version>3.1.0</checkstyle.plugin.version>
        <doap.plugin.version>1.2</doap.plugin.version>
        <docck.plugin.version>1.1</docck.plugin.version>
        <javadoc.plugin.version>3.1.1</javadoc.plugin.version>
        <jdeps.plugin.version>3.1.2</jdeps.plugin.version>
        <jxr.plugin.version>3.0.0</jxr.plugin.version>
        <linkcheck.plugin.version>1.2</linkcheck.plugin.version>
        <pmd.plugin.version>3.12.0</pmd.plugin.version>
        <project-info-reports.plugin.version>3.0.0</project-info-reports.plugin.version>
        <surefire-report.plugin.version>3.0.0-M3</surefire-report.plugin.version>
        <!-- Tool Plugin Versions -->
        <ant.plugin.version>2.4</ant.plugin.version>
        <antrun.plugin.version>1.8</antrun.plugin.version>
        <archetype.plugin.version>3.0.1</archetype.plugin.version>
        <assembly.plugin.version>3.1.1</assembly.plugin.version>
        <dependency.plugin.version>3.1.1</dependency.plugin.version>
        <enforcer.plugin.version>3.0.0-M2</enforcer.plugin.version>
        <gpg.plugin.version>1.6</gpg.plugin.version>
        <help.plugin.version>3.2.0</help.plugin.version>
        <invoker.plugin.version>3.2.0</invoker.plugin.version>
        <jarsigner.plugin.version>3.0.0</jarsigner.plugin.version>
        <patch.plugin.version>1.2</patch.plugin.version>
        <pdf.plugin.version>1.4</pdf.plugin.version>
        <plugin.plugin.version>3.6.0</plugin.plugin.version>
        <release.plugin.version>2.5.3</release.plugin.version>
        <remote-resources.plugin.version>1.6.0</remote-resources.plugin.version>
        <repository.plugin.version>2.4</repository.plugin.version>
        <scm.plugin.version>1.11.2</scm.plugin.version>
        <scm-publish.plugin.version>3.0.0</scm-publish.plugin.version>
        <stage.plugin.version>1.0</stage.plugin.version>
        <toolchains.plugin.version>3.0.0</toolchains.plugin.version>
        <build-helper.plugin.version>3.0.0</build-helper.plugin.version>
        <buildnumber.plugin.version>1.4</buildnumber.plugin.version>
        <versions.plugin.version>2.7</versions.plugin.version>
        <nexus-staging-maven.plugin.version>1.6.8</nexus-staging-maven.plugin.version>
    </properties>

    <!-- External Repositories -->
    <repositories>
        <repository>
            <id>ktor</id>
            <url>http://dl.bintray.com/kotlin/ktor</url>
        </repository>
        <repository>
            <id>kotlinx</id>
            <url>http://dl.bintray.com/kotlin/kotlinx</url>
        </repository>
        <repository>
            <id>jcenter</id>
            <url>http://jcenter.bintray.com</url>
        </repository>
    </repositories>

    <!-- Distribute to the public repositories in the DragonZone Nexus -->
    <distributionManagement>
        <repository>
            <id>dragonZone</id>
            <name>DragonZone Nexus</name>
            <url>https://maven.dragon.zone/repository/maven-releases</url>
        </repository>
        <snapshotRepository>
            <id>dragonZone-snapshots</id>
            <name>DragonZone Nexus (Snapshots)</name>
            <url>https://maven.dragon.zone/repository/maven-snapshots</url>
        </snapshotRepository>
    </distributionManagement>

    <scm>
        <connection>scm:git:git@github.com:dragonzone/base-pom.git</connection>
        <developerConnection>scm:git:git@github.com:dragonzone/base-pom.git</developerConnection>
        <tag>base-pom-2.0.39</tag>
        <url>https://github.com/dragonzone/base-pom</url>
    </scm>

    <build>
        <pluginManagement>
            <plugins>
                <!-- Core Plugins -->
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-clean-plugin</artifactId>
                    <version>${clean.plugin.version}</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>${compiler.plugin.version}</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-deploy-plugin</artifactId>
                    <version>${deploy.plugin.version}</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-failsafe-plugin</artifactId>
                    <version>${failsafe.plugin.version}</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-install-plugin</artifactId>
                    <version>${install.plugin.version}</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-resources-plugin</artifactId>
                    <version>${resources.plugin.version}</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-site-plugin</artifactId>
                    <version>${site.plugin.version}</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>${surefire.plugin.version}</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-verifier-plugin</artifactId>
                    <version>${verifier.plugin.version}</version>
                </plugin>
                <!-- Packaging Plugins -->
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-ear-plugin</artifactId>
                    <version>${ear.plugin.version}</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-ejb-plugin</artifactId>
                    <version>${ejb.plugin.version}</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-jar-plugin</artifactId>
                    <version>${jar.plugin.version}</version>
                    <executions>
                        <execution>
                            <id>attach-test-jar</id>
                            <goals>
                                <goal>test-jar</goal>
                            </goals>
                        </execution>
                    </executions>
                    <configuration>
                        <skipIfEmpty>true</skipIfEmpty>
                        <archive>
                            <manifest>
                                <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
                                <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
                            </manifest>
                        </archive>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-rar-plugin</artifactId>
                    <version>${rar.plugin.version}</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-war-plugin</artifactId>
                    <version>${war.plugin.version}</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-acr-plugin</artifactId>
                    <version>${acr.plugin.version}</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-shade-plugin</artifactId>
                    <version>${shade.plugin.version}</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-source-plugin</artifactId>
                    <version>${source.plugin.version}</version>
                    <executions>
                        <execution>
                            <id>attach-sources</id>
                            <phase>none</phase>
                        </execution>
                        <execution>
                            <id>attach-sources-override</id>
                            <goals>
                                <goal>jar-no-fork</goal>
                            </goals>
                        </execution>
                        <execution>
                            <id>attach-test-sources</id>
                            <goals>
                                <goal>test-jar-no-fork</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
                <!-- Reporting Plugins -->
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-changelog-plugin</artifactId>
                    <version>${changelog.plugin.version}</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-changes-plugin</artifactId>
                    <version>${changes.plugin.version}</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-checkstyle-plugin</artifactId>
                    <version>${checkstyle.plugin.version}</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-doap-plugin</artifactId>
                    <version>${doap.plugin.version}</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-docck-plugin</artifactId>
                    <version>${docck.plugin.version}</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-javadoc-plugin</artifactId>
                    <version>${javadoc.plugin.version}</version>
                    <executions>
                        <execution>
                            <id>attach-javadocs</id>
                            <goals>
                                <goal>jar</goal>
                            </goals>
                            <configuration>
                                <tags>
                                    <tag>
                                        <name>date</name>
                                        <placement>t</placement>
                                        <head>Created:</head>
                                    </tag>
                                </tags>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-jdeps-plugin</artifactId>
                    <version>${jdeps.plugin.version}</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-jxr-plugin</artifactId>
                    <version>${jxr.plugin.version}</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-linkcheck-plugin</artifactId>
                    <version>${linkcheck.plugin.version}</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-pmd-plugin</artifactId>
                    <version>${pmd.plugin.version}</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-project-info-reports-plugin</artifactId>
                    <version>${project-info-reports.plugin.version}</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-report-plugin</artifactId>
                    <version>${surefire-report.plugin.version}</version>
                </plugin>
                <!-- Tool Plugins -->
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-ant-plugin</artifactId>
                    <version>${ant.plugin.version}</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-antrun-plugin</artifactId>
                    <version>${antrun.plugin.version}</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-archetype-plugin</artifactId>
                    <version>${archetype.plugin.version}</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-assembly-plugin</artifactId>
                    <version>${assembly.plugin.version}</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-dependency-plugin</artifactId>
                    <version>${dependency.plugin.version}</version>
                    <executions>
                        <execution>
                            <id>enforce-dependency-declarations</id>
                            <goals>
                                <goal>analyze-only</goal>
                            </goals>
                            <configuration>
                                <failOnWarning>true</failOnWarning>
                                <outputXML>true</outputXML>
                                <ignoreNonCompile>true</ignoreNonCompile>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-enforcer-plugin</artifactId>
                    <version>${enforcer.plugin.version}</version>
                    <executions>
                        <execution>
                            <id>enforce-pom-standards</id>
                            <goals>
                                <goal>enforce</goal>
                            </goals>
                            <configuration>
                                <rules>
                                    <requireUpperBoundDeps />
                                    <banDuplicatePomDependencyVersions />
                                    <reactorModuleConvergence />
                                    <dependencyConvergence />
                                    <requireMavenVersion>
                                        <version>3.5.0</version>
                                    </requireMavenVersion>
                                    <requireJavaVersion>
                                        <version>11.0.0</version>
                                    </requireJavaVersion>
                                </rules>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-gpg-plugin</artifactId>
                    <version>${gpg.plugin.version}</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-help-plugin</artifactId>
                    <version>${help.plugin.version}</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-invoker-plugin</artifactId>
                    <version>${invoker.plugin.version}</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-jarsigner-plugin</artifactId>
                    <version>${jarsigner.plugin.version}</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-patch-plugin</artifactId>
                    <version>${patch.plugin.version}</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-pdf-plugin</artifactId>
                    <version>${pdf.plugin.version}</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-plugin-plugin</artifactId>
                    <version>${plugin.plugin.version}</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-release-plugin</artifactId>
                    <version>${release.plugin.version}</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-remote-resources-plugin</artifactId>
                    <version>${remote-resources.plugin.version}</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-repository-plugin</artifactId>
                    <version>${repository.plugin.version}</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-scm-plugin</artifactId>
                    <version>${scm.plugin.version}</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-scm-publish-plugin</artifactId>
                    <version>${scm-publish.plugin.version}</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-stage-plugin</artifactId>
                    <version>${stage.plugin.version}</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-toolchains-plugin</artifactId>
                    <version>${toolchains.plugin.version}</version>
                </plugin>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>build-helper-maven-plugin</artifactId>
                    <version>${build-helper.plugin.version}</version>
                </plugin>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>buildnumber-maven-plugin</artifactId>
                    <version>${buildnumber.plugin.version}</version>
                </plugin>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>versions-maven-plugin</artifactId>
                    <version>${versions.plugin.version}</version>
                    <configuration>
                        <generateBackupPoms>false</generateBackupPoms>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.sonatype.plugins</groupId>
                    <artifactId>nexus-staging-maven-plugin</artifactId>
                    <version>${nexus-staging-maven.plugin.version}</version>
                    <configuration>
                        <skipRemoteStaging>true</skipRemoteStaging>
                    </configuration>
                </plugin>
            </plugins>
        </pluginManagement>

        <plugins>
            <plugin>
                <artifactId>maven-enforcer-plugin</artifactId>
            </plugin>
            <plugin>
                <artifactId>maven-dependency-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

    <profiles>
        <profile>
            <id>git-project</id>
            <activation>
                <file>
                    <exists>.git/HEAD</exists>
                </file>
            </activation>
            <properties>
                <maven.buildNumber.doCheck>false</maven.buildNumber.doCheck>
                <maven.buildNumber.doUpdate>false</maven.buildNumber.doUpdate>
            </properties>
            <build>
                <pluginManagement>
                    <plugins>
                        <plugin>
                            <groupId>org.apache.maven.plugins</groupId>
                            <artifactId>maven-jar-plugin</artifactId>
                            <configuration>
                                <archive>
                                    <manifestEntries>
                                        <Implementation-Build>${buildNumber}</Implementation-Build>
                                        <Implementation-Branch>${scmBranch}</Implementation-Branch>
                                    </manifestEntries>
                                </archive>
                            </configuration>
                        </plugin>
                    </plugins>
                </pluginManagement>
                <plugins>
                    <plugin>
                        <groupId>org.codehaus.mojo</groupId>
                        <artifactId>buildnumber-maven-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>git-hash</id>
                                <phase>initialize</phase>
                                <goals>
                                    <goal>create</goal>
                                </goals>
                            </execution>
                        </executions>
                        <configuration>
                            <revisionOnScmFailure>DEV</revisionOnScmFailure>
                            <shortRevisionLength>8</shortRevisionLength>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <profile>
            <id>maven-central</id>
            <build>
                <pluginManagement>
                    <plugins>
                        <plugin>
                            <groupId>org.sonatype.plugins</groupId>
                            <artifactId>nexus-staging-maven-plugin</artifactId>
                            <configuration>
                                <serverId>sonatype-nexus</serverId>
                                <nexusUrl>https://oss.sonatype.org/</nexusUrl>
                            </configuration>
                        </plugin>
                    </plugins>
                </pluginManagement>
            </build>
        </profile>
        <profile>
            <id>sign</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-gpg-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>sign-all</id>
                                <goals>
                                    <goal>sign</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>
</project>
