<?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>18</version>
  </parent>
  <prerequisites>    
    <maven>3.2.0</maven>
  </prerequisites>

  <groupId>org.apache.taverna</groupId>
  <artifactId>apache-taverna-parent</artifactId>
  <version>3-incubating-SNAPSHOT</version>
  <packaging>pom</packaging>

  <name>Apache Taverna (incubating) Maven parent</name>
  <description>
    General POM-file parent for Apache Taverna projects
  </description>
  <url>http://taverna.incubator.apache.org/</url>
  <inceptionYear>2015</inceptionYear>
  <mailingLists>
    <mailingList>
      <name>Apache Taverna Developer List</name>
      <subscribe>dev-subscribe@taverna.incubator.apache.org</subscribe>
      <unsubscribe>dev-unsubscribe@taverna.incubator.apache.org</unsubscribe>
      <post>dev@taverna.incubator.apache.org</post>
      <archive>http://mail-archives.apache.org/mod_mbox/incubator-taverna-dev/</archive>
      <otherArchives>
        <otherArchive>http://www.mail-archive.com/dev@taverna.incubator.apache.org/</otherArchive>
        <otherArchive>http://markmail.org/search/?q=list%3Aorg.apache.taverna.dev</otherArchive>
      </otherArchives>
    </mailingList>
    <mailingList>
      <name>Apache Taverna Users List</name>
      <subscribe>users-subscribe@taverna.incubator.apache.org</subscribe>
      <unsubscribe>users-unsubscribe@taverna.incubator.apache.org</unsubscribe>
      <post>users@taverna.incubator.apache.org</post>
      <archive>http://mail-archives.apache.org/mod_mbox/incubator-taverna-users/</archive>
      <otherArchives>
        <otherArchive>http://www.mail-archive.com/users@taverna.incubator.apache.org/</otherArchive>
        <otherArchive>http://markmail.org/search/?q=list%3Aorg.apache.taverna.users</otherArchive>
      </otherArchives>
    </mailingList>
    <mailingList>
      <name>Apache Taverna Commits</name>
      <subscribe>commits-subscribe@taverna.incubator.apache.org</subscribe>
      <unsubscribe>commits-unsubscribe@taverna.incubator.apache.org</unsubscribe>
      <post>commits@taverna.incubator.apache.org</post>
      <archive>http://mail-archives.apache.org/mod_mbox/incubator-taverna-commits/</archive>
    </mailingList>
  </mailingLists>
  <developers>
  	<!--  For an updated list, see
  	http://taverna.incubator.apache.org/about/
        http://home.apache.org/phonebook.html?other=taverna

  	This lists contain the official committers/PPMC members
  	and contributors since Taverna became an Apache project.

  	 -->
  	<developer>
  		<id>alaninmcr</id>
  		<email>alaninmcr@apache.org</email>
  		<name>Alan Robert Williams</name>
  		<url>http://orcid.org/0000-0003-3156-2105</url>
  		<roles>
  			<role>committer</role>
			<role>PPMC member</role>
  		</roles>
  	</developer>
  	<developer>
  		<id>andy</id>
  		<email>andy@apache.org</email>
  		<name>Andy Seaborne</name>
  		<!--  TODO: <url>http://orcid.org/...</url> -->
  		<roles>
  			<role>mentor</role>
  			<role>champion</role>
  		</roles>
  	</developer>
	<developer>
  		<id>anenadic</id>
  		<email>anenadic@apache.org</email>
  		<name>Aleksandra Nenadic</name>
  		<url>http://orcid.org/0000-0002-2269-3894</url>
  		<roles>
  			<role>committer</role>
			<role>PPMC member</role>
  		</roles>
  	</developer>
  	<developer>
  		<id>brenninc</id>
  		<email>brenninc@apache.org</email>
  		<name>Christian Y. Brenninkmeijer</name>
  		<url>http://orcid.org/0000-0002-2937-7819</url>
  		<roles>
  			<role>committer</role>
			<role>PPMC member</role>
  		</roles>
  	</developer>
  	<developer>
  		<id>dkf</id>
  		<email>dkf@apache.org</email>
  		<name>Donal Fellows</name>
  		<url>http://orcid.org/0000-0002-9091-5938</url>
  		<roles>
  			<role>committer</role>
			<role>PPMC member</role>
  		</roles>
  	</developer>
  	<developer>
  		<id>gnaylor</id>
  		<email>gnaylor@apache.org</email>
  		<!--  TODO: <url>http://orcid.org/...</url> -->
  		<name>Gale Naylor</name>
  		
  		<roles>
  			<role>committer</role>
			<role>PPMC member</role>
  		</roles>
  	</developer>
  	<developer>
  		<id>hainesr</id>
  		<email>hainesr@apache.org</email>
  		<name>Robert Haines</name>
  		<url>http://orcid.org/0000-0002-9538-7919</url>
  		<roles>
  			<role>committer</role>
			<role>PPMC member</role>
  		</roles>
  	</developer>
  	<developer>
  		<id>ianwdunlop</id>
  		<email>ianwdunlop@apache.org</email>
  		<name>Ian William Dunlop</name>
  		<url>http://orcid.org/0000-0001-7066-3350</url>
  		<roles>
  			<role>committer</role>
			<role>PPMC member</role>
  		</roles>
  	</developer>
  	<developer>
  		<id>jgarrido</id>
  		<email>jgarrido@apache.org</email>
  		<name>Julián Garrido</name>
  		<url>http://orcid.org/0000-0002-6696-4772</url>
  		<roles>
  			<role>committer</role>
			<role>PPMC member</role>
  		</roles>
  	</developer>
	<developer>
                <id>maanadev</id>
		<name>Thilina Manamgoda</name>
		<email>maanadev@apache.org</email>
		<!--  TODO: <url>http://orcid.org/...</url> -->
                <url>https://github.com/ThilinaManamgoda</url>
		<roles>
  			<role>committer</role>
		</roles>
	</developer>
	<developer>
  		<id>mattmann</id>
  		<email>mattmann@apache.org</email>
  		<name>Chris Mattmann</name>
  		<!-- FIXME: <url>http://orcid.org/0000-0001-7086-3889</url> unverified -->
  		<roles>
  			<role>emeritus mentor</role>
  		</roles>
  	</developer>
	<developer>
  		<id>mpierce</id>
  		<email>mpierce@apache.org</email>
  		<name>Marlon Pierce</name>
  		<url>http://orcid.org/0000-0002-9582-5712</url>
  		<roles>
  			<role>mentor</role>
  		</roles>
  	</developer>
	<developer>
  		<id>redmitry</id>
  		<email>redmitry@apache.org</email>
  		<name>Dmitri Repchevsky</name>
  		<url>http://orcid.org/0000-0001-6415-0532</url>
  		<roles>
  			<role>committer</role>
			<role>PPMC member</role>
  		</roles>
  	</developer>
	<developer>
  		<id>shoaibsufi</id>
  		<email>shoaibsufi@apache.org</email>
  		<name>Shoaib Sufi</name>
  		<url>http://orcid.org/0000-0001-6390-2616</url>
  		<roles>
  			<role>committer</role>
			<role>PPMC member</role>
  		</roles>
  	</developer>
	<developer>
  		<id>smarru</id>
  		<email>smarru@apache.org</email>
  		<name>Suresh Marru</name>
  		<url>http://orcid.org/0000-0002-6374-095X</url>
  		<roles>
  			<role>mentor</role>
  		</roles>
  	</developer>
	<developer>
  		<id>stain</id>
  		<email>stain@apache.org</email>
  		<name>Stian Soiland-Reyes</name>
  		<url>http://orcid.org/0000-0001-9842-9718</url>
  		<roles>
  			<role>committer</role>
			<role>PPMC member</role>
  		</roles>
  	</developer>
	<developer>
  		<id>stuzart</id>
  		<email>stuzart@apache.org</email>
  		<name>Stuart Owen</name>
  		<url>http://orcid.org/0000-0003-2130-0865</url>
  		<roles>
  			<role>committer</role>
			<role>PPMC member</role>
  		</roles>
  	</developer>
	<developer>
  		<id>suresh</id>
  		<email>suresh@apache.org</email>
  		<name>Suresh Srinivas</name>
  		<!--  TODO: <url>http://orcid.org/...</url> -->
  		<roles>
  			<role>mentor</role>
  		</roles>
  	</developer>

	<!-- contributors -->

	<developer>
                <id>menaka121</id>
		<name>Menaka Madushanka</name>
		<email>menaka12350@gmail.com</email>
		<!--  TODO: <url>http://orcid.org/...</url> -->
                <url>https://github.com/menaka121</url>
		<roles>
			<role>contributor</role>
		</roles>
	</developer>
	<developer>
                <id>larrytech7</id>
		<name>Larry Akah</name>
		<email>larryakah@gmail.com</email>
		<!--  TODO: <url>http://orcid.org/...</url> -->
                <url>https://github.com/larrytech7</url>
		<roles>
			<role>contributor</role>
		</roles>
	</developer>
	<developer>
                <id>Samhane</id>
		<name>Denis Karyakin</name>
		<email>samhane.me@gmail.com</email>
		<!--  TODO: <url>http://orcid.org/...</url> -->
                <url>https://github.com/Samhane</url>
		<roles>
			<role>contributor</role>
		</roles>
	</developer>
	<developer>
		<id>binfalse</id>
		<name>Martin Scharm</name>
		<email>github@binfalse.de</email>
		<url>http://orcid.org/0000-0003-4519-7030</url>
		<roles>
			<role>contributor</role>
		</roles>
	</developer>
	<developer>
		<id>gmlewis</id>
		<name>Glenn Lewis</name>
		<!--  TODO: <url>http://orcid.org/...</url> -->
		<url>https://github.com/gmlewis</url>
		<roles>
			<role>security fixes</role>
		</roles>
	</developer>
	<developer>
                <id>NadeeshDilanga</id>
		<name>Nadeesh Dilanga</name>
		<email>nadeesh092@gmail.com</email>
		<!--  TODO: <url>http://orcid.org/...</url> -->
                <url>https://github.com/NadeeshDilanga</url>
		<roles>
			<role>contributor</role>
		</roles>
	</developer>
	<developer>
                <id>sagar15795</id>
		<name>Sagar</name>
		<email>kumarsagar15795@gmail.com</email>
		<!--  TODO: <url>http://orcid.org/...</url> -->
                <url>https://github.com/sagar15795</url>
		<roles>
			<role>contributor</role>
		</roles>
	</developer>
	<developer>
		<id>therajanmaurya</id>
		<name>Rajan Maurya</name>
		<email>rajanmaurya154@gmail.com</email>
		<!--  TODO: <url>http://orcid.org/...</url> -->
                <url>https://github.com/therajanmaurya</url>
		<roles>
			<role>contributor</role>
		</roles>
	</developer>
	<developer>
		<id>edikaradumi</id>
		<name>Edi Karadumi</name>
		<email>edikaradumi@gmail.com</email>
		<!--  TODO: <url>http://orcid.org/...</url> -->
                <url>https://github.com/edikaradumi</url>
		<roles>
			<role>contributor</role>
		</roles>
	</developer>
	<developer>
		<id>PCStefan</id>
		<name>Claudiu Stefan Padurariu</name>
		<email>padurariu.claudiu.stefan@gmail.com </email>
		<!--  TODO: <url>http://orcid.org/...</url> -->
                <url>https://github.com/PCStefan</url>
		<roles>
			<role>contributor</role>
		</roles>
	</developer>
  </developers>


  <issueManagement>
    <system>Jira</system>
    <!-- Note: Do not include Component for Maven Parent here, as
      this issueManagement is inherited by every Taverna module.
    -->
    <url>https://issues.apache.org/jira/browse/TAVERNA</url>
  </issueManagement>

  <scm>
    <!-- While this section will also be inherited, it should be
    overridden within each Taverna module with specific repositories.
    -->
      <connection>scm:git:https://git-wip-us.apache.org/repos/asf/incubator-taverna-maven-parent.git</connection>
      <developerConnection>scm:git:https://git-wip-us.apache.org/repos/asf/incubator-taverna-maven-parent.git</developerConnection>
      <url>https://github.com/apache/incubator-taverna-maven-parent/</url>
      <tag>HEAD</tag>
</scm>



  <properties>
    <!-- override java version from Apache parent -->
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>

    <!--
    Versions of dependencies that are used across
    incubator-taverna-* repositories (e.g. commons-io).

    Versions of dependencies that are only used in one repository,
    e.g. beanshell, should rather be listed in the top-level pom.xml
    of their repository (e.g. incubator-taverna-common-activities).

   Note that in some cases these versions refer to a
   springsource repackaging for OSGi, e.g.
   com.springsource.org.jdom.
   Before changing a version it can be a good idea to
   grep for whatever.version in all the source-code
   repositories to see how it is used.

Do NOT put taverna.* versions in here, as we do not want
to update taverna-parent whenever a taverna-* has been
upgraded - this leads to recursive spaghetti.
         -->
<activation.version>1.1.1</activation.version>
<antlr.version>2.7.7</antlr.version>
<apache.commons.csv.version>1.4</apache.commons.csv.version>
<apache.httpclient.version>4.5.2</apache.httpclient.version><!-- must be compatibe with jsonld-java -->
<apache.httpcore.version>4.4.4</apache.httpcore.version> <!-- must match what httpclient depends on -->
<aspectj.version>1.6.9</aspectj.version>
<axis.jaxrpc.version>1.4</axis.jaxrpc.version>
<axis.sggj.version>1.4</axis.sggj.version>
<axis.version>1.4.0</axis.version>
<!--<axis.wsdl4j.version>1.5.1</axis.wsdl4j.version>-->
<batik.version>1.7.0</batik.version>
<bcprov.version>1.54</bcprov.version><!-- bcprov-jdk15on --><!-- bcprov-jdk15on --><!-- bcprov-jdk15on --><!-- bcprov-jdk15on -->
<cglib.version>2.1.3</cglib.version>
<commons.beanutils.version>1.9.2</commons.beanutils.version>
<commons.cli.version>1.2.0</commons.cli.version>
<commons.codec.version>1.10</commons.codec.version>
<commons.collections.version>3.2.1</commons.collections.version>
<commons.configuration.version>1.10</commons.configuration.version>
<commons.dbcp.version>1.4</commons.dbcp.version>
<commons.httpclient.version>3.1.0</commons.httpclient.version>
<commons.io.version>2.4</commons.io.version>
<commons.lang.version>2.5.0</commons.lang.version>
<commons.logging.version>1.1.1</commons.logging.version>
<commons.net.version>2.0.0</commons.net.version>
<dexx.collection.version>0.6</dexx.collection.version>
<dom4j.version>1.6.1</dom4j.version>
<geronimo.spec.jta.version>1.0-M1</geronimo.spec.jta.version>
<gson.version>1.4</gson.version>
<htmlparser.version>1.4</htmlparser.version>
<icu4j.version>3.4.4</icu4j.version>
<io.airlift.airline.version>0.7</io.airlift.airline.version>
<jackson.version>2.7.4</jackson.version> <!-- See also jsonldjava -->
<jai.imageio.core.version>1.3.1</jai.imageio.core.version> <!-- http://github.com/jai-imageio/ -->
<javahelp.version>2.0.02</javahelp.version>
<javax.el.version>1.0.0</javax.el.version>
<javax.servlet.jsp.version>2.1.0</javax.servlet.jsp.version>
<javax.servlet.version>2.5.0</javax.servlet.version>
<javax.transaction.version>1.1.0</javax.transaction.version>
<jaxb.version>2.2.11</jaxb.version>
<jaxen.version>1.1.1</jaxen.version>
<jaxp.ri.version>1.4</jaxp.ri.version>
<jaxws.api.version>2.1</jaxws.api.version>
<jdom.version>1.1.0</jdom.version> <!-- com.springsource.org.jdom -->
<jedit.syntax.version>2.2.5</jedit.syntax.version>
<jena.version>3.1.0</jena.version><!-- See also jsonld-java and httpcomponents -->
<jersey.client.version>1.19.1</jersey.client.version>
<jetty.version>6.1.24</jetty.version>
<jmimemagic.version>0.1.2</jmimemagic.version>
<jmoby.version>1.1.5-taverna</jmoby.version>
<json.lib.version>2.3</json.lib.version>
<jsonldjava.version>0.8.2</jsonldjava.version> <!-- upgrade from jena, sync with jackson and httpcomponents -->
<junit.version>4.11</junit.version>
<log4j.version>1.2.17</log4j.version>
<mail.version>1.4.1</mail.version>
<macify.version>1.6</macify.version>
<martj.version>0.6</martj.version>
<mimeutil.version>2.1.2-6</mimeutil.version>
<mockito.version>1.9.5</mockito.version>
<opm.version>1.1.8</opm.version>
<org.fife.ui.hexeditor.version>1.0.2011-07-04</org.fife.ui.hexeditor.version>
<org.icepdf.version>4.1.1-taverna</org.icepdf.version>
<org.xhtmlrenderer.core-renderer.version>R8</org.xhtmlrenderer.core-renderer.version>
<osgi.core.version>4.3.1</osgi.core.version>
<osgi.enterprise.version>4.2.0</osgi.enterprise.version>
<osgi.equinox.version>3.8.0.v20120529-1548</osgi.equinox.version>
<osgi.compendium.version>4.3.1</osgi.compendium.version>
<poi.ooxml.version>3.6</poi.ooxml.version>
<poi.version>3.6</poi.version>
<saxpath.version>1.0-FCS</saxpath.version>
<servletapi.version>2.5</servletapi.version>
<sesame.version>2.7.0</sesame.version>
<simple-jndi.version>0.11.1</simple-jndi.version>
<slf4j.version>1.7.20</slf4j.version>
<spring.dm.version>2.0.0.M1</spring.dm.version>
<spring.version>3.0.5.RELEASE</spring.version>
<stax.version>1.0</stax.version>
<tupelo.version>2.6</tupelo.version>
<xalan.version>2.7.1</xalan.version>
<servicemix.xerces.version>2.11.0_1</servicemix.xerces.version>
<xmlbeans.version>2.4.0</xmlbeans.version>
<xml.rpc.version>1.1.0</xml.rpc.version>
<xstream.version>1.4.1</xstream.version>
  </properties>



  <!-- Common (test) dependencies - keep this list short
      and up to date! -->
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>${junit.version}</version>
      <scope>test</scope>
    </dependency>
  </dependencies>

<!-- Minimal dependency management -   -->
<dependencyManagement>
	<dependencies>
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient-osgi</artifactId>
            <version>${apache.httpclient.version}</version>
            <exclusions>
              <!-- These are all embedded within httpclient-osgi
              and so should not be depended on again
              -->
              <exclusion>
                <groupId>org.apache.httpcomponents</groupId>
                <artifactId>httpclient</artifactId>
              </exclusion>
              <exclusion>
                <groupId>commons-codec</groupId>
                <artifactId>commons-codec</artifactId>
              </exclusion>
              <exclusion>
                <groupId>org.apache.httpcomponents</groupId>
                <artifactId>httpmime</artifactId>
              </exclusion>
              <exclusion>
                <groupId>org.apache.httpcomponents</groupId>
                <artifactId>httpclient-cache</artifactId>
              </exclusion>
              <exclusion>
                <groupId>org.apache.httpcomponents</groupId>
                <artifactId>fluent-hc</artifactId>
              </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpcore-osgi</artifactId>
            <version>${apache.httpcore.version}</version>
            <exclusions>
              <!-- These are all embedded within httpcore-osgi
                and so should not be depended on again
              -->

              <exclusion>
                <groupId>org.apache.httpcomponents</groupId>
                <artifactId>httpcore</artifactId>
              </exclusion>
              <exclusion>
                <groupId>org.apache.httpcomponents</groupId>
                <artifactId>httpcore-nio</artifactId>
              </exclusion>
            </exclusions>
        </dependency>
	</dependencies>
</dependencyManagement>


  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.felix</groupId>
        <artifactId>maven-bundle-plugin</artifactId>
        <version>2.5.4</version>
        <extensions>true</extensions>
      </plugin>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-compiler-plugin</artifactId>
      <configuration>
        <source>${maven.compiler.source}</source>
        <target>${maven.compiler.target}</target>
      </configuration>
    </plugin>

      <!-- Generally only needed during -Papache-release,
	   Apache super-parent will do that for us
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-source-plugin</artifactId>
      <executions>
        <execution>
          <goals>
            <goal>jar</goal>
            <goal>test-jar</goal>
          </goals>
        </execution>
      </executions>
    </plugin>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-jar-plugin</artifactId>
      <executions>
        <execution>
          <goals>
            <goal>test-jar</goal>
          </goals>
        </execution>
      </executions>
    </plugin>
-->
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-surefire-plugin</artifactId>
      <configuration>
        <skip>false</skip>
        <systemProperties>
          <property>
            <name>java.awt.headless</name>
            <value>true</value>
          </property>
        </systemProperties>
      </configuration>
    </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-remote-resources-plugin</artifactId>
        <executions>
          <execution>
            <goals>
              <goal>process</goal>
            </goals>
            <configuration>
              <resourceBundles>
                <!-- Will generate META-INF/DEPENDENCIES META-INF/LICENSE META-INF/NOTICE -->
                <resourceBundle>org.apache:apache-jar-resource-bundle:1.4</resourceBundle>
              </resourceBundles>
            </configuration>
          </execution>
        </executions>
      </plugin>

      <!-- Only needed during -Papache-release,
	   Apache super-parent will do that for us
	<plugin>
	    <groupId>org.apache.maven.plugins</groupId>
	    <artifactId>maven-javadoc-plugin</artifactId>
	    <executions>
		<execution>
		    <id>attach-javadocs</id>
		    <goals>
			<goal>jar</goal>
		    </goals>
		    <configuration>
			<additionalparam>-Xdoclint:none</additionalparam>
		    </configuration>
		</execution>
	    </executions>
	</plugin>
-->


    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-release-plugin</artifactId>
      <version>2.5.2</version>
      <configuration>
        <releaseProfiles>apache-release</releaseProfiles>
        <tagNameFormat>@{project.version}-RC1</tagNameFormat>
      </configuration>
    </plugin>

      <plugin>
        <groupId>org.apache.rat</groupId>
        <artifactId>apache-rat-plugin</artifactId>
        <executions>
          <execution>
            <!-- activated by -Papache-release -->
          </execution>
        </executions>
        <configuration>
          <excludes>
            <!--
            Text and Markdown files are typically used only for documentation purposes
            and license declarations are usually spurious in these files since often they
            will refer to the LICENSE/NOTICE for users to find the actual licenses
            -->
            <exclude>**/*.md</exclude>
            <!--
            META-INF services files can include comments but a license header would be
            unecessarily clutter so we exclude these
            -->
            <exclude>**/META-INF/services/*</exclude>

            <!-- Generated during the release process -->
            <exclude>DEPENDENCIES</exclude>

           <!-- Created by Maven Shade plugin -->
           <exclude>dependency-reduced-pom.xml</exclude>

          </excludes>
        </configuration>
    </plugin>
  </plugins>

  <pluginManagement>
    <plugins>
      <plugin>
        <groupId>org.apache.rat</groupId>
        <artifactId>apache-rat-plugin</artifactId>
        <version>0.11</version>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
          <source>${maven.compiler.source}</source>
          <target>${maven.compiler.target}</target>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.jvnet.jaxb2.maven2</groupId>
        <artifactId>maven-jaxb2-plugin</artifactId>
        <version>0.12.3</version>
      </plugin>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>appassembler-maven-plugin</artifactId>
        <version>1.1.1</version>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-shade-plugin</artifactId>
        <version>2.4</version>
      </plugin>



    </plugins>
  </pluginManagement>
  </build>
  <profiles>
    <profile>
      <id>apache-release</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.rat</groupId>
            <artifactId>apache-rat-plugin</artifactId>
            <executions>
              <execution>
                <id>rat-checks</id>
                <phase>verify</phase>
                <goals>
                  <goal>check</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>
  <reporting>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-checkstyle-plugin</artifactId>
        <version>2.15</version>
        <configuration>
          <configLocation>
            ${basedir}/Rcheckstyle.xml
          </configLocation>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-javadoc-plugin</artifactId>
        <configuration>
          <minmemory>128m</minmemory>
          <maxmemory>512</maxmemory>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jxr-plugin</artifactId>
        <version>2.5</version>
      </plugin>
    </plugins>
  </reporting>

  <pluginRepositories>
    <pluginRepository>
        <id>apache.snapshots</id>
        <name>Apache Snapshot Repository</name>
        <url>https://repository.apache.org/snapshots</url>
        <releases>
          <enabled>false</enabled>
        </releases>
    </pluginRepository>
    <!-- released plugins are in central and don't need a <pluginRepository> -->
  </pluginRepositories>


  <repositories>
    <!-- Apache snapshot repository inherited from Apache parent:
      <url>http://repository.apache.org/snapshots</url>
    -->

      <repository>
        <snapshots>
          <enabled>false</enabled>
        </snapshots>
        <id>bintray-spring</id>
        <name>bintray-spring</name>
        <url>https://dl.bintray.com/spring/jars</url>
      </repository>

      <repository>
        <id>com.springsource.repository.bundles.release</id>
        <name>SpringSource Enterprise Bundle Repository - SpringSource Bundle Releases</name>
        <url>http://repository.springsource.com/maven/bundles/release</url>
        <snapshots>
          <enabled>false</enabled>
        </snapshots>
      </repository>
      <repository>
        <id>com.springsource.repository.bundles.external</id>
        <name>SpringSource Enterprise Bundle Repository - External Bundle Releases</name>
        <url>http://repository.springsource.com/maven/bundles/external</url>
        <snapshots>
          <enabled>false</enabled>
        </snapshots>
      </repository>

<repository>
    <id>repository.spring.milestone</id>
    <name>Spring Milestone Repository</name>
    <url>https://repo.spring.io/milestone</url>
    <releases />
    <snapshots>
      <enabled>false</enabled>
    </snapshots>
</repository>


  </repositories>


  <!-- inherited from Apache parent
  <distributionManagement>
  </distributionManagement>
       -->

</project>
