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

  <groupId>org.apache.taverna</groupId>
  <artifactId>apache-taverna-parent</artifactId>
  <version>2-incubating</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://people.apache.org/committers-by-project.html#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>
  		</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>mattmann</id>
  		<email>mattmann@apache.org</email>
  		<name>Chris Mattmann</name>
  		<!-- FIXME: <url>http://orcid.org/0000-0001-7086-3889</url> unverified -->
  		<roles>
  			<role>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>
  		<!-- FIXME: <url>http://orcid.org/0000-0001-6415-0532</url> unverified -->
  		<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>
	<developer>
		<name>Menaka Madushanka</name>
		<email>menaka12350@gmail.com</email>
		<!--  TODO: <url>http://orcid.org/...</url> -->
		<roles>
			<role>contributor</role>
		</roles>
	</developer>
	<developer>
		<name>Larry Akah</name>
		<email>larryakah@gmail.com</email>
		<!--  TODO: <url>http://orcid.org/...</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>
  </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>2-incubating-RC5</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.0.0.BUILD-20080106</apache.commons.csv.version>
<apache.httpclient.version>4.5.1</apache.httpclient.version>
<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.jdk16.version>1.46</bcprov.jdk16.version>
<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.9</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>
<dom4j.version>1.6.1</dom4j.version>
<elmo.version>1.5</elmo.version>
<geronimo.spec.jta.version>1.0-M1</geronimo.spec.jta.version>
<gson.version>1.4</gson.version>
<hibernate.version>3.2.6.ga</hibernate.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.3.3</jackson.version> <!-- Should be   -->
<!-- http://github.com/jai-imageio/ -->
<jai.imageio.core.version>1.3.1</jai.imageio.core.version>
<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.0.0</jena.version><!--  NOTE: TAVERNA-892 -->
<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>
<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.6</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>
<xerces.version>2.9.1</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>
    <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>

	<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>http://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>http://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>http://repo.spring.io/milestone</url>
    <releases />
    <snapshots>
      <enabled>false</enabled>
    </snapshots>
</repository>


  </repositories>


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

</project>
