<?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:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"
         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</groupId>
        <artifactId>apache</artifactId>
        <version>20</version>
    </parent>

    <groupId>org.apache.meecrowave</groupId>
    <artifactId>meecrowave-examples</artifactId>
    <version>1.2.3-SNAPSHOT</version>

    <packaging>pom</packaging>
    <name>Apache Meecrowave Examples</name>
    <description>A project showing some of the Apache Meecrowave features.</description>

    <modules>
        <module>rest-trivial</module>
        <module>rest</module>
        <module>servlet-trivial</module>
        <module>mw_bundle_config</module>
        <module>servlet-vaadin-v08</module>
        <module>servlet-vaadin-v10</module>
        <module>docker</module>
    </modules>

    <properties>
        <meecrowave.version>1.2.3</meecrowave.version>

        <maven.compiler.target>1.8</maven.compiler.target>
        <maven.compiler.source>1.8</maven.compiler.source>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>

        <slf4j.version>1.7.25</slf4j.version>
        <log4j-api.version>2.11.0</log4j-api.version>

        <jacoco.version>0.8.1</jacoco.version>
        <pitest.version>1.4.0</pitest.version>
        <pitest-junit5-plugin.version>0.5</pitest-junit5-plugin.version>

        <junit4.version>4.12</junit4.version>
        <junit.jupiter.version>5.1.1</junit.jupiter.version>
        <junit.platform.version>1.1.1</junit.platform.version>

    </properties>



    <!-- Just to disable any accidential deployment to maven.central -->
    <distributionManagement>
        <repository>
            <id>localhost</id>
            <url>file://${basedir}/target/repo/</url>
        </repository>
        <snapshotRepository>
            <id>localhost</id>
            <url>file://${basedir}/target/snapshot-repo/</url>
        </snapshotRepository>
    </distributionManagement>
</project>
