<?xml version="1.0"?>
<!--
Copyright (c) 2012-2017, jcabi.com
All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met: 1) Redistributions of source code must retain the above
copyright notice, this list of conditions and the following
disclaimer. 2) Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the following
disclaimer in the documentation and/or other materials provided
with the distribution. 3) Neither the name of the jcabi.com nor
the names of its contributors may be used to endorse or promote
products derived from this software without specific prior written
permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT
NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
OF THE POSSIBILITY OF SUCH DAMAGE.
-->
<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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.jcabi</groupId>
  <artifactId>parent</artifactId>
  <version>0.49.5</version>
  <packaging>pom</packaging>
  <name>parent</name>
  <description>Parent POM.xml with most oftenly used pre-configured features</description>
  <url>http://www.jcabi.com/parent</url>
  <inceptionYear>2012</inceptionYear>
  <organization>
    <name>jcabi.com</name>
    <url>http://www.jcabi.com</url>
  </organization>
  <licenses>
    <license>
      <name>BSD</name>
      <url>http://www.jcabi.com/LICENSE.txt</url>
      <distribution>repo</distribution>
      <comments>BSD License</comments>
    </license>
  </licenses>
  <developers>
    <developer>
      <id>1</id>
      <name>Yegor Bugayenko</name>
      <email>yegor256@gmail.com</email>
      <organization>teamed.io</organization>
      <organizationUrl>http://www.teamed.io</organizationUrl>
      <roles>
        <role>Architect</role>
        <role>Developer</role>
      </roles>
      <timezone>-7</timezone>
    </developer>
  </developers>
  <issueManagement>
    <system>github</system>
    <url>https://github.com/jcabi/jcabi-parent/issues</url>
  </issueManagement>
  <ciManagement>
    <system>travis</system>
    <url>https://travis-ci.org/jcabi/jcabi-parent</url>
  </ciManagement>
  <scm>
    <connection>scm:git:github.com:jcabi/jcabi-parent.git</connection>
    <developerConnection>scm:git:github.com:jcabi/jcabi-parent.git</developerConnection>
    <url>https://github.com/jcabi/jcabi-parent</url>
  </scm>
  <distributionManagement>
    <downloadUrl>https://oss.sonatype.org/content/groups/public</downloadUrl>
    <repository>
      <id>oss.sonatype.org</id>
      <url>https://oss.sonatype.org/service/local/staging/deploy/maven2</url>
    </repository>
    <snapshotRepository>
      <id>oss.sonatype.org</id>
      <url>https://oss.sonatype.org/content/repositories/snapshots</url>
    </snapshotRepository>
    <site>
      <id>parent.jcabi.com</id>
      <url>http://parent.jcabi.com/</url>
    </site>
  </distributionManagement>
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <!--
    ISO 8601, see http://en.wikipedia.org/wiki/ISO_8601. This
    property is defined in order to give us an ability to use ${maven.build.timestamp}
    later in the file
    -->
    <maven.build.timestamp.format>yyyy-MM-dd HH:mm</maven.build.timestamp.format>
    <maven.compiler.source>1.6</maven.compiler.source>
    <maven.compiler.target>1.6</maven.compiler.target>
  </properties>
  <repositories>
    <!--
    You should keep it empty in your project.
    @see http://www.sonatype.com/people/2009/02/why-putting-repositories-in-your-poms-is-a-bad-idea/
    -->
  </repositories>
  <pluginRepositories>
    <!--
    You should keep it empty in your project.
    @see http://www.sonatype.com/people/2009/02/why-putting-repositories-in-your-poms-is-a-bad-idea/
    -->
    <pluginRepository>
      <id>oss.sonatype.org</id>
      <url>https://oss.sonatype.org/content/groups/public</url>
    </pluginRepository>
  </pluginRepositories>
  <profiles>
    <profile>
      <!--
      The profile deploys all artifacts to oss.sonatype.org
      repository (if you're registered there). It also skips
      default deployment plugin.
      @see http://www.jcabi.com/jcabi-parent/profile-sonatype.html
      -->
      <id>sonatype</id>
      <build>
        <pluginManagement>
          <plugins>
            <plugin>
              <artifactId>maven-deploy-plugin</artifactId>
              <configuration>
                <skip>true</skip>
              </configuration>
            </plugin>
          </plugins>
        </pluginManagement>
        <plugins>
          <plugin>
            <artifactId>maven-source-plugin</artifactId>
            <executions>
              <execution>
                <id>jcabi-sources</id>
                <configuration>
                  <forceCreation>true</forceCreation>
                </configuration>
                <goals>
                  <goal>jar</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <!--
            Generate -javadoc.jar artifact, required by Maven Central.
            -->
            <artifactId>maven-javadoc-plugin</artifactId>
            <executions>
              <execution>
                <id>jcabi-javadoc</id>
                <phase>package</phase>
                <goals>
                  <goal>jar</goal>
                </goals>
                <configuration>
                  <additionalparam>${javadoc.opts}</additionalparam>
                </configuration>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <!-- @see http://www.sonatype.com/books/nexus-book/reference/staging-sect-deployment.html -->
            <groupId>org.sonatype.plugins</groupId>
            <artifactId>nexus-staging-maven-plugin</artifactId>
            <version>1.6.7</version>
            <extensions>true</extensions>
            <configuration>
              <serverId>oss.sonatype.org</serverId>
              <nexusUrl>https://oss.sonatype.org/</nexusUrl>
              <description>${project.version}</description>
            </configuration>
            <executions>
              <execution>
                <id>jcabi-deploy-to-sonatype</id>
                <phase>deploy</phase>
                <goals>
                  <goal>deploy</goal>
                  <goal>release</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <!--
      Static quality analysis with Qulice and other tools.
      This profile is supposed to be activated in continuous
      integration environment, right before the final approval
      of the build. It runs a number of static code analysis
      tools to validate and approve the quality of source
      code and the SCM repository.
      @see http://www.jcabi.com/jcabi-parent/profile-qulice.html
      -->
      <id>qulice</id>
      <build>
        <plugins>
          <plugin>
            <!--
            Qulice-maven-plugin is a compound static analysis
            tool that aggregates Checkstyle, PMD, FindBugs,
            CodeNarc (for Groovy code) and a few other analyzers.
            Qulice also configures them correctly to enable the
            most important rules.
            @see http://www.qulice.com/qulice-maven-plugin/
            -->
            <groupId>com.qulice</groupId>
            <artifactId>qulice-maven-plugin</artifactId>
            <executions>
              <execution>
                <id>jcabi-check</id>
                <phase>verify</phase>
                <goals>
                  <goal>check</goal>
                </goals>
                <configuration>
                  <license>file:${basedir}/LICENSE.txt</license>
                  <excludes>
                    <exclude>xml:.*</exclude>
                  </excludes>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <!--
      Xdoc is a static validator of XML formatting.
      @see https://github.com/yegor256/xdoc/
      -->
      <id>xdoc</id>
      <activation>
        <file>
          <exists>${basedir}/LICENSE.txt</exists>
        </file>
      </activation>
      <build>
        <plugins>
          <plugin>
            <artifactId>maven-antrun-plugin</artifactId>
            <version>1.8</version>
            <executions>
              <execution>
                <phase>verify</phase>
                <configuration>
                  <target>
                    <taskdef resource="net/sf/antcontrib/antcontrib.properties" classpathref="maven.plugin.classpath"/>
                    <property environment="env"/>
                    <available file="xcop" filepath="${env.PATH}" property="xcop.present"/>
                    <if>
                      <equals arg1="${xcop.present}" arg2="true"/>
                      <then>
                        <patternset id="xcop.main">
                          <include name="**/*.xml"/>
                          <include name="**/*.xsl"/>
                          <include name="**/*.xsd"/>
                          <exclude name="target/**/*"/>
                          <exclude name=".idea/**/*"/>
                        </patternset>
                        <condition property="xcop.excludes.defined">
                          <isreference refid="xcop.excludes"/>
                        </condition>
                        <if>
                          <equals arg1="${xcop.excludes.defined}" arg2="true"/>
                          <then>
                            <fileset dir="." id="files">
                              <patternset refid="xcop.main"/>
                              <patternset refid="xcop.excludes"/>
                            </fileset>
                            <pathconvert refid="files" property="converted" pathsep=" "/>
                          </then>
                          <else>
                            <fileset dir="." id="files">
                              <patternset refid="xcop.main"/>
                            </fileset>
                            <pathconvert refid="files" property="converted" pathsep=" "/>
                          </else>
                        </if>
                        <condition property="os.windows">
                          <os family="windows"/>
                        </condition>
                        <if>
                          <equals arg1="${os.windows}" arg2="true"/>
                          <then>
                            <exec executable="cmd" failonerror="true">
                              <arg line="/c xcop"/>
                              <arg value="--license"/>
                              <arg value="LICENSE.txt"/>
                              <arg line="${converted}"/>
                            </exec>
                          </then>
                          <else>
                            <exec executable="xcop" failonerror="true">
                              <arg value="--license"/>
                              <arg value="LICENSE.txt"/>
                              <arg line="${converted}"/>
                            </exec>
                          </else>
                        </if>
                      </then>
                      <else>
                        <echo message="XCOP is not available in PATH"/>
                      </else>
                    </if>
                  </target>
                </configuration>
                <goals>
                  <goal>run</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>jcabi-doclint-java8-disable</id>
      <activation>
        <jdk>[1.8,)</jdk>
      </activation>
      <properties>
        <javadoc.opts>-Xdoclint:none</javadoc.opts>
      </properties>
    </profile>
    <profile>
      <!--
      The profile builds site for production environment.
      @see http://www.jcabi.com/jcabi-parent/profile-qulice.html
      -->
      <id>site</id>
      <build>
        <plugins>
          <plugin>
            <!--
            Checks the quality of Maven project documentation
            @see http://maven.apache.org/plugins/maven-docck-plugin/index.html
            -->
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-docck-plugin</artifactId>
            <version>1.1</version>
            <executions>
              <execution>
                <id>jcabi-check</id>
                <!--
                It doesn't work as expected:
                https://jira.codehaus.org/browse/MDOCCK-27
                -->
                <phase>never-verify</phase>
                <goals>
                  <goal>check</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <artifactId>maven-site-plugin</artifactId>
            <configuration>
              <generateSitemap>true</generateSitemap>
            </configuration>
            <executions>
              <execution>
                <id>jcabi-attach-descriptor</id>
                <goals>
                  <goal>attach-descriptor</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
      <reporting>
        <plugins>
          <plugin>
            <artifactId>maven-project-info-reports-plugin</artifactId>
            <version>2.7</version>
            <configuration>
              <dependencyDetailsEnabled>false</dependencyDetailsEnabled>
              <dependencyLocationsEnabled>false</dependencyLocationsEnabled>
            </configuration>
            <reportSets>
              <reportSet>
                <reports>
                  <report>cim</report>
                  <report>dependencies</report>
                  <report>index</report>
                  <report>issue-tracking</report>
                  <report>license</report>
                  <report>mailing-list</report>
                  <report>plugins</report>
                  <report>project-team</report>
                  <report>scm</report>
                  <report>summary</report>
                </reports>
              </reportSet>
            </reportSets>
          </plugin>
          <plugin>
            <artifactId>maven-jxr-plugin</artifactId>
            <version>2.4</version>
            <configuration>
              <aggregate>true</aggregate>
            </configuration>
          </plugin>
          <plugin>
            <artifactId>maven-surefire-report-plugin</artifactId>
            <version>2.17</version>
            <reportSets>
              <reportSet>
                <reports>
                  <report>report-only</report>
                </reports>
              </reportSet>
            </reportSets>
          </plugin>
          <plugin>
            <!--
            Shows reports about recent versions of plugins and deps.
            @see http://mojo.codehaus.org/versions-maven-plugin/
            -->
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>versions-maven-plugin</artifactId>
            <version>2.2</version>
            <reportSets>
              <reportSet>
                <reports>
                  <report>dependency-updates-report</report>
                  <report>plugin-updates-report</report>
                </reports>
              </reportSet>
            </reportSets>
          </plugin>
          <plugin>
            <!--
            API documentation builder. It will produce documentation
            which is then to be used in site:site. It will be
            located at target/site/apidocs.
            -->
            <artifactId>maven-javadoc-plugin</artifactId>
            <configuration>
              <failOnError>true</failOnError>
              <quiet>true</quiet>
              <links>
                <link>http://download.oracle.com/javaee/6/api/</link>
                <link>http://sonatype.github.com/sonatype-aether/apidocs/</link>
                <link>http://hamcrest.org/JavaHamcrest/javadoc/1.3/</link>
                <link>http://docs.mockito.googlecode.com/hg/latest/</link>
                <link>http://www.h2database.com/javadoc/</link>
                <link>http://jolbox.com/bonecp/downloads/site/apidocs/</link>
              </links>
              <detectLinks>true</detectLinks>
              <additionalparam>${javadoc.opts}</additionalparam>
              <tags>
                <!--
                Here we instruct plugin to use custom tag
                @link http://maven.apache.org/plugins/maven-javadoc-plugin/examples/tag-configuration.html
                -->
                <tag>
                  <name>todo</name>
                  <placement>a</placement>
                  <head>To do:</head>
                </tag>
                <tag>
                  <name>checkstyle</name>
                  <placement>a</placement>
                  <head>Suppressed Checkstyle violations:</head>
                </tag>
              </tags>
            </configuration>
            <reportSets>
              <reportSet>
                <id>jcabi-versioned-html</id>
                <reports>
                  <report>javadoc</report>
                </reports>
                <configuration>
                  <windowtitle>${project.name} ${project.version} API</windowtitle>
                  <doctitle>${project.name} ${project.version} API</doctitle>
                  <sourcepath>src/main/java</sourcepath>
                  <destDir>apidocs-${project.version}</destDir>
                </configuration>
              </reportSet>
              <reportSet>
                <id>jcabi-versioned-test</id>
                <reports>
                  <report>test-javadoc</report>
                </reports>
                <configuration>
                  <testWindowtitle>${project.name} ${project.version} Mock API</testWindowtitle>
                  <testDoctitle>${project.name} ${project.version} Mock API</testDoctitle>
                  <sourcepath>src/mock/java</sourcepath>
                  <destDir>testapidocs-${project.version}</destDir>
                </configuration>
              </reportSet>
            </reportSets>
          </plugin>
          <plugin>
            <groupId>org.jacoco</groupId>
            <artifactId>jacoco-maven-plugin</artifactId>
          </plugin>
          <plugin>
            <artifactId>maven-plugin-plugin</artifactId>
            <version>3.3</version>
          </plugin>
        </plugins>
      </reporting>
    </profile>
    <profile>
      <!--
      Enable AOP AspectJ aspects. The profile is activated when you
      have a directory src/main/aspect (even if it's empty). The profile
      will apply all aspects from that folder to your classes and test
      classes, and also will apply com.jcabi:jcabi-aspects. It will
      also add JSR-303 API to the classpath.
      -->
      <id>aspectj</id>
      <activation>
        <file>
          <exists>${basedir}/src/main/aspect</exists>
        </file>
      </activation>
      <dependencies>
        <dependency>
          <groupId>com.jcabi</groupId>
          <artifactId>jcabi-aspects</artifactId>
          <scope>provided</scope>
        </dependency>
        <dependency>
          <groupId>org.aspectj</groupId>
          <artifactId>aspectjrt</artifactId>
          <scope>provided</scope>
        </dependency>
        <dependency>
          <groupId>javax.validation</groupId>
          <artifactId>validation-api</artifactId>
          <scope>compile</scope>
        </dependency>
        <dependency>
          <groupId>org.hibernate.validator</groupId>
          <artifactId>hibernate-validator</artifactId>
          <scope>provided</scope>
        </dependency>
        <dependency>
          <groupId>javax.el</groupId>
          <artifactId>javax.el-api</artifactId>
          <scope>provided</scope>
        </dependency>
      </dependencies>
      <build>
        <plugins>
          <plugin>
            <groupId>com.jcabi</groupId>
            <artifactId>jcabi-maven-plugin</artifactId>
            <executions>
              <execution>
                <id>jcabi-ajc-compile</id>
                <phase>process-classes</phase>
                <goals>
                  <goal>ajc</goal>
                </goals>
                <configuration>
                  <tempDirectory>${project.build.directory}/jcabi-ajc</tempDirectory>
                  <classesDirectory>${project.build.outputDirectory}</classesDirectory>
                  <aspectsDirectories>
                    <directory>${project.basedir}/src/main/aspect</directory>
                  </aspectsDirectories>
                </configuration>
              </execution>
              <execution>
                <id>jcabi-ajc-test-compile</id>
                <phase>process-test-classes</phase>
                <goals>
                  <goal>ajc</goal>
                </goals>
                <configuration>
                  <tempDirectory>${project.build.directory}/jcabi-ajc-test</tempDirectory>
                  <classesDirectory>${project.build.testOutputDirectory}</classesDirectory>
                  <aspectsDirectories>
                    <directory>${project.basedir}/src/main/aspect</directory>
                    <directory>${project.basedir}/src/test/aspect</directory>
                  </aspectsDirectories>
                  <scopes>
                    <scope>compile</scope>
                    <scope>provided</scope>
                    <scope>system</scope>
                    <scope>runtime</scope>
                    <scope>test</scope>
                  </scopes>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <!--
      Compile Clojure sources from src/main/clojure and src/test/clojure
      directories.
      -->
      <id>clojure</id>
      <activation>
        <file>
          <exists>${basedir}/src/main/clojure</exists>
        </file>
      </activation>
      <build>
        <plugins>
          <plugin>
            <groupId>com.theoryinpractise</groupId>
            <artifactId>clojure-maven-plugin</artifactId>
            <version>1.8.1</version>
            <configuration>
              <warnOnReflection>true</warnOnReflection>
              <vmargs>-Dlog4j.configuration=file:${basedir}/src/test/resources/log4j.properties</vmargs>
            </configuration>
            <executions>
              <execution>
                <id>jcabi-clojure</id>
                <goals>
                  <goal>add-source</goal>
                  <goal>add-test-source</goal>
                  <goal>compile</goal>
                  <goal>test</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <!--
      Compile Groovy sources from src/main/groovy and src/test/groovy
      directories.
      -->
      <id>groovy</id>
      <activation>
        <file>
          <exists>${basedir}/src/main/groovy</exists>
        </file>
      </activation>
      <dependencies>
        <dependency>
          <groupId>org.codehaus.groovy</groupId>
          <artifactId>groovy-all</artifactId>
        </dependency>
      </dependencies>
      <build>
        <plugins>
          <plugin>
            <groupId>org.codehaus.gmavenplus</groupId>
            <artifactId>gmavenplus-plugin</artifactId>
            <version>1.5</version>
            <configuration>
              <verbose>true</verbose>
              <stacktrace>true</stacktrace>
            </configuration>
            <executions>
              <execution>
                <id>jcabi-groovy</id>
                <goals>
                  <goal>compile</goal>
                  <goal>testCompile</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <!--
      This profile configures site deployment to github pages. See
      http://pages.github.com/
      http://github.github.com/maven-plugins/site-plugin/site-mojo.html
      -->
      <id>gh-pages</id>
      <activation>
        <file>
          <exists>${basedir}/src/site/resources/CNAME</exists>
        </file>
      </activation>
      <properties>
        <github.global.server>github</github.global.server>
      </properties>
      <build>
        <plugins>
          <plugin>
            <artifactId>maven-site-plugin</artifactId>
            <configuration>
              <skipDeploy>true</skipDeploy>
            </configuration>
          </plugin>
          <plugin>
            <groupId>com.github.github</groupId>
            <artifactId>site-maven-plugin</artifactId>
            <configuration>
              <message>site for ${project.version}</message>
              <path>${site.path}</path>
              <merge>true</merge>
            </configuration>
            <executions>
              <execution>
                <phase>site-deploy</phase>
                <goals>
                  <goal>site</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <!--
      Sign artifacts before installation with GPG. To enable
      this profile you should have "gpg.keyname" property defined.
      -->
      <id>jcabi-gpg</id>
      <activation>
        <property>
          <name>gpg.keyname</name>
        </property>
      </activation>
      <build>
        <plugins>
          <plugin>
            <!--
            To GPG-sign the artifact before deployment to foreign
            repository. GPG keys have to be provided in CI
            environment, and published beforehand.
            @link http://www.sonatype.com/people/2010/01/how-to-generate-pgp-signatures-with-maven/
            -->
            <artifactId>maven-gpg-plugin</artifactId>
            <version>1.6</version>
            <executions>
              <execution>
                <id>jcabi-sign-artifacts</id>
                <phase>verify</phase>
                <goals>
                  <goal>sign</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <!--
      Package MOCK artifact. The profile is activated when you have
      a directory "/src/mock/java" available. The profile will create
      and install a new artifact with "mock" classifier, which will
      include all sources from that src/mock/java folder and all
      required resources.
      -->
      <id>jcabi-mock</id>
      <activation>
        <file>
          <exists>${basedir}/src/mock/java</exists>
        </file>
      </activation>
      <build>
        <plugins>
          <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>build-helper-maven-plugin</artifactId>
            <version>1.12</version>
            <executions>
              <execution>
                <id>jcabi-add-test-sources</id>
                <phase>validate</phase>
                <goals>
                  <goal>add-test-source</goal>
                </goals>
                <configuration>
                  <sources>
                    <source>${basedir}/src/mock/java</source>
                  </sources>
                </configuration>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <artifactId>maven-jar-plugin</artifactId>
            <executions>
              <execution>
                <id>jcabi-mock-artifact</id>
                <phase>package</phase>
                <goals>
                  <goal>jar</goal>
                </goals>
                <configuration>
                  <classesDirectory>${project.build.testOutputDirectory}</classesDirectory>
                  <archive>
                    <index>true</index>
                    <manifest>
                      <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
                    </manifest>
                  </archive>
                  <classifier>mock</classifier>
                  <includes>
                    <include>**/*Mocker.class</include>
                    <include>**/*Mocker$*.class</include>
                  </includes>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <!--
      Start maven-invoker-plugin when src/it folder is present.
      -->
      <id>jcabi-invoker</id>
      <activation>
        <file>
          <exists>${basedir}/src/it</exists>
        </file>
      </activation>
      <build>
        <plugins>
          <plugin>
            <artifactId>maven-invoker-plugin</artifactId>
            <executions>
              <execution>
                <goals>
                  <goal>install</goal>
                  <goal>run</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <!--
      Generate ANTLR3 grammar. The profile is activated when you have
      a directory src/main/antlr3. It will activate an ANTLR3 compiler and
      add a runtime ANTLR3 dependency.
      -->
      <id>jcabi-antlr3</id>
      <activation>
        <file>
          <exists>${basedir}/src/main/antlr3</exists>
        </file>
      </activation>
      <dependencies>
        <dependency>
          <groupId>org.antlr</groupId>
          <artifactId>antlr-runtime</artifactId>
        </dependency>
      </dependencies>
      <build>
        <plugins>
          <plugin>
            <groupId>org.antlr</groupId>
            <artifactId>antlr3-maven-plugin</artifactId>
            <version>3.5.2</version>
            <executions>
              <execution>
                <id>jcabi-antlr3</id>
                <phase>generate-sources</phase>
                <goals>
                  <goal>antlr</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>jcabi-antlr4</id>
      <activation>
        <file>
          <exists>${basedir}/src/main/antlr4</exists>
        </file>
      </activation>
      <dependencies>
        <dependency>
          <groupId>org.antlr</groupId>
          <artifactId>antlr4-runtime</artifactId>
        </dependency>
      </dependencies>
      <build>
        <plugins>
          <plugin>
            <groupId>org.antlr</groupId>
            <artifactId>antlr4-maven-plugin</artifactId>
            <version>4.5.3</version>
            <configuration>
              <sourceDirectory>src/main/antlr4</sourceDirectory>
            </configuration>
            <executions>
              <execution>
                <id>jcabi-antlr4</id>
                <phase>generate-sources</phase>
                <goals>
                  <goal>antlr4</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <!--
      Enable unit testing. The profile is activated when you have
      src/test/java directory in the project. It will add junit, hamcrest,
      and mockito artifacts to the classpath ("test" scope).
      -->
      <id>jcabi-junit</id>
      <activation>
        <file>
          <exists>${basedir}/src/test/java</exists>
        </file>
      </activation>
      <dependencies>
        <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <scope>test</scope>
        </dependency>
        <dependency>
          <groupId>org.hamcrest</groupId>
          <artifactId>hamcrest-core</artifactId>
          <scope>test</scope>
        </dependency>
        <dependency>
          <groupId>org.hamcrest</groupId>
          <artifactId>hamcrest-library</artifactId>
          <scope>test</scope>
        </dependency>
        <dependency>
          <groupId>org.mockito</groupId>
          <artifactId>mockito-core</artifactId>
          <scope>test</scope>
        </dependency>
      </dependencies>
    </profile>
    <profile>
      <!--
      Enable LOG4J for testing and SLF4J binding. The profile is activated
      when you have src/test/resources/log4j.properties. When this file
      is present it means that you want your SLF4J logs to be sent to
      LOG4J during testing time. The profile will add required bindings
      to the classpath.
      -->
      <id>jcabi-slf4j</id>
      <activation>
        <file>
          <exists>${basedir}/src/test/resources/log4j.properties</exists>
        </file>
      </activation>
      <dependencies>
        <dependency>
          <groupId>org.slf4j</groupId>
          <artifactId>slf4j-log4j12</artifactId>
          <scope>test</scope>
        </dependency>
        <dependency>
          <groupId>log4j</groupId>
          <artifactId>log4j</artifactId>
          <scope>test</scope>
        </dependency>
      </dependencies>
    </profile>
    <profile>
      <!--
      It is a fix for schemagen in JDK7.
      -->
      <id>jcabi-jdk7-fix</id>
      <activation>
        <file>
          <exists>${java.home}/../lib/tools.jar</exists>
        </file>
      </activation>
      <build>
        <pluginManagement>
          <plugins>
            <plugin>
              <groupId>com.sun.tools.jxc.maven2</groupId>
              <artifactId>maven-jaxb-schemagen-plugin</artifactId>
              <version>1.2</version>
              <dependencies>
                <dependency>
                  <groupId>com.sun</groupId>
                  <artifactId>tools</artifactId>
                  <version>1.7</version>
                  <scope>system</scope>
                  <systemPath>${java.home}/../lib/tools.jar</systemPath>
                </dependency>
              </dependencies>
            </plugin>
            <plugin>
              <artifactId>maven-plugin-plugin</artifactId>
              <dependencies>
                <dependency>
                  <groupId>com.sun</groupId>
                  <artifactId>tools</artifactId>
                  <version>1.7</version>
                  <scope>system</scope>
                  <systemPath>${java.home}/../lib/tools.jar</systemPath>
                </dependency>
              </dependencies>
            </plugin>
          </plugins>
        </pluginManagement>
      </build>
    </profile>
    <profile>
      <!--
      For every Java package it creates a VERSION.txt file in
      "src/main/resources" directory. This is done in order to help
      with identification of currently used version of a package.
      -->
      <id>jcabi-versionalize-packages</id>
      <activation>
        <file>
          <exists>${basedir}/src/main/java</exists>
        </file>
      </activation>
      <build>
        <plugins>
          <plugin>
            <groupId>com.jcabi</groupId>
            <artifactId>jcabi-maven-plugin</artifactId>
            <executions>
              <execution>
                <id>jcabi-versionalize-packages</id>
                <goals>
                  <goal>versionalize</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>
  <dependencyManagement>
    <dependencies>
      <dependency>
        <!--
        Aether wrapper.
        @see http://aether.jcabi.com/
        -->
        <groupId>com.jcabi</groupId>
        <artifactId>jcabi-aether</artifactId>
        <version>0.10.1</version>
      </dependency>
      <dependency>
        <!--
        AOP Aspects.
        @see http://aspects.jcabi.com/
        -->
        <groupId>com.jcabi</groupId>
        <artifactId>jcabi-aspects</artifactId>
        <version>0.22.6</version>
      </dependency>
      <dependency>
        <!--
        AWS DynamoDB object layer.
        @see http://dynamo.jcabi.com/
        -->
        <groupId>com.jcabi</groupId>
        <artifactId>jcabi-dynamo</artifactId>
        <version>0.21.4</version>
      </dependency>
      <dependency>
        <!--
        Email sending SDK.
        @see http://email.jcabi.com/
        -->
        <groupId>com.jcabi</groupId>
        <artifactId>jcabi-email</artifactId>
        <version>1.10</version>
      </dependency>
      <dependency>
        <!--
        Github API.
        @see http://github.jcabi.com
        -->
        <groupId>com.jcabi</groupId>
        <artifactId>jcabi-github</artifactId>
        <version>0.33</version>
      </dependency>
      <dependency>
        <!--
        HTTP client.
        @see http://http.jcabi.com/
        -->
        <groupId>com.jcabi</groupId>
        <artifactId>jcabi-http</artifactId>
        <version>1.17.1</version>
      </dependency>
      <dependency>
        <!--
        Immutable collections.
        @see http://immutable.jcabi.com/
        -->
        <groupId>com.jcabi</groupId>
        <artifactId>jcabi-immutable</artifactId>
        <version>1.4</version>
      </dependency>
      <dependency>
        <!--
        JDBC wrapper.
        @see http://jdbc.jcabi.com/
        -->
        <groupId>com.jcabi</groupId>
        <artifactId>jcabi-jdbc</artifactId>
        <version>0.16</version>
      </dependency>
      <dependency>
        <!--
        Logging facility.
        @see http://log.jcabi.com/
        -->
        <groupId>com.jcabi</groupId>
        <artifactId>jcabi-log</artifactId>
        <version>0.17.2</version>
      </dependency>
      <dependency>
        <!--
        Reader of META-INF/MANIFEST.MF files
        @see http://manifests.jcabi.com/
        -->
        <groupId>com.jcabi</groupId>
        <artifactId>jcabi-manifests</artifactId>
        <version>1.1</version>
      </dependency>
      <dependency>
        <!--
        XHTML Hamcrest matchers.
        @see http://matchers.jcabi.com/
        -->
        <groupId>com.jcabi</groupId>
        <artifactId>jcabi-matchers</artifactId>
        <version>1.4</version>
      </dependency>
      <dependency>
        <!--
        Maven to SLF4J binding.
        @see http://slf4j.jcabi.com/
        -->
        <groupId>com.jcabi</groupId>
        <artifactId>jcabi-maven-slf4j</artifactId>
        <version>0.9</version>
      </dependency>
      <dependency>
        <!--
        Odesk SDK.
        @see http://odesk.jcabi.com/
        -->
        <groupId>com.jcabi</groupId>
        <artifactId>jcabi-odesk</artifactId>
        <version>0.12</version>
      </dependency>
      <dependency>
        <!--
        Amazon S3 adapter.
        @see http://s3.jcabi.com/
        -->
        <groupId>com.jcabi</groupId>
        <artifactId>jcabi-s3</artifactId>
        <version>0.17.1</version>
      </dependency>
      <dependency>
        <!--
        AWS SimpleDB object layer.
        @see http://simpledb.jcabi.com/
        -->
        <groupId>com.jcabi</groupId>
        <artifactId>jcabi-simpledb</artifactId>
        <version>0.3</version>
      </dependency>
      <dependency>
        <!--
        SSH client.
        @see http://ssh.jcabi.com/
        -->
        <groupId>com.jcabi</groupId>
        <artifactId>jcabi-ssh</artifactId>
        <version>1.6</version>
      </dependency>
      <dependency>
        <!--
        URN.
        @see http://urn.jcabi.com/
        -->
        <groupId>com.jcabi</groupId>
        <artifactId>jcabi-urn</artifactId>
        <version>0.9</version>
      </dependency>
      <dependency>
        <!--
        Velocity wrapper.
        @see http://velocity.jcabi.com/
        -->
        <groupId>com.jcabi</groupId>
        <artifactId>jcabi-velocity</artifactId>
        <version>0.9</version>
      </dependency>
      <dependency>
        <!--
        W3C adapters.
        @see http://w3c.jcabi.com/
        -->
        <groupId>com.jcabi</groupId>
        <artifactId>jcabi-w3c</artifactId>
        <version>1.3</version>
      </dependency>
      <dependency>
        <!--
        XML parsing and printing.
        @see http://xml.jcabi.com/
        -->
        <groupId>com.jcabi</groupId>
        <artifactId>jcabi-xml</artifactId>
        <version>0.20.1</version>
      </dependency>
      <dependency>
        <!-- JSON API -->
        <groupId>javax.json</groupId>
        <artifactId>javax.json-api</artifactId>
        <version>1.1</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <!-- JSON reference implementation -->
        <groupId>org.glassfish</groupId>
        <artifactId>javax.json</artifactId>
        <version>1.1</version>
        <scope>runtime</scope>
      </dependency>
      <dependency>
        <!-- JSR-311 JAX-RS API -->
        <groupId>javax.ws.rs</groupId>
        <artifactId>jsr311-api</artifactId>
        <version>1.1.1</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <!-- JAXB API -->
        <groupId>javax.xml.bind</groupId>
        <artifactId>jaxb-api</artifactId>
        <version>2.3.0</version>
        <exclusions>
          <exclusion>
            <groupId>javax.xml.bind</groupId>
            <artifactId>jsr173_api</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <!--
        Google Guava
        @see https://code.google.com/p/guava-libraries/
        -->
        <groupId>com.google.guava</groupId>
        <artifactId>guava</artifactId>
        <version>20.0</version>
      </dependency>
      <dependency>
        <!--
        Commons Lang3
        @see http://commons.apache.org/lang/
        -->
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-lang3</artifactId>
        <version>3.6</version>
      </dependency>
      <dependency>
        <!--
        Commons Text
        @see http://commons.apache.org/text/
        -->
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-text</artifactId>
        <version>1.1</version>
      </dependency>
      <dependency>
        <!--
        Commons Collections
        @see https://commons.apache.org/proper/commons-collections/
        -->
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-collections4</artifactId>
        <version>4.1</version>
      </dependency>
      <dependency>
        <!--
        Commons Math3
        @see http://commons.apache.org/proper/commons-math/
        -->
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-math3</artifactId>
        <version>3.6.1</version>
      </dependency>
      <dependency>
        <!--
        Base64 and other codecs
        @see http://commons.apache.org/codec/
        -->
        <groupId>commons-codec</groupId>
        <artifactId>commons-codec</artifactId>
        <version>1.10</version>
      </dependency>
      <dependency>
        <!--
        Net utils.
        @see http://commons.apache.org/net/
        -->
        <groupId>commons-net</groupId>
        <artifactId>commons-net</artifactId>
        <version>3.6</version>
      </dependency>
      <dependency>
        <!--
        For file/stream manipulations
        @see http://commons.apache.org/io/
        -->
        <groupId>commons-io</groupId>
        <artifactId>commons-io</artifactId>
        <version>2.5</version>
      </dependency>
      <dependency>
        <!--
        Runtime component of AspectJ.
        -->
        <groupId>org.aspectj</groupId>
        <artifactId>aspectjrt</artifactId>
        <version>1.8.11</version>
      </dependency>
      <dependency>
        <!--
        JSR-303 Vaidation API.
        -->
        <groupId>javax.validation</groupId>
        <artifactId>validation-api</artifactId>
        <version>2.0.0.Final</version>
      </dependency>
      <dependency>
        <!--
        JSR-303 implementation by Hibernate.
        -->
        <groupId>org.hibernate.validator</groupId>
        <artifactId>hibernate-validator</artifactId>
        <version>6.0.2.Final</version>
      </dependency>
      <dependency>
        <!-- Required for Hibernate validator -->
        <groupId>javax.el</groupId>
        <artifactId>javax.el-api</artifactId>
        <version>3.0.1-b04</version>
      </dependency>
      <dependency>
        <!-- Clojure -->
        <groupId>org.clojure</groupId>
        <artifactId>clojure</artifactId>
        <version>1.9.0-beta1</version>
      </dependency>
      <dependency>
        <!-- Clojure -->
        <groupId>org.clojure</groupId>
        <artifactId>clojure-contrib</artifactId>
        <version>1.2.0</version>
      </dependency>
      <dependency>
        <!-- Clojure -->
        <groupId>org.clojure</groupId>
        <artifactId>tools.logging</artifactId>
        <version>0.4.0</version>
      </dependency>
      <dependency>
        <!-- Servlet API -->
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>4.0.0</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <!--
        Compile-time annotations.
        @see http://projectlombok.org/features/index.html
        -->
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.16.18</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <!-- XML APIs. -->
        <groupId>xml-apis</groupId>
        <artifactId>xml-apis</artifactId>
        <!-- 1.4.01 is the latest version, don't upgrade it unless
        you explicitly check it in Maven Central. Version 2.0.2 is published
        there, but it's outdated (June 2007), while 1.4.01 is the latest.
        -->
        <version>1.4.01</version>
        <!-- don't change this line, 1.4.01 is the right/latest version -->
      </dependency>
      <dependency>
        <!--
        We are using JUnit framework for unit test organization
        and management. This framework is the most stable and mature
        in the market. Other options considered: TestNG.
        @link http://www.junit.org/
        -->
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
        <exclusions>
          <exclusion>
            <groupId>org.hamcrest</groupId>
            <artifactId>hamcrest-core</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <!--
        Assertions and matchers for unit tests.
        @link http://code.google.com/p/hamcrest/wiki/Tutorial
        -->
        <groupId>org.hamcrest</groupId>
        <artifactId>hamcrest-core</artifactId>
        <version>1.3</version>
      </dependency>
      <dependency>
        <!--
        Assertions and matchers for unit tests.
        @link http://code.google.com/p/hamcrest/wiki/Tutorial
        -->
        <groupId>org.hamcrest</groupId>
        <artifactId>hamcrest-library</artifactId>
        <version>1.3</version>
      </dependency>
      <dependency>
        <!--
        Mockito is used as a mocking library during testing.
        Other options: jMock.
        @link http://www.mockito.org/
        -->
        <groupId>org.mockito</groupId>
        <artifactId>mockito-core</artifactId>
        <version>2.10.0</version>
        <exclusions>
          <exclusion>
            <groupId>org.hamcrest</groupId>
            <artifactId>hamcrest-core</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <!-- Forward all SLF4J calls to LOG4J. -->
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
        <version>1.8.0-alpha2</version>
      </dependency>
      <dependency>
        <!-- Use LOG4J logging facility for all loggings. -->
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.17</version>
      </dependency>
      <dependency>
        <!--
        ANTLR3 Parser/Lexer
        @link http://www.antlr.org/
        -->
        <groupId>org.antlr</groupId>
        <artifactId>antlr-runtime</artifactId>
        <version>3.5.2</version>
      </dependency>
      <dependency>
        <groupId>org.antlr</groupId>
        <artifactId>antlr4-runtime</artifactId>
        <version>4.7</version>
      </dependency>
      <dependency>
        <groupId>org.codehaus.groovy</groupId>
        <artifactId>groovy-all</artifactId>
        <version>2.6.0-alpha-1</version>
      </dependency>
    </dependencies>
  </dependencyManagement>
  <build>
    <resources>
      <!--
      Filter resources in "process-resources" phase
      @link http://maven.apache.org/plugins/maven-resources-plugin/examples/filter.html
      -->
      <resource>
        <directory>${basedir}/src/main/resources</directory>
        <filtering>true</filtering>
      </resource>
    </resources>
    <testResources>
      <!--
      Filter resources in "process-resources" phase
      @link http://maven.apache.org/plugins/maven-resources-plugin/examples/filter.html
      -->
      <testResource>
        <directory>${basedir}/src/test/resources</directory>
        <filtering>true</filtering>
      </testResource>
    </testResources>
    <extensions>
      <extension>
        <!--
        This extension enables deployment of artifacts to
        Amazon S3 repository.
        -->
        <groupId>org.kuali.maven.wagons</groupId>
        <artifactId>maven-s3-wagon</artifactId>
        <version>1.2.1</version>
      </extension>
    </extensions>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-enforcer-plugin</artifactId>
        <version>1.4.1</version>
        <executions>
          <execution>
            <id>enforce-maven</id>
            <goals>
              <goal>enforce</goal>
            </goals>
            <configuration>
              <rules>
                <requireMavenVersion>
                  <version>[3.2.5,)</version>
                </requireMavenVersion>
              </rules>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <!--
        This plugin will collect current build number
        from Git and save it into Maven property
        -->
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>buildnumber-maven-plugin</artifactId>
        <version>1.4</version>
        <executions>
          <execution>
            <id>jcabi-build-number</id>
            <phase>initialize</phase>
            <goals>
              <goal>create</goal>
              <goal>create-timestamp</goal>
            </goals>
            <configuration>
              <buildNumberPropertyName>buildNumber</buildNumberPropertyName>
              <timestampPropertyName>timestamp</timestampPropertyName>
              <timestampFormat>{0,date,yyyy-MM-dd'T'HH:mm:ss}</timestampFormat>
              <doCheck>false</doCheck>
              <doUpdate>false</doUpdate>
              <getRevisionOnlyOnce>true</getRevisionOnlyOnce>
              <shortRevisionLength>7</shortRevisionLength>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>com.jcabi</groupId>
          <artifactId>jcabi-maven-plugin</artifactId>
          <version>0.14.1</version>
        </plugin>
        <plugin>
          <groupId>com.jcabi</groupId>
          <artifactId>jcabi-mysql-maven-plugin</artifactId>
          <version>0.9</version>
        </plugin>
        <plugin>
          <groupId>com.jcabi</groupId>
          <artifactId>jcabi-dynamodb-maven-plugin</artifactId>
          <version>0.8</version>
        </plugin>
        <plugin>
          <groupId>com.jcabi</groupId>
          <artifactId>jcabi-ssl-maven-plugin</artifactId>
          <version>0.11</version>
        </plugin>
        <plugin>
          <groupId>com.jcabi</groupId>
          <artifactId>jcabi-heroku-maven-plugin</artifactId>
          <version>0.9</version>
        </plugin>
        <plugin>
          <groupId>com.jcabi</groupId>
          <artifactId>jcabi-beanstalk-maven-plugin</artifactId>
          <version>0.11</version>
        </plugin>
        <plugin>
          <artifactId>maven-antrun-plugin</artifactId>
          <version>1.8</version>
          <dependencies>
            <dependency>
              <groupId>ant-contrib</groupId>
              <artifactId>ant-contrib</artifactId>
              <version>1.0b3</version>
              <exclusions>
                <exclusion>
                  <groupId>ant</groupId>
                  <artifactId>ant</artifactId>
                </exclusion>
              </exclusions>
            </dependency>
          </dependencies>
        </plugin>
        <plugin>
          <artifactId>maven-assembly-plugin</artifactId>
          <version>3.0.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-changes-plugin</artifactId>
          <version>2.12.1</version>
        </plugin>
        <plugin>
          <artifactId>maven-clean-plugin</artifactId>
          <version>3.0.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.7.0</version>
          <configuration>
            <source>${maven.compiler.source}</source>
            <target>${maven.compiler.target}</target>
            <optimize>true</optimize>
            <showWarnings>true</showWarnings>
            <showDeprecation>true</showDeprecation>
            <compilerArgs>
              <arg>-Xlint</arg>
              <arg>-Werror</arg>
              <arg>-Xlint:-path</arg>
              <!-- @see https://stackoverflow.com/questions/44675503/why-safevarargs-doesnt-suppress-the-warning -->
              <arg>-Xlint:-varargs</arg>
              <!-- @see https://blogs.oracle.com/darcy/entry/bootclasspath_older_source -->
              <arg>-Xlint:-options</arg>
              <!-- @see http://netbeans.org/bugzilla/show_bug.cgi?format=multiple&id=208666 -->
              <!-- this is to avoid a problem with ANTLR and JDK7 -->
              <arg>-Xlint:-classfile</arg>
              <!-- ignore APT warnings -->
              <arg>-Xlint:-processing</arg>
            </compilerArgs>
            <testExcludes>
              <exclude>**/package-info.java</exclude>
            </testExcludes>
          </configuration>
        </plugin>
        <plugin>
          <artifactId>maven-dependency-plugin</artifactId>
          <version>2.10</version>
        </plugin>
        <plugin>
          <artifactId>maven-deploy-plugin</artifactId>
          <version>2.8.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-failsafe-plugin</artifactId>
          <version>2.19.1</version>
          <configuration>
            <encoding>${project.build.sourceEncoding}</encoding>
            <failIfNoSpecifiedTests>false</failIfNoSpecifiedTests>
            <forkCount>0</forkCount>
            <parallel>all</parallel>
            <parallelTestsTimeoutForcedInSeconds>0</parallelTestsTimeoutForcedInSeconds>
            <parallelTestsTimeoutInSeconds>0</parallelTestsTimeoutInSeconds>
            <perCoreThreadCount>true</perCoreThreadCount>
            <runOrder>random</runOrder>
            <threadCount>8</threadCount>
            <trimStackTrace>false</trimStackTrace>
          </configuration>
        </plugin>
        <plugin>
          <artifactId>maven-help-plugin</artifactId>
          <version>2.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-install-plugin</artifactId>
          <version>2.5.2</version>
          <configuration>
            <createChecksum>true</createChecksum>
          </configuration>
        </plugin>
        <plugin>
          <artifactId>maven-invoker-plugin</artifactId>
          <version>2.0.0</version>
          <configuration>
            <mergeUserSettings>true</mergeUserSettings>
            <cloneProjectsTo>${project.build.directory}/it</cloneProjectsTo>
            <debug>false</debug>
            <localRepositoryPath>${project.build.directory}/local-repo</localRepositoryPath>
            <noLog>false</noLog>
            <postBuildHookScript>verify</postBuildHookScript>
            <preBuildHookScript>setup</preBuildHookScript>
            <projectsDirectory>src/it</projectsDirectory>
            <settingsFile>${basedir}/src/it/settings.xml</settingsFile>
            <showErrors>true</showErrors>
            <showVersion>false</showVersion>
            <streamLogs>true</streamLogs>
          </configuration>
        </plugin>
        <plugin>
          <artifactId>maven-jar-plugin</artifactId>
          <version>3.0.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-javadoc-plugin</artifactId>
          <version>2.10.4</version>
        </plugin>
        <plugin>
          <artifactId>maven-plugin-plugin</artifactId>
          <version>3.5</version>
        </plugin>
        <plugin>
          <artifactId>maven-release-plugin</artifactId>
          <version>2.5.3</version>
        </plugin>
        <plugin>
          <artifactId>maven-resources-plugin</artifactId>
          <version>3.0.1</version>
        </plugin>
        <plugin>
          <artifactId>maven-site-plugin</artifactId>
          <version>3.4</version>
          <dependencies>
            <dependency>
              <groupId>org.apache.maven.doxia</groupId>
              <artifactId>doxia-module-markdown</artifactId>
              <version>1.6</version>
            </dependency>
          </dependencies>
        </plugin>
        <plugin>
          <artifactId>maven-source-plugin</artifactId>
          <version>3.0.1</version>
        </plugin>
        <plugin>
          <!--
          Starts unit tests, protocols their results and creates
          a summary report. It is required to send testing protocol
          to the STDOUT as well, not only to the file.
          -->
          <artifactId>maven-surefire-plugin</artifactId>
          <version>2.19.1</version>
          <configuration>
            <useFile>false</useFile>
            <runOrder>random</runOrder>
            <trimStackTrace>false</trimStackTrace>
            <failIfNoTests>false</failIfNoTests>
            <failIfNoSpecifiedTests>true</failIfNoSpecifiedTests>
            <parallel>all</parallel>
            <parallelTestsTimeoutInSeconds>0</parallelTestsTimeoutInSeconds>
            <parallelTestsTimeoutForcedInSeconds>0</parallelTestsTimeoutForcedInSeconds>
            <perCoreThreadCount>true</perCoreThreadCount>
            <threadCount>4</threadCount>
          </configuration>
        </plugin>
        <plugin>
          <artifactId>maven-war-plugin</artifactId>
          <version>3.0.0</version>
        </plugin>
        <plugin>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>versions-maven-plugin</artifactId>
          <version>2.1</version>
          <!-- keep it at 2.1, see #42 -->
          <configuration>
            <generateBackupPoms>false</generateBackupPoms>
          </configuration>
        </plugin>
        <plugin>
          <groupId>com.github.github</groupId>
          <artifactId>site-maven-plugin</artifactId>
          <version>0.12</version>
        </plugin>
        <plugin>
          <groupId>com.qulice</groupId>
          <artifactId>qulice-maven-plugin</artifactId>
          <version>0.17.1</version>
          <configuration>
            <license>file:${basedir}/LICENSE.txt</license>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.jacoco</groupId>
          <artifactId>jacoco-maven-plugin</artifactId>
          <version>0.7.7.201606060606</version>
        </plugin>
        <plugin>
          <groupId>org.eluder.coveralls</groupId>
          <artifactId>coveralls-maven-plugin</artifactId>
          <version>4.2.0</version>
          <configuration>
            <timestampFormat>yyyy-MM-dd'T'HH:mm:ss</timestampFormat>
          </configuration>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>
  <reporting>
    <!--
    Rudimentary section, for Maven 2.0 plugins mostly.
    -->
    <excludeDefaults/>
  </reporting>
</project>
