<?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>
    <artifactId>org.apache.stanbol.enhancer.parent</artifactId>
    <groupId>org.apache.stanbol</groupId>
    <version>0.10.0-SNAPSHOT</version>
    <relativePath>../../parent</relativePath>
  </parent>

  <groupId>org.apache.stanbol</groupId>
  <artifactId>org.apache.stanbol.enhancer.engines.langdetect</artifactId>
  <version>0.10.0-SNAPSHOT</version>
  <packaging>bundle</packaging>

  <name>Apache Stanbol Enhancer Enhancement Engine : Language Identifier</name>
  <description>language detection for 53 languages based on http://code.google.com/p/language-detection
  </description>

  <inceptionYear>2012</inceptionYear>

  <scm>
    <connection>
      scm:svn:http://svn.apache.org/repos/asf/stanbol/trunk/enhancer/engines/langdetect/
    </connection>
    <developerConnection>
      scm:svn:https://svn.apache.org/repos/asf/stanbol/trunk/enhancer/engines/langdetect/
    </developerConnection>
    <url>http://stanbol.apache.org/</url>
  </scm>

	<build>
		<plugins>
			<plugin>
				<groupId>org.apache.felix</groupId>
				<artifactId>maven-bundle-plugin</artifactId>
				<extensions>true</extensions>
				<configuration>
					<instructions>
						<Export-Package>
							org.apache.stanbol.enhancer.engines.langdetect;version=${project.version}
						</Export-Package>
						<Embed-Dependency>
							langdetect;scope=compile,jsonic;scope=compile
						</Embed-Dependency>
						<Embed-Transitive>true</Embed-Transitive>
						<Import-Package>
							!com.google.inject.*,
							!org.seasar.framework.*,
							!org.springframework.*,
							*
						</Import-Package>
					</instructions>
				</configuration>
			</plugin>
			<plugin>
				<groupId>org.apache.felix</groupId>
				<artifactId>maven-scr-plugin</artifactId>
			</plugin>
			<plugin>
				<groupId>org.apache.rat</groupId>
				<artifactId>apache-rat-plugin</artifactId>
				<configuration>
					<excludes>
						<!-- AL20 licensed files: See src/test/resources/README -->
						<exclude>src/test/resources/*.txt</exclude>
					</excludes>
				</configuration>
			</plugin>
		</plugins>
	</build>

  <dependencies>
    <dependency>
      <groupId>org.apache.stanbol</groupId>
      <artifactId>org.apache.stanbol.enhancer.servicesapi</artifactId>
      <version>0.10.0-SNAPSHOT</version>
    </dependency>

    <dependency>
      <groupId>com.cybozu.labs</groupId>
      <artifactId>langdetect</artifactId>
      <version>1.1-20120112</version>
    </dependency>
    <dependency>
      <groupId>net.arnx</groupId>
      <artifactId>jsonic</artifactId>
      <version>1.2.7</version>
      <type>jar</type>
   </dependency>

    <dependency>
      <groupId>org.apache.felix</groupId>
      <artifactId>org.apache.felix.scr.annotations</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.clerezza</groupId>
      <artifactId>rdf.core</artifactId>
    </dependency>
    <dependency>
      <groupId>commons-io</groupId>
      <artifactId>commons-io</artifactId>
    </dependency>
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-api</artifactId>
    </dependency>

    <dependency>
      <groupId>org.apache.stanbol</groupId>
      <artifactId>org.apache.stanbol.enhancer.test</artifactId>
      <version>0.10.0-SNAPSHOT</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.stanbol</groupId>
      <artifactId>org.apache.stanbol.enhancer.core</artifactId>
      <version>0.10.0-SNAPSHOT</version>
      <scope>test</scope>
    </dependency>    
	<dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-simple</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <scope>test</scope>
    </dependency>
  </dependencies>

</project>
