<?xml version="1.0" encoding="UTF-8"?>
<!--
    Licensed to the Apache Software Foundation (ASF) under one
    or more contributor license agreements.  See the NOTICE file
    distributed with this work for additional information
    regarding copyright ownership.  The ASF licenses this file
    to you under the Apache License, Version 2.0 (the
    "License"); you may not use this file except in compliance
    with the License.  You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing,
    software distributed under the License is distributed on an
    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
    KIND, either express or implied.  See the License for the
    specific language governing permissions and limitations
    under the License.
--><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>org.apache</groupId>
        <artifactId>apache</artifactId>
        <version>16</version>
    </parent>

    <!-- Project Information -->

    <groupId>org.apache.chemistry.opencmis</groupId>
    <artifactId>chemistry-opencmis</artifactId>
    <name>Apache Chemistry OpenCMIS</name>
    <version>0.14.0</version>
    <packaging>pom</packaging>

    <organization>
        <name>The Apache Software Foundation</name>
        <url>https://www.apache.org/</url>
    </organization>

    <url>https://chemistry.apache.org/java/</url>

    <ciManagement>
        <system>Apache Build Server</system>
        <url>https://builds.apache.org/view/A-D/view/Chemistry/</url>
    </ciManagement>
    <inceptionYear>2009</inceptionYear>
    <description>
        Apache Chemistry OpenCMIS is an open source implementation of the OASIS CMIS specification.
    </description>

    <licenses>
        <license>
            <name>Apache 2</name>
            <url>https://www.apache.org/licenses/LICENSE-2.0.txt</url>
            <distribution>repo</distribution>
        </license>
    </licenses>

    <scm>
        <connection>scm:svn:https://svn.apache.org/repos/asf/chemistry/opencmis/tags/chemistry-opencmis-0.14.0-RC1</connection>
        <developerConnection>scm:svn:https://svn.apache.org/repos/asf/chemistry/opencmis/tags/chemistry-opencmis-0.14.0-RC1</developerConnection>
        <url>http://svn.apache.org/viewvc/chemistry/opencmis/tags/chemistry-opencmis-0.14.0-RC1</url>
    </scm>

    <distributionManagement>
        <site>
            <id>${site.staging.id}</id>
            <url>${site.staging.url}</url>
        </site>
    </distributionManagement>

    <issueManagement>
        <system>Jira</system>
        <url>https://issues.apache.org/jira/browse/CMIS</url>
    </issueManagement>

    <mailingLists>
        <mailingList>
            <name>Chemistry Development List</name>
            <subscribe>dev-subscribe@chemistry.apache.org</subscribe>
            <unsubscribe>dev-unsubscribe@chemistry.apache.org</unsubscribe>
            <post>dev@chemistry.apache.org</post>
            <archive>
                https://mail-archives.apache.org/mod_mbox/chemistry-dev/
            </archive>
        </mailingList>
        <mailingList>
            <name>Chemistry Source Control List</name>
            <subscribe>commits-subscribe@chemistry.apache.org</subscribe>
            <unsubscribe>commits-unsubscribe@chemistry.apache.org</unsubscribe>
            <post>commits@chemistry.apache.org</post>
            <archive>
                https://mail-archives.apache.org/mod_mbox/chemistry-commits/
            </archive>
        </mailingList>
    </mailingLists>

    <developers>
        <developer>
            <name>Florian Müller</name>
            <id>fmui</id>
            <roles>
                <role>committer</role>
            </roles>
        </developer>
        <developer>
            <name>Jens Hübel</name>
            <id>jenshuebel</id>
            <roles>
                <role>committer</role>
            </roles>
        </developer>
        <developer>
            <name>David Ward</name>
            <id>dward</id>
            <roles>
                <role>committer</role>
            </roles>
        </developer>
        <developer>
            <name>Martin Hermes</name>
            <id>hermesm</id>
            <roles>
                <role>committer</role>
            </roles>
        </developer>
        <developer>
            <name>Paul Goetz</name>
            <id>paulgoetz</id>
            <roles>
                <role>committer</role>
            </roles>
        </developer>
        <developer>
            <name>David Caruana</name>
            <id>dcaruana</id>
            <roles>
                <role>committer</role>
            </roles>
        </developer>
        <developer>
            <name>Gabriele Columbro</name>
            <id>gabriele</id>
            <email>gabriele@apache.org</email>
            <roles>
                <role>release manager</role>
            </roles>
        </developer>
        <developer>
            <name>Florent Guillaume</name>
            <id>fguillaume</id>
            <roles>
                <role>committer</role>
            </roles>
        </developer>
        <developer>
            <name>Stefane Fermigier</name>
            <id>sfermigier</id>
            <roles>
                <role>committer</role>
            </roles>
        </developer>
        <developer>
            <name>Jean Marie Pascal</name>
            <id>jmpascal</id>
            <roles>
                <role>committer</role>
            </roles>
        </developer>
    </developers>


    <!-- Project Environment -->
    <modules>
        <module>chemistry-opencmis-commons/chemistry-opencmis-commons-api</module>
        <module>chemistry-opencmis-commons/chemistry-opencmis-commons-impl</module>
        <module>chemistry-opencmis-client/chemistry-opencmis-client-api</module>
        <module>chemistry-opencmis-client/chemistry-opencmis-client-impl</module>
        <module>chemistry-opencmis-client/chemistry-opencmis-client-bindings</module>
        <module>chemistry-opencmis-server/chemistry-opencmis-server-support</module>
        <module>chemistry-opencmis-server/chemistry-opencmis-server-bindings</module>
        <module>chemistry-opencmis-server/chemistry-opencmis-server-bindings-war</module>
        <module>chemistry-opencmis-server/chemistry-opencmis-server-inmemory</module>
        <module>chemistry-opencmis-server/chemistry-opencmis-server-fileshare</module>
        <!-- <module>chemistry-opencmis-server/chemistry-opencmis-server-jcr</module> -->
        <module>chemistry-opencmis-server/chemistry-opencmis-server-archetype</module>
        <module>chemistry-opencmis-server/chemistry-opencmis-server-extension-archetype</module>
        <module>chemistry-opencmis-server/chemistry-opencmis-server-async</module>
        <module>chemistry-opencmis-bridge/chemistry-opencmis-bridge</module>
        <module>chemistry-opencmis-test/chemistry-opencmis-test-fit</module>
        <module>chemistry-opencmis-test/chemistry-opencmis-test-tck</module>
        <module>chemistry-opencmis-test/chemistry-opencmis-test-tools</module>
        <module>chemistry-opencmis-test/chemistry-opencmis-test-util</module>
        <module>chemistry-opencmis-test/chemistry-opencmis-test-browser</module>
        <module>chemistry-opencmis-test/chemistry-opencmis-test-browser-app</module>
        <module>chemistry-opencmis-workbench/chemistry-opencmis-workbench</module>
        <module>chemistry-opencmis-osgi/chemistry-opencmis-osgi-client</module>
        <module>chemistry-opencmis-android/chemistry-opencmis-android-client</module>
        <module>chemistry-opencmis-dist</module>
    </modules>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compile.source>1.6</maven.compile.source>
        <maven.compile.target>1.6</maven.compile.target>
        <docs.start.url>https://chemistry.apache.org/java/opencmis.html</docs.start.url>
        <docs.download.directory>${project.build.directory}/downloaded-site</docs.download.directory>
        <!--
            | Here we configure Maven documentation site (incl. Javadocs) deployment
            |
            | By default site is deployed to:
            | https://svn.apache.org/repos/asf/chemistry/site/trunk/content/java/${site.label}/maven/
            | where site.label = project.version

            | For details/changes see https://chemistry.apache.org/java/documentation-lifecycle.html
            |
            | Note: Site label (or any other property like site.staging.url) can be overriden on the command line to deploy to distinct location during site development
            -->
        <site.label>${project.version}</site.label>
        <site.staging.id>apache-site-staging</site.staging.id>
        <!-- We're using wagon-svn to deploy directly to svn.apache.org to feed CMS with generated docs -->
        <site.staging.protocol>svn:https</site.staging.protocol>
        <site.staging.host>svn.apache.org</site.staging.host>
        <site.staging.folder>/repos/asf/chemistry/site/trunk/content/java/${site.label}/maven</site.staging.folder>
        <site.staging.url>${site.staging.protocol}://${site.staging.host}${site.staging.folder}</site.staging.url>
        <parentBasedir>${project.basedir}</parentBasedir>

        <woodstox.version>4.4.1</woodstox.version>
        <osgi.version>5.0.0</osgi.version>
        <felix.plugin.version>3.0.1</felix.plugin.version>
        <junit.version>4.11</junit.version>
        <surefire.version>2.18.1</surefire.version>
        <failsafe.version>2.18.1</failsafe.version>
        <jacoco.version>0.7.5.201505241946</jacoco.version>
        <slf4j.version>1.7.21</slf4j.version>
        <log4j.version>2.5</log4j.version>
        <apacheclient.version>4.2.6</apacheclient.version>
        <cxf.version>3.0.9</cxf.version>
    </properties>

    <build>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.antlr</groupId>
                    <artifactId>maven-gunit-plugin</artifactId>
                    <version>3.3</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>${surefire.version}</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-failsafe-plugin</artifactId>
                    <version>${failsafe.version}</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-assembly-plugin</artifactId>
                    <version>2.6</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-antrun-plugin</artifactId>
                    <version>1.8</version>
                </plugin>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>exec-maven-plugin</artifactId>
                    <version>1.2.1</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-war-plugin</artifactId>
                    <version>2.4</version>
                    <configuration>
                        <archive>
                            <manifestEntries>
                                <DisableIBMJAXWSEngine>true</DisableIBMJAXWSEngine>
                            </manifestEntries>
                        </archive>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-remote-resources-plugin</artifactId>
                    <version>1.4</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-archetype-plugin</artifactId>
                    <version>2.4</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-release-plugin</artifactId>
                    <version>2.5</version>
                </plugin>
                <plugin>
                    <artifactId>maven-source-plugin</artifactId>
                    <version>2.2.1</version>
                </plugin>
                <plugin>
                    <artifactId>maven-resources-plugin</artifactId>
                    <version>2.6</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-enforcer-plugin</artifactId>
                    <version>1.4.1</version>
                </plugin>
            </plugins>
        </pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>buildnumber-maven-plugin</artifactId>
                <version>1.2</version>
                <executions>
                    <execution>
                        <phase>validate</phase>
                        <goals>
                            <goal>create</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <doCheck>false</doCheck>
                    <doUpdate>false</doUpdate>
                    <getRevisionOnlyOnce>true</getRevisionOnlyOnce>
                    <revisionOnScmFailure>?</revisionOnScmFailure>
                    <timestampFormat>{0,date,yyyy-MM-dd'T'HH:mm:ssZ}</timestampFormat>
                </configuration>
            </plugin>
            <!-- Working, but not attached to the deployment.
            Blocked on http://jira.codehaus.org/browse/MINSTALL-82
            <plugin>
                <groupId>net.ju-n.maven.plugins</groupId>
                <artifactId>checksum-maven-plugin</artifactId>
                <version>1.2</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>artifacts</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <algorithms>
                        <algorithm>SHA-256</algorithm>
                    </algorithms>
                </configuration>
            </plugin>
             -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <configuration>
                    <archiveClasses>true</archiveClasses>
                    <attachClasses>true</attachClasses>
                    <archive>
                        <manifestEntries>
                            <X-Compile-Source-JDK>${maven.compile.source}</X-Compile-Source-JDK>
                            <X-Compile-Target-JDK>${maven.compile.target}</X-Compile-Target-JDK>
                            <X-Apache-SVN-Revision>${buildNumber}</X-Apache-SVN-Revision>
                            <Implementation-Title>${project.name}</Implementation-Title>
                            <Implementation-Version>${project.version}</Implementation-Version>
                            <Implementation-Vendor-Id>${project.groupId}</Implementation-Vendor-Id>
                            <Implementation-Vendor>${project.organization.name}</Implementation-Vendor>
                        </manifestEntries>
                    </archive>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-release-plugin</artifactId>
                <configuration>
                    <useReleaseProfile>false</useReleaseProfile>
                    <!-- TODO: Add autogenerated JIRA release notes -->
                    <preparationGoals>clean install</preparationGoals>
                    <goals>deploy site</goals>
                    <arguments>-Papache-release</arguments>
                    <!-- Add this profile to also deploy the site upon release -->
                    <!-- <arguments>-Papache-release,site-deploy</arguments> -->
                    <autoVersionSubmodules>true</autoVersionSubmodules>
                    <username>${apache.username}</username>
                    <password>${apache.password}</password>
                    <!-- To lock files during release -->
                    <useEditMode>true</useEditMode>
                </configuration>
            </plugin>
            <plugin>
                <inherited>true</inherited>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <target>${maven.compile.target}</target>
                    <source>${maven.compile.source}</source>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
            <plugin>
                <inherited>true</inherited>
                <artifactId>maven-source-plugin</artifactId>
                <executions>
                    <execution>
                        <id>attach-sources</id>
                        <goals>
                            <goal>jar-no-fork</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <includePom>true</includePom>
                </configuration>
            </plugin>
            <plugin>
                <artifactId>maven-resources-plugin</artifactId>
                <configuration>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-remote-resources-plugin</artifactId>
                <configuration>
                    <appendedResourcesDirectory>${parentBasedir}/src/main/appended-resources</appendedResourcesDirectory>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.sonatype.plugins</groupId>
                <artifactId>maven-version-plugin</artifactId>
                <version>1.0</version>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-checkstyle-plugin</artifactId>
                <version>2.10</version>
                <configuration>
                    <configLocation>src/main/resources/checkstyle.xml</configLocation>
                    <suppressionsLocation>src/main/resources/suppressions.xml</suppressionsLocation>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-site-plugin</artifactId>
                <version>3.4</version>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-gpg-plugin</artifactId>
                <version>1.6</version>
            </plugin>
            <plugin>
                <artifactId>maven-jar-plugin</artifactId>
                <configuration>
                    <archive>
                        <manifestEntries>
                            <X-Compile-Source-JDK>${maven.compile.source}</X-Compile-Source-JDK>
                            <X-Compile-Target-JDK>${maven.compile.target}</X-Compile-Target-JDK>
                            <X-Apache-SVN-Revision>${buildNumber}</X-Apache-SVN-Revision>
                            <Implementation-Title>${project.name}</Implementation-Title>
                            <Implementation-Version>${project.version}</Implementation-Version>
                            <Implementation-Vendor-Id>${project.groupId}</Implementation-Vendor-Id>
                            <Implementation-Vendor>${project.organization.name}</Implementation-Vendor>
                        </manifestEntries>
                    </archive>
                </configuration>
            </plugin>
            <plugin>
                <artifactId>maven-deploy-plugin</artifactId>
                <version>2.8.2</version>
                <dependencies>
                    <dependency>
                        <groupId>com.google.code.maven-svn-wagon</groupId>
                        <artifactId>maven-svn-wagon</artifactId>
                        <version>1.4</version>
                    </dependency>
                </dependencies>
                <configuration>
                    <deployAtEnd>false</deployAtEnd>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-enforcer-plugin</artifactId>
                <executions>
                    <execution>
                        <id>enforce-versions</id>
                        <goals>
                            <goal>enforce</goal>
                        </goals>
                        <configuration>
                            <rules>
                                <requireJavaVersion>
                                    <version>[1.8.0,)</version>
                                </requireJavaVersion>
                                <requireMavenVersion>
                                    <version>[3.0,)</version>
                                </requireMavenVersion>
                            </rules>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
        <extensions>
             <extension>
                 <groupId>com.google.code.maven-svn-wagon</groupId>
                 <artifactId>maven-svn-wagon</artifactId>
                 <version>1.4</version>
             </extension>
        </extensions>
    </build>

    <dependencies>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>${slf4j.version}</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>${junit.version}</version>
            <type>jar</type>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <reporting>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-report-plugin</artifactId>
                <version>2.14.1</version>
                <configuration>
                    <aggregate>true</aggregate>
                    <reportsDirectories>
                        <reportsDirectory>${project.build.directory}/surefire-reports/</reportsDirectory>
                        <reportsDirectory>${project.build.directory}/failsafe-reports/</reportsDirectory>
                    </reportsDirectories>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jxr-plugin</artifactId>
                <version>2.2</version>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-project-info-reports-plugin</artifactId>
                <version>2.7</version>
            </plugin>
            <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-javadoc-plugin</artifactId>
              <version>2.10.3</version>
              <inherited>false</inherited>
              <reportSets>
                <reportSet>
                  <id>aggregate</id>
                  <reports>
                    <report>aggregate</report>
                  </reports>
                </reportSet>
              </reportSets>
              <configuration>
                  <doctitle>Apache Chemistry OpenCMIS ${project.version}</doctitle>
                  <windowtitle>Apache Chemistry OpenCMIS ${project.version}</windowtitle>
                  <!-- TODO: Update this for new packages -->
                  <groups>
                      <group>
                          <title>OpenCMIS Client API</title>
                          <packages>org.apache.chemistry.opencmis.client:org.apache.chemistry.opencmis.client.api:org.apache.chemistry.opencmis.client.util</packages>
                      </group>
                      <group>
                          <title>OpenCMIS Commons API</title>
                          <packages>org.apache.chemistry.opencmis.commons:org.apache.chemistry.opencmis.commons.*</packages>
                      </group>
                      <group>
                          <title>OpenCMIS Bindings SPI</title>
                          <packages>org.apache.chemistry.opencmis.client.bindings</packages>
                      </group>
                      <group>
                          <title>OpenCMIS Server</title>
                          <packages>org.apache.chemistry.opencmis.commons.server:org.apache.chemistry.opencmis.commons.impl.server:org.apache.chemistry.opencmis.server.support:org.apache.chemistry.opencmis.server.support.wrapper:org.apache.chemistry.opencmis.server.support.query:org.apache.chemistry.opencmis.server.filter:org.apache.chemistry.opencmis.server.shared</packages>
                      </group>
                      <group>
                          <title>OpenCMIS Server (async)</title>
                          <packages>org.apache.chemistry.opencmis.server.async</packages>
                      </group>
                      <group>
                          <title>OpenCMIS Bridge</title>
                          <packages>org.apache.chemistry.opencmis.bridge*</packages>
                      </group>
                      <group>
                          <title>OpenCMIS TCK</title>
                          <packages>org.apache.chemistry.opencmis.tck*</packages>
                      </group>
                    </groups>
                    <!--<excludePackageNames>org.apache.chemistry.opencmis.commons.impl:org.apache.chemistry.opencmis.commons.impl.dataobjects:org.apache.chemistry.opencmis.client.runtime:org.apache.chemistry.opencmis.client.runtime.*:org.apache.chemistry.opencmis.commons.impl.jaxb:org.apache.chemistry.opencmis.client.bindings.impl:org.apache.chemistry.opencmis.client.bindings.cache:org.apache.chemistry.opencmis.client.bindings.spi:org.apache.chemistry.opencmis.server.impl:org.apache.chemistry.opencmis.fit:org.apache.chemistry.opencmis.util.repository:org.apache.chemistry.opencmis.fileshare:org.apache.chemistry.opencmis.fileshare:org.apache.chemistry.opencmis.inmemory:org.apache.chemistry.opencmis.fileshare:org.apache.chemistry.opencmis.jcr:org.apache.chemistry.opencmis.browser:org.apache.chemistry.opencmis.workbench:org.apache.chemistry.opencmis.commander:org.apache.chemistry.opencmis.client.osgi</excludePackageNames>-->
                    <sourceFileExcludes>
                      <exclude>**/CmisQl*</exclude>
                      <exclude>**/CmisQueryWalk*</exclude>
                      <exclude>**/TextSearch*</exclude>
                      <exclude>org/apache/chemistry/opencmis/commons/impl/*</exclude>
                      <exclude>org/apache/chemistry/opencmis/commons/impl/dataobjects/**</exclude>
                      <exclude>org/apache/chemistry/opencmis/commons/impl/json/**</exclude>
                      <exclude>org/apache/chemistry/opencmis/commons/impl/jaxb/**</exclude>
                      <exclude>org/apache/chemistry/opencmis/commons/impl/server/ObjectInfoImpl*</exclude>
                      <exclude>org/apache/chemistry/opencmis/commons/impl/server/RenditionInfoImpl*</exclude>
                      <exclude>org/apache/chemistry/opencmis/client/runtime/**</exclude>
                      <exclude>org/apache/chemistry/opencmis/client/bindings/impl/**</exclude>
                      <exclude>org/apache/chemistry/opencmis/client/bindings/cache/**</exclude>
                      <exclude>org/apache/chemistry/opencmis/client/bindings/spi/**</exclude>
                      <exclude>org/apache/chemistry/opencmis/server/impl/**</exclude>
                      <exclude>org/apache/chemistry/opencmis/server/shared/**</exclude>
                      <exclude>org/apache/chemistry/opencmis/server/support/filter/**</exclude>
                      <exclude>org/apache/chemistry/opencmis/server/async/impl/**</exclude>
                      <exclude>org/apache/chemistry/opencmis/fit/**</exclude>
                      <exclude>org/apache/chemistry/opencmis/util/**</exclude>
                      <exclude>org/apache/chemistry/opencmis/fileshare/**</exclude>
                      <exclude>org/apache/chemistry/opencmis/inmemory/**</exclude>
                      <exclude>org/apache/chemistry/opencmis/browser/**</exclude>
                      <exclude>org/apache/chemistry/opencmis/workbench/**</exclude>
                      <exclude>org/apache/chemistry/opencmis/commander/**</exclude>
                      <exclude>org/apache/chemistry/opencmis/client/osgi/**</exclude>
                      <exclude>org/apache/chemistry/opencmis/tools/**</exclude>
                    </sourceFileExcludes>
                    <tags>
                      <tag>
                        <name>cmis</name>
                        <placement>a</placement>
                        <head>CMIS:</head>
                      </tag>
                    </tags>
                </configuration>
            </plugin>
        </plugins>
    </reporting>

    <profiles>
        <profile>
            <id>coverage</id>
            <activation>
                <activeByDefault>false</activeByDefault>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.jacoco</groupId>
                        <artifactId>jacoco-maven-plugin</artifactId>
                        <version>${jacoco.version}</version>
                        <executions>
                            <execution>
                                <id>default-prepare-agent</id>
                                <goals>
                                    <goal>prepare-agent</goal>
                                </goals>
                            </execution>
                            <execution>
                                <id>default-report</id>
                                <goals>
                                    <goal>report</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>

        <!--
            Extending the default -Papache-release profile used *only*
            during releases
        -->
        <profile>
            <id>apache-release</id>
            <activation>
                <activeByDefault>false</activeByDefault>
            </activation>
            <build>
                <plugins>
                    <!--
                        We want to package up licenses
                        resources in the JARs produced
                    -->
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-remote-resources-plugin</artifactId>
                        <configuration>
                            <appendedResourcesDirectory>${parentBasedir}/src/main/appended-resources</appendedResourcesDirectory>
                        </configuration>
                    </plugin>
                    <plugin>
                        <artifactId>maven-war-plugin</artifactId>
                        <configuration>
                            <webResources>
                                <resource>
                                    <!-- this is relative to the pom.xml directory -->
                                    <directory>${project.build.directory}/maven-shared-archive-resources</directory>
                                    <includes>
                                        <include>META-INF/*</include>
                                    </includes>
                                </resource>
                            </webResources>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <profile>
            <id>site-deploy</id>
            <build>
                <plugins>
                    <plugin>
                        <artifactId>maven-site-plugin</artifactId>
                        <inherited>false</inherited>
                        <executions>
                            <execution>
                                <id>site-deploy-toplevel</id>
                                <goals>
                                    <goal>deploy</goal>
                                </goals>
                                <phase>site</phase>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
	<!-- Added profile to fix "doclint" (see http://stackoverflow.com/questions/15886209/maven-is-not-working-in-java-8-when-javadoc-tags-are-incomplete). 
             TODO: This is a temporary solution, until we solve https://issues.apache.org/jira/browse/CMIS-977 
        -->
        <profile>
            <id>disable-java8-doclint</id>
            <activation>
                <jdk>[1.8,)</jdk>
            </activation>
            <properties>
                <additionalparam>-Xdoclint:none</additionalparam>
            </properties>
        </profile>
    </profiles>
</project>
