<?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>10</version>
    <relativePath />
  </parent>

  <groupId>org.apache.stanbol</groupId>
  <artifactId>org.apache.stanbol.enhancer.reactor</artifactId>
  <version>0.10.0-incubating-SNAPSHOT</version>
  <packaging>pom</packaging>

  <name>Apache Stanbol Enhancer Reactor</name>
  <description>
    Pseudo project to build the complete Stanbol Enhancer component
  </description>
  <inceptionYear>2010</inceptionYear>

  <scm>
    <connection>
      scm:svn:http://svn.apache.org/repos/asf/incubator/stanbol/trunk/enhancer/
    </connection>
    <developerConnection>
      scm:svn:https://svn.apache.org/repos/asf/incubator/stanbol/trunk/enhancer/
    </developerConnection>
    <url>http://incubator.apache.org/stanbol/</url>
  </scm>

  <modules>
    <module>parent</module>
    <module>generic/servicesapi</module>
    <module>generic/core</module>
    <module>generic/test</module>
    <module>generic/rdfentities</module>
    <module>jobmanager</module>

    <module>chain/allactive</module>
    <module>chain/graph</module>
    <module>chain/weighted</module>
    <module>chain/list</module>
    
    <module>engines</module>
      
    <module>jersey</module>
    <module>ldpath</module>
    <module>benchmark</module>
    <module>defaults</module>
    <module>bundlelist</module>
  </modules>
</project>
