<?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/xsd/maven-4.0.0.xsd">

  <modelVersion>4.0.0</modelVersion>

  <parent>
    <groupId>org.apache.syncope</groupId>
    <artifactId>syncope</artifactId>
    <version></version>
  </parent>

  <properties>
    <syncope.version></syncope.version>
    <secretKey>${secretKey}</secretKey>
    <anonymousKey>${anonymousKey}</anonymousKey>
    <jwsKey>${jwsKey}</jwsKey>
    <adminPassword>${adminPassword}</adminPassword>
    
    <ianal.phase>none</ianal.phase>
    <rat.skip>true</rat.skip>
    <checkstyle.skip>true</checkstyle.skip>
  </properties>

  <name>Apache Syncope sample project</name>
  <groupId>${groupId}</groupId>
  <artifactId>${artifactId}</artifactId>
  <version>${version}</version>
  <packaging>pom</packaging>

  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>org.apache.syncope.common.idm</groupId>
        <artifactId>syncope-common-idm-lib</artifactId>
        <version>${syncope.version}</version>
      </dependency>
      
      <dependency>
        <groupId>org.apache.syncope.core</groupId>
        <artifactId>syncope-core-starter</artifactId>
        <version>${syncope.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.syncope.core.idm</groupId>
        <artifactId>syncope-core-idm-rest-cxf</artifactId>
        <version>${syncope.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.syncope.core.am</groupId>
        <artifactId>syncope-core-am-rest-cxf</artifactId>
        <version>${syncope.version}</version>
      </dependency>

      <dependency>
        <groupId>org.apache.syncope.client.am</groupId>
        <artifactId>syncope-client-am-console</artifactId>
        <version>${syncope.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.syncope.client.idm</groupId>
        <artifactId>syncope-client-idm-console</artifactId>
        <version>${syncope.version}</version>
      </dependency>

      <dependency>
        <groupId>org.apache.syncope.client.idrepo</groupId>
        <artifactId>syncope-client-idrepo-enduser</artifactId>
        <version>${syncope.version}</version>
      </dependency>

      <dependency>
        <groupId>org.apache.syncope</groupId>
        <artifactId>syncope-sra</artifactId>
        <version>${syncope.version}</version>
      </dependency>

      <dependency>
        <groupId>org.apache.syncope.wa</groupId>
        <artifactId>syncope-wa-starter</artifactId>
        <version>${syncope.version}</version>
      </dependency>

      <dependency>
        <groupId>org.apache.syncope.core</groupId>
        <artifactId>syncope-core-self-keymaster-starter</artifactId>
        <version>${syncope.version}</version>
      </dependency>

      <dependency>
        <groupId>org.apache.syncope.common.keymaster</groupId>
        <artifactId>syncope-common-keymaster-client-zookeeper</artifactId>
        <version>${syncope.version}</version>
      </dependency>        
      <dependency>
        <groupId>org.apache.syncope.common.keymaster.self</groupId>
        <artifactId>syncope-common-keymaster-client-self</artifactId>
        <version>${syncope.version}</version>
      </dependency>
    </dependencies>
  </dependencyManagement>
    
  <modules>
    <module>common</module>
    <module>core</module>
    <module>console</module>
    <module>enduser</module>
    <module>sra</module>
    <module>wa</module>
    <module>fit</module>
  </modules>

</project>
