<?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.maven.surefire</groupId>
        <artifactId>surefire</artifactId>
        <version>3.0.0-M2</version>
    </parent>

    <artifactId>surefire-logger-api</artifactId>

    <name>SureFire Logger API</name>
    <description>
        Interfaces and Utilities related only to internal SureFire Logger API. Free of dependencies.
    </description>

    <properties>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    </properties>

    <developers>
        <developer>
            <id>tibordigana</id>
            <name>Tibor Digaňa (tibor17)</name>
            <email>tibordigana@apache.org</email>
            <roles>
                <role>PMC</role>
            </roles>
            <timezone>Europe/Bratislava</timezone>
        </developer>
    </developers>

</project>