<?xml version="1.0"?>
<!--
  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/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>org.apache.knox</groupId>
    <artifactId>gateway</artifactId>
    <version>0.12.0</version>
  </parent>
  <groupId>org.apache.knox</groupId>
  <artifactId>gateway-service-knoxsso</artifactId>
  <version>0.12.0</version>
  <name>gateway-service-knoxsso</name>
  <url>http://maven.apache.org</url>
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>
  <dependencies>
	  <dependency>
	    <groupId>${gateway-group}</groupId>
	    <artifactId>gateway-util-common</artifactId>
	  </dependency>
	  <dependency>
	    <groupId>${gateway-group}</groupId>
	    <artifactId>gateway-spi</artifactId>
	  </dependency>
	  <dependency>
	    <groupId>${gateway-group}</groupId>
	    <artifactId>gateway-provider-rewrite</artifactId>
	  </dependency>
	  <dependency>
	    <groupId>${gateway-group}</groupId>
	    <artifactId>gateway-provider-jersey</artifactId>
	  </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.knox</groupId>
      <artifactId>gateway-test-utils</artifactId>
      <scope>test</scope>
    </dependency>
      <dependency>
          <groupId>org.easymock</groupId>
          <artifactId>easymock</artifactId>
          <scope>test</scope>
      </dependency>  </dependencies>
</project>
