Permalink
1745 lines (1744 sloc) 74.4 KB
<?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.
*
* @link http://www.sonatype.com/books/nexus-book/reference/staging-sect-managing-plugin.html
-->
<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>1.0-SNAPSHOT</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>yegor@teamed.io</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>
<prerequisites>
<maven>3.0.4</maven>
</prerequisites>
<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>
<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>
</configuration>
</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>
<reportPlugins>
<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>
</reportPlugins>
</configuration>
<executions>
<execution>
<id>jcabi-attach-descriptor</id>
<goals>
<goal>attach-descriptor</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</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</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.5</version>
</dependency>
<dependency>
<!--
AWS DynamoDB object layer.
@see http://dynamo.jcabi.com/
-->
<groupId>com.jcabi</groupId>
<artifactId>jcabi-dynamo</artifactId>
<version>0.21.3</version>
</dependency>
<dependency>
<!--
Email sending SDK.
@see http://email.jcabi.com/
-->
<groupId>com.jcabi</groupId>
<artifactId>jcabi-email</artifactId>
<version>1.8</version>
</dependency>
<dependency>
<!--
Github API.
@see http://github.jcabi.com
-->
<groupId>com.jcabi</groupId>
<artifactId>jcabi-github</artifactId>
<version>0.28</version>
</dependency>
<dependency>
<!--
HTTP client.
@see http://http.jcabi.com/
-->
<groupId>com.jcabi</groupId>
<artifactId>jcabi-http</artifactId>
<version>1.16</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.3</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.11.5</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.5.2</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.2</version>
</dependency>
<dependency>
<!--
XML parsing and printing.
@see http://xml.jcabi.com/
-->
<groupId>com.jcabi</groupId>
<artifactId>jcabi-xml</artifactId>
<version>0.17.2</version>
</dependency>
<dependency>
<!-- JSON API -->
<groupId>javax.json</groupId>
<artifactId>javax.json-api</artifactId>
<version>1.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<!-- JSON reference implementation -->
<groupId>org.glassfish</groupId>
<artifactId>javax.json</artifactId>
<version>1.0.4</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.2.12</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.5</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.5</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>
<!--
This library simplifies collections-management operations.
@see http://commons.apache.org/collections/
-->
<groupId>commons-collections</groupId>
<artifactId>commons-collections</artifactId>
<version>3.2.2</version> <!-- don't change this line, 3.2.2 is the right/latest -->
</dependency>
<dependency>
<!--
Runtime component of AspectJ.
-->
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>1.8.9</version>
</dependency>
<dependency>
<!--
JSR-303 Vaidation API.
-->
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>1.1.0.Final</version>
</dependency>
<dependency>
<!--
JSR-303 implementation by Hibernate.
-->
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>5.3.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-alpha14</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.3.1</version>
</dependency>
<dependency>
<!-- Servlet API -->
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.0-b01</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.10</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.2.21</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.7.21</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.5.3</version>
</dependency>
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-all</artifactId>
<version>2.4.7</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.1</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.6.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://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>
<configuration>
<reportPlugins>
<!--
Section is intentionally empty. Full list of plugins
is configured in "CI" profile. We don't need all them
during development, that's why they are not here.
-->
</reportPlugins>
</configuration>
<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>