<?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.uima</groupId>
    <artifactId>uimaj-parent</artifactId>
    <version>3.1.2-SNAPSHOT</version>
    <relativePath>../uimaj-parent/pom.xml</relativePath>
  </parent>

	<artifactId>aggregate-uimaj</artifactId>
	<packaging>pom</packaging>
	<name>Apache UIMA Aggregate: ${project.artifactId}</name>
  <description>The aggregate for the base UIMA framework build and release</description>
  <url>${uimaWebsiteUrl}</url>

  <!-- Special inheritance note
       even though the <scm> element that follows is exactly the 
       same as those in super poms, it cannot be inherited because 
       there is some special code that computes the connection elements
       from the chain of parent poms, if this is omitted. 
       
       Keeping this a bit factored allows cutting/pasting the <scm>
       element, and just changing the following two properties -->  
  <scm>
    <connection>
      scm:git:https://github.com/apache/uima-uimaj/aggregate-uimaj
    </connection>
    <developerConnection>
      scm:git:https://github.com/apache/uima-uimaj/aggregate-uimaj
    </developerConnection>
    <url>
      https://github.com/apache/uima-uimaj/tree/master/aggregate-uimaj
    </url>
    <tag>HEAD</tag>
  </scm>
  
  <properties>
    <uimaScmProject>${project.artifactId}</uimaScmProject>
  </properties>
  
  <modules>
    <module>../uimaj-core</module>
    <module>../uimaj-cpe</module>
    <module>../uimaj-examples</module>
    <module>../uimaj-tools</module>
    <module>../uimaj-adapter-vinci</module>
    <module>../uimaj-adapter-soap</module>
    <module>../uimaj-test-util</module>
    <module>../uimaj-component-test-util</module>
    <module>../jVinci</module>
    <module>../aggregate-uimaj-eclipse-plugins</module>
    <module>../aggregate-uimaj-docbooks</module>
    <!--module>distr-superPom</module-->
    <module>../uimaj-document-annotation</module>
    <module>../PearPackagingMavenPlugin</module>
    <module>../jcasgen-maven-plugin</module>
    <module>../uimaj-v3migration-jcas</module>
    <!-- the internal tools project is not part of any release 
         and can't be built automatically - to build it,
         cd to the project directory and do mvn install -->
    <!--module>../uimaj-internal-tools</module-->
    <module>../uimaj-bootstrap</module>    
  </modules>  
</project>