<?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.stanbol</groupId>
    <artifactId>apache-stanbol-enhancement-engines</artifactId>
    <version>1.0.0-SNAPSHOT</version>
    <relativePath>..</relativePath>
  </parent>
  
  <groupId>org.apache.stanbol</groupId>
  <artifactId>apache-stanbol-enhancement-engines-entitylinking</artifactId>
  <version>1.0.0-SNAPSHOT</version>
  <packaging>pom</packaging>

  <name>Apache Stanbol Enhancement Engine : Entity Linking</name>
  <description>
    Pseudo project to build the Stanbol Enhancer EntityLinking Engine
  </description>
  <inceptionYear>2012</inceptionYear>

  <scm>
    <connection>
      scm:svn:http://svn.apache.org/repos/asf/stanbol/branches/STANBOL-913/entitylinking
    </connection>
    <developerConnection>
      scm:svn:https://svn.apache.org/repos/asf/stanbol/branches/STANBOL-913/entitylinking
    </developerConnection>
    <url>http://stanbol.apache.org/</url>
  </scm>

  <modules>
	  <!-- the EntityLinkingEngine and extension points -->
    <module>engine</module>
    <!-- LabelTokenizer implementations -->
    <module>labeltokenizer-lucene</module>
    <module>labeltokenizer-opennlp</module>
    <!-- Chinese Label Tokenizer -->
    <module>labeltokenizer-smartcn</module> <!-- config for the lucene label tokenizer -->
    <module>labeltokenizer-paoding</module> <!-- implementation based on paoding -->
    <!-- Japanese -->
    <module>labeltokenizer-kuromoji</module> <!-- configuration based on kuromoji-->
  </modules>

  <profiles>
    <profile>
      <id>apache-release</id>
      <activation>
        <activeByDefault>false</activeByDefault>
      </activation>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.rat</groupId>
            <artifactId>apache-rat-plugin</artifactId>
            <configuration>
              <excludeSubProjects>false</excludeSubProjects>
              <excludes>
                <!--
                  All license headers are also checked per
                  artifact. These excludes are necessary
                  to make the reactor build suceed. Consider
                  the excluded files here as already checked
                  in the artifacts.
                -->

                <!-- exclude hidden files -->
                <exclude>**/.*</exclude>
                <exclude>**/.*/*</exclude>
                <exclude>**/.*/**/*</exclude>

                <!-- exclude build files -->
                <exclude>**/target/**</exclude>
                <exclude>**/*.log</exclude>             

                <!-- exclude generated files listing the licenses of deps -->
                <exclude>DEPENDENCIES</exclude>
                <exclude>DEPENDENCIES-BY-LICENSE</exclude>
                <exclude>RAT-REPORT</exclude>
                <exclude>**/src/license/THIRD-PARTY.properties</exclude>

                <!-- exclude certain file types -->
                <exclude>**/*.config</exclude>
                <exclude>**/*.cfg</exclude>
                <exclude>**/*.ref</exclude>
                <exclude>**/*.txt</exclude>
                <exclude>**/*.tsv</exclude>
                <exclude>**/*.sem</exclude>
                <exclude>**/*.svg</exclude>
                <exclude>**/*.css</exclude>
                <exclude>**/*.js</exclude>

                <!-- exclude test files --> 
                <exclude>**/test/**/*.eml</exclude>
                <exclude>**/test/**/*.nt</exclude>
                <exclude>**/test/**/*.html</exclude>
                <exclude>**/test/**/*.xhtml</exclude>
                <exclude>**/test/**/*.rdf</exclude>
                <exclude>**/test/**/*.rtf</exclude>
                <exclude>**/test/**/*.rules</exclude>
                <exclude>**/test/**/*.odt</exclude>
              </excludes>
            </configuration>
          </plugin>
          <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>license-maven-plugin</artifactId>
            <executions>
              <execution>
                <goals>
                  <goal>aggregate-add-third-party</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>

</project>
