<?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</groupId>
    <artifactId>apache</artifactId>
    <version>18</version>
  </parent>

  <groupId>org.apache.logging.log4j.boot</groupId>
  <artifactId>log4j-boot-parent</artifactId>
  <packaging>pom</packaging>
  <version>1.0-SNAPSHOT</version>

  <name>Apache Log4j Boot</name>
  <description>
    Log4j Boot is a collection of dependency management modules for Maven- and Ivy-compatible dependency management
    systems. These modules provide necessary third party dependencies for various extra plugins for Log4j 2.x including
    compatibility APIs.
  </description>
  <url>https://logging.apache.org/log4j/boot/</url>

  <properties>
    <maven.compiler.source>1.7</maven.compiler.source>
    <maven.compiler.target>1.7</maven.compiler.target>
    <log4jVersion>2.7.1-SNAPSHOT</log4jVersion>
    <slf4jVersion>1.7.22</slf4jVersion>
    <activemqVersion>5.14.1</activemqVersion>
    <cassandraVersion>3.1.0</cassandraVersion>
    <compressVersion>1.13</compressVersion>
    <conversantVersion>1.2.10</conversantVersion>
    <couchdbVersion>0.0.6</couchdbVersion>
    <csvVersion>1.4</csvVersion>
    <disruptorVersion>3.3.6</disruptorVersion>
    <groovyVersion>2.4.8</groovyVersion>
    <jacksonVersion>2.8.6</jacksonVersion>
    <jansiVersion>1.14</jansiVersion>
    <javamailVersion>1.5.6</javamailVersion>
    <jctoolsVersion>1.2.1</jctoolsVersion>
    <jeromqVersion>0.3.6</jeromqVersion>
    <jmdnsVersion>3.5.1</jmdnsVersion>
    <logbackVersion>1.1.8</logbackVersion>
    <kafkaVersion>0.10.1.1</kafkaVersion>
    <mongodbVersion>3.4.1</mongodbVersion>
    <springbootVersion>1.4.3.RELEASE</springbootVersion>
  </properties>

  <modules>
    <module>core</module>
    <module>async</module>
    <module>compat</module>
    <module>logback</module>
    <module>advertiser/jmdns</module>
    <module>appender/async-conversant</module>
    <module>appender/async-jctools</module>
    <module>appender/cassandra</module>
    <module>appender/compress</module>
    <module>appender/couchdb</module>
    <module>appender/activemq</module>
    <module>appender/jms</module>
    <module>appender/jpa</module>
    <module>appender/kafka</module>
    <module>appender/mongodb</module>
    <module>appender/smtp</module>
    <module>appender/zeromq</module>
    <module>config/json</module>
    <module>config/yaml</module>
    <module>layout/csv</module>
    <module>layout/jansi</module>
    <module>layout/json</module>
    <module>layout/xml</module>
    <module>layout/yaml</module>
    <module>script/groovy</module>
    <module>spring</module>
  </modules>

  <scm>
    <connection>scm:git:git://git.apache.org/logging-log4j-boot.git</connection>
    <developerConnection>scm:git:https://git-wip-us.apache.org/repos/asf/logging-log4j-boot.git</developerConnection>
    <url>https://git-wip-us.apache.org/repos/asf?p=logging-log4j-boot.git</url>
  </scm>

  <mailingLists>
    <mailingList>
      <name>log4j-user</name>
      <subscribe>log4j-user-subscribe@logging.apache.org</subscribe>
      <unsubscribe>log4j-user-unsubscribe@logging.apache.org</unsubscribe>
      <post>log4j-user@logging.apache.org</post>
      <archive>https://lists.apache.org/list.html?log4j-user@logging.apache.org</archive>
      <otherArchives>
        <otherArchive>http://mail-archives.apache.org/mod_mbox/logging-log4j-user/</otherArchive>
        <otherArchive>http://marc.info/?l=log4j-user</otherArchive>
        <otherArchive>http://dir.gmane.org/gmane.comp.jakarta.log4j.user</otherArchive>
      </otherArchives>
    </mailingList>
    <mailingList>
      <name>log4j-dev</name>
      <subscribe>log4j-dev-subscribe@logging.apache.org</subscribe>
      <unsubscribe>log4j-dev-unsubscribe@logging.apache.org</unsubscribe>
      <post>log4j-dev@logging.apache.org</post>
      <archive>https://lists.apache.org/list.html?log4j-dev@logging.apache.org</archive>
      <otherArchives>
        <otherArchive>http://mail-archives.apache.org/mod_mbox/logging-log4j-dev/</otherArchive>
        <otherArchive>http://marc.info/?l=log4j-dev</otherArchive>
        <otherArchive>http://dir.gmane.org/gmane.comp.jakarta.log4j.devel</otherArchive>
      </otherArchives>
    </mailingList>
  </mailingLists>

  <issueManagement>
    <system>JIRA</system>
    <url>https://issues.apache.org/jira/browse/LOG4J2</url>
  </issueManagement>

  <build>
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-site-plugin</artifactId>
          <version>3.6</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-changes-plugin</artifactId>
          <version>2.12.1</version>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>

  <reporting>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-changes-plugin</artifactId>
        <version>2.12.1</version>
        <reportSets>
          <reportSet>
            <reports>
              <report>jira-report</report>
            </reports>
          </reportSet>
        </reportSets>
        <configuration>
          <useJql>true</useJql>
          <filter>project = LOG4J2 AND component = Boot AND status in (Resolved, Closed)</filter>
          <runOnlyAtExecutionRoot>true</runOnlyAtExecutionRoot>
          <issueManagementSystems>
            <issueManagementSystem>JIRA</issueManagementSystem>
          </issueManagementSystems>
        </configuration>
      </plugin>
    </plugins>
  </reporting>

</project>