<?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>
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>org.apache.photark</groupId>
		<artifactId>photark-parent</artifactId>
		<version>1.0-incubating-SNAPSHOT</version>
		<relativePath>../pom.xml</relativePath>
	</parent>
	<artifactId>photark-face-recognition</artifactId>
	<name>Apache PhotArk Face Recognition Implementation</name>

	<dependencies>
        <dependency>
			<groupId>org.apache.photark</groupId>
			<artifactId>photark-jcr</artifactId>
			<version>1.0-incubating-SNAPSHOT</version>
		</dependency>

        <!-- Tuscany Dependencies -->
		<dependency>
			<groupId>org.apache.tuscany.sca</groupId>
			<artifactId>tuscany-sca-api</artifactId>
			<version>${tuscany.version}</version>
		</dependency>

		<dependency>
			<groupId>org.apache.tuscany.sca</groupId>
			<artifactId>tuscany-data-api</artifactId>
			<version>${tuscany.version}</version>
		</dependency>

         <dependency>
            <groupId>org.apache.tuscany.sca</groupId>
            <artifactId>tuscany-node-api</artifactId>
            <version>${tuscany.version}</version>
        </dependency>

         <dependency>
            <groupId>org.apache.tuscany.sca</groupId>
            <artifactId>tuscany-node-impl</artifactId>
            <version>${tuscany.version}</version>
            <scope>test</scope>
        </dependency>


		<!-- JackRabbit Dependencies -->
		<!-- The JCR API -->
		<dependency>
			<groupId>javax.jcr</groupId>
			<artifactId>jcr</artifactId>
			<version>1.0</version>
		</dependency>

		<!-- Jackrabbit content repository -->
		<dependency>
			<groupId>org.apache.jackrabbit</groupId>
			<artifactId>jackrabbit-core</artifactId>
			<version>1.6.1</version>
			<!-- 
			<exclusions>
				<exclusion>
					<artifactId>jackrabbit-text-extractors</artifactId>
					<groupId>org.apache.jackrabbit</groupId>
				</exclusion>
			</exclusions>
		    -->
		</dependency>

		<!-- Use Log4J for logging -->
        <dependency>
          <groupId>org.slf4j</groupId>
          <artifactId>slf4j-api</artifactId>
          <version>1.5.8</version>
        </dependency>

		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-log4j12</artifactId>
			<version>1.5.8</version>
		</dependency>

		<dependency>
			<groupId>org.apache.commons</groupId>
			<artifactId>commons-compress</artifactId>
			<version>1.0</version>
		</dependency>

		<dependency>
			<groupId>commons-lang</groupId>
			<artifactId>commons-lang</artifactId>
			<version>2.4</version>
		</dependency>
	
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.5</version>
			<scope>test</scope>
		</dependency>

        <dependency>
            <groupId>com.github.mhendred.face4j</groupId>
            <artifactId>face4j-core</artifactId>
            <version>1.5.3</version>
        </dependency>

        <dependency>
            <groupId>com.restfb</groupId>
            <artifactId>restfb</artifactId>
            <version>1.6.4</version>
        </dependency>

	</dependencies>

	<build>
		<finalName>${artifactId}</finalName>
	</build>
</project>
