<?xml version="1.0" encoding="UTF-8"?>
<!--
  Licensed 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. See accompanying LICENSE file.
-->
<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>
    <groupId>org.apache.kerby</groupId>
    <artifactId>kerby-all</artifactId>
    <version>1.0.0</version>
  </parent>
  
  <artifactId>kerby-kerb</artifactId>
  <name>Kerby-kerb Project</name>
  <packaging>pom</packaging>

  <modules>
    <module>kerb-core</module>
    <module>kerb-common</module>
    <module>kerb-util</module>
    <module>kerb-crypto</module>
    <module>kerb-identity</module>
    <module>kerb-identity-test</module>
    <module>kerb-client</module>
    <module>kerb-server</module>
    <module>kerb-kdc-test</module>
    <module>integration-test</module>
    <module>kerb-admin</module>
    <module>kerb-admin-server</module>
    <module>kerb-simplekdc</module>
    <module>kerb-client-api-all</module>
    <module>kerb-server-api-all</module>
  </modules>
</project>
