<?xml version="1.0" encoding="UTF-8"?>
<!--
#  Licensed under the Apache License, Version 2.0 (the "License");
#  you may not use this file except in compliance with the License.
#  You may obtain a copy of the License at
#
#    http://www.apache.org/licenses/LICENSE-2.0
#
#  Unless required by applicable law or agreed to in writing, software
#  distributed under the License is distributed on an "AS IS" BASIS,
#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#  See the License for the specific language governing permissions and
#  limitations under the License.
-->
<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.dattack</groupId>
    <artifactId>parent</artifactId>
    <version>7</version>
    <packaging>pom</packaging>
    <name>Dattack Parent</name>
    <description>The Dattack Parent POM provides common settings for all Dattack projects.</description>
    <url>https://github.com/dattack/parent</url>
    <inceptionYear>2016</inceptionYear>
    <organization>
        <name>Dattack Team</name>
        <url>http://www.dattack.com/</url>
    </organization>
    <licenses>
        <license>
            <name>Apache License, Version 2.0</name>
            <url>https://www.apache.org/licenses/LICENSE-2.0.txt</url>
            <distribution>repo</distribution>
        </license>
    </licenses>

    <developers>
        <developer>
            <id>cvarela</id>
            <name>Carlos Varela</name>
            <email>cvarela@dattack.com</email>
            <organization>dattack.com</organization>
            <organizationUrl>http://www.dattack.com</organizationUrl>
            <roles>
                <role>Java Developer</role>
            </roles>
            <timezone>Europe/Madrid</timezone>
        </developer>
    </developers>
    <scm>
        <connection>scm:git:https://github.com/dattack/parent.git</connection>
        <developerConnection>scm:git:git+ssh://git@github.com/dattack/parent.git</developerConnection>
        <tag>HEAD</tag>
        <url>https://github.com/dattack/parent/tree/HEAD</url>
    </scm>
    <issueManagement>
        <system>GitHub</system>
        <url>https://github.com/dattack/parent/issues</url>
    </issueManagement>
    <ciManagement>
        <system>Travis CI</system>
        <url>https://app.travis-ci.com/github/dattack/parent</url>
    </ciManagement>

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

    <properties>
        <arguments></arguments>
        <bcel.version>6.5.0</bcel.version>
        <checkstyle.header.file>${url.dattack.developer}/java.header</checkstyle.header.file>
        <checkstyle.version>9.3</checkstyle.version>
        <dattack.changes.maxEntries>100</dattack.changes.maxEntries>
        <dattack.changes.onlyCurrentVersion>false</dattack.changes.onlyCurrentVersion>
        <dattack.changes.runOnlyAtExecutionRoot>false</dattack.changes.runOnlyAtExecutionRoot>

        <dattack.clirr.minSeverity>info</dattack.clirr.minSeverity>
        <dattack.compiler.compilerVersion>1.8</dattack.compiler.compilerVersion>
        <dattack.compiler.fork>true</dattack.compiler.fork>
        <dattack.compiler.javac></dattack.compiler.javac>
        <dattack.compiler.source.version>1.8</dattack.compiler.source.version>
        <dattack.compiler.target.version>1.8</dattack.compiler.target.version>
        <dattack.coveralls.timestampFormat>EpochMillis</dattack.coveralls.timestampFormat>

        <!-- Default values for the jacoco-maven-plugin reports -->
        <dattack.jacoco.branchRatio>0.85</dattack.jacoco.branchRatio>
        <dattack.jacoco.classRatio>1.00</dattack.jacoco.classRatio>
        <dattack.jacoco.complexityRatio>0.85</dattack.jacoco.complexityRatio>
        <dattack.jacoco.haltOnFailure>false</dattack.jacoco.haltOnFailure>
        <dattack.jacoco.instructionRatio>0.90</dattack.jacoco.instructionRatio>
        <dattack.jacoco.lineRatio>0.90</dattack.jacoco.lineRatio>
        <dattack.jacoco.methodRatio>0.95</dattack.jacoco.methodRatio>

        <implementation.build>r${buildNumber}; ${maven.build.timestamp}</implementation.build>

        <javadoc.java.link>http://docs.oracle.com/javase/7/docs/api/</javadoc.java.link>
        <javadoc.javaee.link>http://docs.oracle.com/javaee/6/api/</javadoc.javaee.link>
        <plugin.appassembler.version>2.1.0</plugin.appassembler.version>
        <plugin.assembly.version>3.3.0</plugin.assembly.version>
        <plugin.build-helper.version>3.2.0</plugin.build-helper.version>
        <plugin.buildnumber.version>3.0.0</plugin.buildnumber.version>
        <plugin.changelog.version>2.3</plugin.changelog.version>
        <plugin.changes.version>2.12.1</plugin.changes.version>
        <plugin.checkstyle.version>3.1.2</plugin.checkstyle.version>
        <plugin.clean.version>3.1.0</plugin.clean.version>
        <plugin.clirr.version>2.8</plugin.clirr.version>
        <plugin.compiler.version>3.8.1</plugin.compiler.version>
        <plugin.coveralls.version>4.3.0</plugin.coveralls.version>
        <plugin.dependency.version>3.2.0</plugin.dependency.version>
        <plugin.deploy.version>3.0.0-M1</plugin.deploy.version>
        <plugin.docck.version>1.1</plugin.docck.version>
        <plugin.ear.version>3.2.0</plugin.ear.version>
        <plugin.enforcer.version>3.0.0</plugin.enforcer.version>
        <plugin.failsafe.version>3.0.0-M5</plugin.failsafe.version>
        <plugin.gpg.version>3.0.1</plugin.gpg.version>
        <plugin.help.version>3.2.0</plugin.help.version>
        <plugin.install.version>3.0.0-M1</plugin.install.version>
        <plugin.invoker.version>3.2.2</plugin.invoker.version>
        <plugin.jacoco.version>0.8.7</plugin.jacoco.version>
        <plugin.jar.version>3.2.0</plugin.jar.version>
        <plugin.javadoc.version>3.3.1</plugin.javadoc.version>
        <plugin.jdepend.version>2.0</plugin.jdepend.version>
        <plugin.jxr.version>3.1.1</plugin.jxr.version>
        <plugin.maven-scm-api.version>1.12.2</plugin.maven-scm-api.version>
        <plugin.maven-scm-provider-gitexe.version>1.12.2</plugin.maven-scm-provider-gitexe.version>
        <plugin.nexus-staging.version>1.6.8</plugin.nexus-staging.version>
        <plugin.plugin.version>3.6.2</plugin.plugin.version>
        <plugin.pmd.version>3.15.0</plugin.pmd.version>
        <plugin.project-info-reports.version>3.1.2</plugin.project-info-reports.version>
        <plugin.rat.version>0.13</plugin.rat.version>
        <plugin.release.version>3.0.0-M4</plugin.release.version>
        <plugin.resources.version>3.2.0</plugin.resources.version>
        <plugin.scm-publish.version>3.1.0</plugin.scm-publish.version>
        <plugin.scm.version>1.12.0</plugin.scm.version>
        <plugin.shade.version>3.2.4</plugin.shade.version>
        <plugin.site.version>3.9.1</plugin.site.version>
        <plugin.sortpom.version>2.12.0</plugin.sortpom.version>
        <plugin.source.version>3.2.1</plugin.source.version>
        <plugin.spotbugs.version>4.1.4</plugin.spotbugs.version>
        <plugin.surefire-report.version>3.0.0-M5</plugin.surefire-report.version>
        <plugin.surefire.version>3.0.0-M5</plugin.surefire.version>
        <plugin.taglist.version>2.4</plugin.taglist.version>
        <plugin.versions.version>2.8.1</plugin.versions.version>
        <plugin.war.version>3.3.2</plugin.war.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <url.checkstyle.file>${url.dattack.developer}/dattack-checkstyle.xml</url.checkstyle.file>
        <url.dattack.developer>https://raw.githubusercontent.com/dattack/parent/develop/developer/v7</url.dattack.developer>
        <url.pmd-ruleset.file>${url.dattack.developer}/dattack-pmd-ruleset.xml</url.pmd-ruleset.file>
        <wagon-ssh.version>3.5.1</wagon-ssh.version>
    </properties>

    <build>
        <extensions>
            <extension>
                <groupId>org.apache.maven.wagon</groupId>
                <artifactId>wagon-ssh</artifactId>
                <version>${wagon-ssh.version}</version>
            </extension>
        </extensions>
        <defaultGoal>clean verify apache-rat:check clirr:check checkstyle:check javadoc:javadoc</defaultGoal>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
            </resource>
            <resource>
                <targetPath>META-INF</targetPath>
                <directory>${basedir}</directory>
                <includes>
                    <include>NOTICE.md</include>
                    <include>LICENSE.md</include>
                </includes>
            </resource>
        </resources>
        <testResources>
            <testResource>
                <directory>src/test/resources</directory>
            </testResource>
            <testResource>
                <targetPath>META-INF</targetPath>
                <directory>${basedir}</directory>
                <includes>
                    <include>NOTICE.md</include>
                    <include>LICENSE.md</include>
                </includes>
            </testResource>
        </testResources>
        <pluginManagement>
            <plugins>
                <!-- Other plugins, alpha order by groupId and artifactId -->
                <plugin>
                    <groupId>com.github.ekryd.sortpom</groupId>
                    <artifactId>sortpom-maven-plugin</artifactId>
                    <version>${plugin.sortpom.version}</version>
                    <executions>
                        <execution>
                            <phase>verify</phase>
                            <goals>
                                <goal>sort</goal>
                            </goals>
                        </execution>
                    </executions>
                    <configuration>
                        <sortProperties>true</sortProperties>
                        <keepBlankLines>true</keepBlankLines>
                        <nrOfIndentSpace>4</nrOfIndentSpace>
                        <sortPlugins>groupId,artifactId</sortPlugins>
                        <sortDependencies>scope,groupId,artifactId</sortDependencies>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>com.github.spotbugs</groupId>
                    <artifactId>spotbugs-maven-plugin</artifactId>
                    <version>${plugin.spotbugs.version}</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-assembly-plugin</artifactId>
                    <version>${plugin.assembly.version}</version>
                    <executions>
                        <execution>
                            <phase>package</phase>
                            <goals>
                                <goal>single</goal>
                            </goals>
                        </execution>
                    </executions>
                    <configuration>
                        <descriptors>
                            <descriptor>src/assembly/src.xml</descriptor>
                        </descriptors>
                        <tarLongFileMode>gnu</tarLongFileMode>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-changelog-plugin</artifactId>
                    <version>${plugin.changelog.version}</version>
                    <dependencies>
                        <dependency>
                            <groupId>org.apache.maven.scm</groupId>
                            <artifactId>maven-scm-api</artifactId>
                            <version>${plugin.maven-scm-api.version}</version>
                        </dependency>
                        <dependency>
                            <groupId>org.apache.maven.scm</groupId>
                            <artifactId>maven-scm-provider-gitexe</artifactId>
                            <version>${plugin.maven-scm-provider-gitexe.version}</version>
                        </dependency>
                    </dependencies>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-changes-plugin</artifactId>
                    <version>${plugin.changes.version}</version>
                    <configuration>
                        <xmlPath>${basedir}/src/changes/changes.xml</xmlPath>
                        <columnNames>Fix Version,Key,Component,Summary,Type,Resolution,Status</columnNames>
                        <sortColumnNames>Fix Version DESC,Type,Key DESC</sortColumnNames>
                        <resolutionIds>Fixed</resolutionIds>
                        <statusIds>Resolved,Closed</statusIds>
                        <onlyCurrentVersion>${dattack.changes.onlyCurrentVersion}</onlyCurrentVersion>
                        <maxEntries>${dattack.changes.maxEntries}</maxEntries>
                        <runOnlyAtExecutionRoot>${dattack.changes.runOnlyAtExecutionRoot}</runOnlyAtExecutionRoot>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-checkstyle-plugin</artifactId>
                    <version>${plugin.checkstyle.version}</version>
                    <dependencies>
                        <dependency>
                            <groupId>com.puppycrawl.tools</groupId>
                            <artifactId>checkstyle</artifactId>
                            <version>${checkstyle.version}</version>
                        </dependency>
                    </dependencies>
                    <configuration>
                        <configLocation>${url.checkstyle.file}</configLocation>
                        <failOnViolation>false</failOnViolation>
                        <outputFile>${project.build.directory}/test/checkstyle-errors.xml</outputFile>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-clean-plugin</artifactId>
                    <version>${plugin.clean.version}</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>${plugin.compiler.version}</version>
                    <configuration>
                        <source>${dattack.compiler.source.version}</source>
                        <target>${dattack.compiler.target.version}</target>
                        <encoding>${project.build.sourceEncoding}</encoding>
                        <fork>${dattack.compiler.fork}</fork>
                        <compilerVersion>${dattack.compiler.compilerVersion}</compilerVersion>
                        <executable>${dattack.compiler.javac}</executable>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-dependency-plugin</artifactId>
                    <version>${plugin.dependency.version}</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-deploy-plugin</artifactId>
                    <version>${plugin.deploy.version}</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-docck-plugin</artifactId>
                    <version>${plugin.docck.version}</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-ear-plugin</artifactId>
                    <version>${plugin.ear.version}</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-enforcer-plugin</artifactId>
                    <version>${plugin.enforcer.version}</version>
                    <executions>
                        <execution>
                            <id>enforce-versions</id>
                            <goals>
                                <goal>enforce</goal>
                            </goals>
                            <configuration>
                                <rules>
                                    <requireMavenVersion>
                                        <version>3.3.9</version>
                                    </requireMavenVersion>
                                    <requireJavaVersion>
                                        <version>${dattack.compiler.target.version}</version>
                                    </requireJavaVersion>
                                </rules>
                                <fail>true</fail>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-failsafe-plugin</artifactId>
                    <version>${plugin.failsafe.version}</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-gpg-plugin</artifactId>
                    <version>${plugin.gpg.version}</version>
                    <configuration>
                        <gpgArguments>
                            <arg>--digest-algo=SHA512</arg>
                            <arg>--pinentry-mode</arg>
                            <arg>loopback</arg>
                        </gpgArguments>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-help-plugin</artifactId>
                    <version>${plugin.help.version}</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-install-plugin</artifactId>
                    <version>${plugin.install.version}</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-invoker-plugin</artifactId>
                    <version>${plugin.invoker.version}</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-jar-plugin</artifactId>
                    <version>${plugin.jar.version}</version>
                    <configuration>
                        <archive>
                            <manifestEntries>
                                <Specification-Title>${project.name}</Specification-Title>
                                <Specification-Version>${project.version}</Specification-Version>
                                <Specification-Vendor>${project.organization.name}</Specification-Vendor>
                                <Implementation-Title>${project.name}</Implementation-Title>
                                <Implementation-Version>${buildNumber}</Implementation-Version>
                                <Implementation-Vendor>${project.organization.name}</Implementation-Vendor>
                                <Implementation-Vendor-Id>com.dattack</Implementation-Vendor-Id>
                                <Implementation-Build>${implementation.build}</Implementation-Build>
                                <X-Compile-Source-JDK>${dattack.compiler.source.version}</X-Compile-Source-JDK>
                                <X-Compile-Target-JDK>${dattack.compiler.target.version}</X-Compile-Target-JDK>
                            </manifestEntries>
                        </archive>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-javadoc-plugin</artifactId>
                    <version>${plugin.javadoc.version}</version>
                    <executions>
                        <execution>
                            <id>attach-javadocs</id>
                            <goals>
                                <goal>jar</goal>
                            </goals>
                        </execution>
                    </executions>
                    <configuration>
                        <quiet>true</quiet>
                        <encoding>${project.build.sourceEncoding}</encoding>
                        <failOnError>false</failOnError>
                        <notimestamp>true</notimestamp>
                        <linksource>true</linksource>
                        <links>
                            <link>${javadoc.java.link}</link>
                            <link>${javadoc.javaee.link}</link>
                        </links>
                        <archive>
                            <manifest>
                                <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
                                <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
                            </manifest>
                        </archive>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-jxr-plugin</artifactId>
                    <version>${plugin.jxr.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-pmd-plugin</artifactId>
                    <version>${plugin.pmd.version}</version>
                    <configuration>
                        <rulesets>
                            <ruleset>${url.pmd-ruleset.file}</ruleset>
                        </rulesets>
                        <linkXref>true</linkXref>
                        <sourceEncoding>${project.build.sourceEncoding}</sourceEncoding>
                        <minimumTokens>100</minimumTokens>
                        <targetJdk>${dattack.compiler.compilerVersion}</targetJdk>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-project-info-reports-plugin</artifactId>
                    <version>${plugin.project-info-reports.version}</version>
                    <dependencies>
                        <dependency>
                            <groupId>org.apache.bcel</groupId>
                            <artifactId>bcel</artifactId>
                            <version>${bcel.version}</version>
                        </dependency>
                    </dependencies>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-release-plugin</artifactId>
                    <version>${plugin.release.version}</version>
                    <configuration>
                        <useReleaseProfile>false</useReleaseProfile>
                        <goals>deploy</goals>
                        <arguments>-Pdattack-release ${arguments}</arguments>
                        <waitBeforeTagging>10</waitBeforeTagging>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-resources-plugin</artifactId>
                    <version>${plugin.resources.version}</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-scm-plugin</artifactId>
                    <version>${plugin.scm.version}</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-scm-publish-plugin</artifactId>
                    <version>${plugin.scm-publish.version}</version>
                    <dependencies>
                        <dependency>
                            <groupId>org.apache.maven.scm</groupId>
                            <artifactId>maven-scm-provider-gitexe</artifactId>
                            <version>${plugin.maven-scm-provider-gitexe.version}</version>
                        </dependency>
                    </dependencies>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-shade-plugin</artifactId>
                    <version>${plugin.shade.version}</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-site-plugin</artifactId>
                    <version>${plugin.site.version}</version>
                    <executions>
                        <execution>
                            <id>attach-descriptor</id>
                            <goals>
                                <goal>attach-descriptor</goal>
                            </goals>
                        </execution>
                    </executions>
                    <dependencies>
                        <dependency>
                            <groupId>org.apache.maven.wagon</groupId>
                            <artifactId>wagon-ssh</artifactId>
                            <version>${wagon-ssh.version}</version>
                        </dependency>
                    </dependencies>
                    <configuration>
                        <skipDeploy>true</skipDeploy>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-source-plugin</artifactId>
                    <version>${plugin.source.version}</version>
                    <executions>
                        <execution>
                            <id>create-source-jar</id>
                            <goals>
                                <goal>jar-no-fork</goal>
                                <goal>test-jar-no-fork</goal>
                            </goals>
                        </execution>
                    </executions>
                    <configuration>
                        <archive>
                            <manifest>
                                <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
                                <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
                            </manifest>
                        </archive>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>${plugin.surefire.version}</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-report-plugin</artifactId>
                    <version>${plugin.surefire-report.version}</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-war-plugin</artifactId>
                    <version>${plugin.war.version}</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.rat</groupId>
                    <artifactId>apache-rat-plugin</artifactId>
                    <version>${plugin.rat.version}</version>
                    <configuration>
                        <excludes combine.children="append">
                            <exclude>site-content/**</exclude>
                            <exclude>.checkstyle</exclude>
                            <exclude>.fbprefs</exclude>
                            <exclude>.pmd</exclude>
                            <exclude>*.md</exclude>
                            <exclude>/.git/**</exclude>
                            <exclude>src/site/resources/profile.*</exclude>
                            <exclude>profile.*</exclude>
                            <exclude>.externalToolBuilders/**</exclude>
                        </excludes>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>appassembler-maven-plugin</artifactId>
                    <version>${plugin.appassembler.version}</version>
                </plugin>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>build-helper-maven-plugin</artifactId>
                    <version>${plugin.build-helper.version}</version>
                </plugin>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>buildnumber-maven-plugin</artifactId>
                    <version>${plugin.buildnumber.version}</version>
                    <executions>
                        <execution>
                            <phase>generate-resources</phase>
                            <goals>
                                <goal>create</goal>
                            </goals>
                        </execution>
                    </executions>
                    <configuration>
                        <useLastCommittedRevision>true</useLastCommittedRevision>
                        <revisionOnScmFailure>??????</revisionOnScmFailure>
                        <doCheck>false</doCheck>
                        <doUpdate>false</doUpdate>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>clirr-maven-plugin</artifactId>
                    <version>${plugin.clirr.version}</version>
                    <configuration>
                        <minSeverity>${dattack.clirr.minSeverity}</minSeverity>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>jdepend-maven-plugin</artifactId>
                    <version>${plugin.jdepend.version}</version>
                </plugin>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>taglist-maven-plugin</artifactId>
                    <version>${plugin.taglist.version}</version>
                    <configuration>
                        <encoding>UTF-8</encoding>
                        <sourceFileLocale>en</sourceFileLocale>
                        <emptyComments>true</emptyComments>
                        <tagListOptions>
                            <tagClasses>
                                <tagClass>
                                    <displayName>Code Work</displayName>
                                    <tags>
                                        <tag>
                                            <matchString>@FIXME</matchString>
                                            <matchType>exact</matchType>
                                        </tag>
                                        <tag>
                                            <matchString>@TODO</matchString>
                                            <matchType>exact</matchType>
                                        </tag>
                                    </tags>
                                </tagClass>
                            </tagClasses>
                        </tagListOptions>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>versions-maven-plugin</artifactId>
                    <version>${plugin.versions.version}</version>
                </plugin>
                <plugin>
                    <groupId>org.jacoco</groupId>
                    <artifactId>jacoco-maven-plugin</artifactId>
                    <version>${plugin.jacoco.version}</version>
                    <executions>
                        <execution>
                            <id>prepare-agent</id>
                            <phase>process-test-classes</phase>
                            <goals>
                                <goal>prepare-agent</goal>
                            </goals>
                        </execution>
                        <execution>
                            <id>report</id>
                            <phase>site</phase>
                            <goals>
                                <goal>report</goal>
                            </goals>
                        </execution>
                        <execution>
                            <id>check</id>
                            <goals>
                                <goal>check</goal>
                            </goals>
                            <configuration>
                                <rules>
                                    <rule>
                                        <element>BUNDLE</element>
                                        <limits>
                                            <limit>
                                                <counter>CLASS</counter>
                                                <value>COVEREDRATIO</value>
                                                <minimum>${dattack.jacoco.classRatio}</minimum>
                                            </limit>
                                            <limit>
                                                <counter>INSTRUCTION</counter>
                                                <value>COVEREDRATIO</value>
                                                <minimum>${dattack.jacoco.instructionRatio}</minimum>
                                            </limit>
                                            <limit>
                                                <counter>METHOD</counter>
                                                <value>COVEREDRATIO</value>
                                                <minimum>${dattack.jacoco.methodRatio}</minimum>
                                            </limit>
                                            <limit>
                                                <counter>BRANCH</counter>
                                                <value>COVEREDRATIO</value>
                                                <minimum>${dattack.jacoco.branchRatio}</minimum>
                                            </limit>
                                            <limit>
                                                <counter>LINE</counter>
                                                <value>COVEREDRATIO</value>
                                                <minimum>${dattack.jacoco.lineRatio}</minimum>
                                            </limit>
                                            <limit>
                                                <counter>COMPLEXITY</counter>
                                                <value>COVEREDRATIO</value>
                                                <minimum>${dattack.jacoco.complexityRatio}</minimum>
                                            </limit>
                                        </limits>
                                    </rule>
                                </rules>
                                <haltOnFailure>${dattack.jacoco.haltOnFailure}</haltOnFailure>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
                <plugin>
                    <groupId>org.sonatype.plugins</groupId>
                    <artifactId>nexus-staging-maven-plugin</artifactId>
                    <version>${plugin.nexus-staging.version}</version>
                    <extensions>true</extensions>
                    <configuration>
                        <serverId>ossrh</serverId>
                        <nexusUrl>https://oss.sonatype.org/</nexusUrl>
                        <autoReleaseAfterClose>true</autoReleaseAfterClose>
                    </configuration>
                </plugin>
            </plugins>
        </pluginManagement>
        <plugins>
            <plugin>
                <groupId>com.github.ekryd.sortpom</groupId>
                <artifactId>sortpom-maven-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.apache.rat</groupId>
                <artifactId>apache-rat-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>buildnumber-maven-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.sonatype.plugins</groupId>
                <artifactId>nexus-staging-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
    <reporting>
        <plugins>
            <plugin>
                <groupId>com.github.spotbugs</groupId>
                <artifactId>spotbugs-maven-plugin</artifactId>
                <version>${plugin.spotbugs.version}</version>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-changelog-plugin</artifactId>
                <version>${plugin.changelog.version}</version>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-changes-plugin</artifactId>
                <version>${plugin.changes.version}</version>
                <reportSets>
                    <reportSet>
                        <reports>
                            <report>changes-report</report>
                            <report>github-report</report>
                        </reports>
                    </reportSet>
                </reportSets>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-checkstyle-plugin</artifactId>
                <version>${plugin.checkstyle.version}</version>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-javadoc-plugin</artifactId>
                <version>${plugin.javadoc.version}</version>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jxr-plugin</artifactId>
                <version>${plugin.jxr.version}</version>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-pmd-plugin</artifactId>
                <version>${plugin.pmd.version}</version>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-project-info-reports-plugin</artifactId>
                <version>${plugin.project-info-reports.version}</version>
                <reportSets>
                    <reportSet>
                        <reports>
                            <report>index</report>
                            <report>summary</report>
                            <report>modules</report>
                            <report>licenses</report>
                            <report>team</report>
                            <report>scm</report>
                            <report>issue-management</report>
                            <report>mailing-lists</report>
                            <report>dependency-info</report>
                            <report>dependency-management</report>
                            <report>dependencies</report>
                            <report>dependency-convergence</report>
                            <report>ci-management</report>
                            <report>plugin-management</report>
                            <report>plugins</report>
                            <report>distribution-management</report>
                        </reports>
                    </reportSet>
                </reportSets>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-site-plugin</artifactId>
                <version>${plugin.site.version}</version>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-report-plugin</artifactId>
                <version>${plugin.surefire-report.version}</version>
            </plugin>
            <plugin>
                <groupId>org.apache.rat</groupId>
                <artifactId>apache-rat-plugin</artifactId>
                <version>${plugin.rat.version}</version>
            </plugin>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>clirr-maven-plugin</artifactId>
                <version>${plugin.clirr.version}</version>
            </plugin>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>jdepend-maven-plugin</artifactId>
                <version>${plugin.jdepend.version}</version>
            </plugin>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>taglist-maven-plugin</artifactId>
                <version>${plugin.taglist.version}</version>
            </plugin>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>versions-maven-plugin</artifactId>
                <version>${plugin.versions.version}</version>
                <reportSets>
                    <reportSet>
                        <reports>
                            <report>dependency-updates-report</report>
                            <report>plugin-updates-report</report>
                            <report>property-updates-report</report>
                        </reports>
                    </reportSet>
                </reportSets>
            </plugin>
            <plugin>
                <groupId>org.jacoco</groupId>
                <artifactId>jacoco-maven-plugin</artifactId>
                <version>${plugin.jacoco.version}</version>
            </plugin>
        </plugins>
    </reporting>

    <profiles>

        <profile>
            <id>sign</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-gpg-plugin</artifactId>
                        <version>${plugin.gpg.version}</version>
                        <executions>
                            <execution>
                                <id>sign-artifacts</id>
                                <phase>verify</phase>
                                <goals>
                                    <goal>sign</goal>
                                </goals>
                            </execution>
                        </executions>
                        <configuration>
                            <gpgArguments>
                                <arg>--digest-algo=SHA512</arg>
                                <arg>--no-tty</arg>
                                <arg>--pinentry-mode</arg>
                                <arg>loopback</arg>
                            </gpgArguments>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
            <properties>
                <gpg.executable>gpg2</gpg.executable>
            </properties>
        </profile>

        <profile>
            <id>build-extras</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <artifactId>maven-jar-plugin</artifactId>
                        <executions>
                            <execution>
                                <goals>
                                    <goal>test-jar</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>javadoc</goal>
                                    <goal>jar</goal>
                                </goals>
                            </execution>
                        </executions>
                        <configuration>
                            <source>${dattack.compiler.source.version}</source>
                        </configuration>
                    </plugin>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-source-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>attach-sources</id>
                                <goals>
                                    <goal>jar-no-fork</goal>
                                    <goal>test-jar</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>

        <profile>
            <id>dattack-release</id>
            <build>
                <plugins>
                    <plugin>
                        <artifactId>maven-assembly-plugin</artifactId>
                        <executions>
                            <execution>
                                <phase>verify</phase>
                                <goals>
                                    <goal>single</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <artifactId>maven-install-plugin</artifactId>
                    </plugin>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-jar-plugin</artifactId>
                        <executions>
                            <execution>
                                <goals>
                                    <goal>test-jar</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <artifactId>maven-release-plugin</artifactId>
                        <configuration>
                            <releaseProfiles>dattack-release</releaseProfiles>
                        </configuration>
                    </plugin>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-source-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>attach-test-sources</id>
                                <goals>
                                    <goal>test-jar</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>

        <profile>
            <id>java-1.8</id>
            <properties>
                <dattack.compiler.compilerVersion>1.8</dattack.compiler.compilerVersion>
                <dattack.compiler.javac>${JAVA_1_8_HOME}/bin/javac</dattack.compiler.javac>
                <dattack.surefire.java>${JAVA_1_8_HOME}/bin/java</dattack.surefire.java>
            </properties>
        </profile>

        <profile>
            <id>java-1.9</id>
            <properties>
                <dattack.compiler.compilerVersion>1.9</dattack.compiler.compilerVersion>
                <dattack.compiler.javac>${JAVA_1_9_HOME}/bin/javac</dattack.compiler.javac>
                <dattack.surefire.java>${JAVA_1_9_HOME}/bin/java</dattack.surefire.java>
            </properties>
        </profile>

        <profile>
            <id>java-1.10</id>
            <properties>
                <dattack.compiler.compilerVersion>1.10</dattack.compiler.compilerVersion>
                <dattack.compiler.javac>${JAVA_1_10_HOME}/bin/javac</dattack.compiler.javac>
                <dattack.surefire.java>${JAVA_1_10_HOME}/bin/java</dattack.surefire.java>
            </properties>
        </profile>

        <profile>
            <id>java-1.11</id>
            <properties>
                <dattack.compiler.compilerVersion>1.11</dattack.compiler.compilerVersion>
                <dattack.compiler.javac>${JAVA_1_11_HOME}/bin/javac</dattack.compiler.javac>
                <dattack.surefire.java>${JAVA_1_11_HOME}/bin/java</dattack.surefire.java>
            </properties>
        </profile>

        <profile>
            <id>java-1.12</id>
            <properties>
                <dattack.compiler.compilerVersion>1.12</dattack.compiler.compilerVersion>
                <dattack.compiler.javac>${JAVA_1_12_HOME}/bin/javac</dattack.compiler.javac>
                <dattack.surefire.java>${JAVA_1_12_HOME}/bin/java</dattack.surefire.java>
            </properties>
        </profile>

        <profile>
            <id>release-notes</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-changes-plugin</artifactId>
                        <version>${plugin.changes.version}</version>
                        <executions>
                            <execution>
                                <id>create-release-notes</id>
                                <phase>generate-resources</phase>
                                <goals>
                                    <goal>announcement-generate</goal>
                                </goals>
                            </execution>
                        </executions>
                        <configuration>
                            <template>release-notes.vm</template>
                            <templateDirectory>src/changes</templateDirectory>
                            <runOnlyAtExecutionRoot>true</runOnlyAtExecutionRoot>
                            <announcementDirectory>.</announcementDirectory>
                            <announcementFile>RELEASE-NOTES.txt</announcementFile>
                            <announceParameters>
                                <releaseVersion>${project.version}</releaseVersion>
                            </announceParameters>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>

        <profile>
            <id>site-basic</id>
            <properties>
                <checkstyle.skip>true</checkstyle.skip>
                <clirr.skip>true</clirr.skip>
                <jacoco.skip>true</jacoco.skip>
                <maven.javadoc.skip>true</maven.javadoc.skip>
                <rat.skip>true</rat.skip>
                <skipSurefireReport>true</skipSurefireReport>
                <skipTests>true</skipTests>
            </properties>
        </profile>

        <profile>
            <id>travis-jacoco</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.eluder.coveralls</groupId>
                        <artifactId>coveralls-maven-plugin</artifactId>
                        <version>${plugin.coveralls.version}</version>
                        <configuration>
                            <timestampFormat>${dattack.coveralls.timestampFormat}</timestampFormat>
                        </configuration>
                    </plugin>
                    <plugin>
                        <groupId>org.jacoco</groupId>
                        <artifactId>jacoco-maven-plugin</artifactId>
                        <version>${plugin.jacoco.version}</version>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>

</project>
