<?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">
    <parent>
        <artifactId>custos</artifactId>
        <groupId>org.apache.custos</groupId>
        <version>1.0-SNAPSHOT</version>
        <relativePath>../pom.xml</relativePath>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>custos-core-services</artifactId>
    <packaging>pom</packaging>

    <modules>
        <module>tenant-profile-core-service</module>
        <module>utility-services/custos-configuration-service</module>
        <module>iam-admin-core-service</module>
        <module>credential-store-core-service</module>
        <module>federated-authentication-core-service</module>
        <module>custos-core-services-commons</module>
        <module>identity-core-service</module>
        <module>user-profile-core-service</module>
        <module>agent-profile-core-service</module>
        <module>cluster-management-core-service</module>
        <module>resource-secret-core-service</module>
        <module>sharing-core-service</module>
        <module>custos-logging</module>
        <module>custos-messaging-core-service</module>
    </modules>




</project>