<?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" child.project.url.inherit.append.path="false" 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.logging</groupId>
    <artifactId>logging-parent</artifactId>
    <version>11.0.0</version>
    <relativePath />
  </parent>

  <groupId>org.apache.logging.log4j</groupId>
  <artifactId>log4j-api-scala-parent</artifactId>
  <version>${revision}</version>
  <packaging>pom</packaging>

  <url>https://logging.apache.org/log4j/scala/</url>

  <developers>

    <developer>
      <id>ggregory</id>
      <name>Gary Gregory</name>
      <email>ggregory@apache.org</email>
      <url>https://www.garygregory.com</url>
      <organization>The Apache Software Foundation</organization>
      <organizationUrl>https://www.apache.org/</organizationUrl>
      <roles>
        <role>PMC Member</role>
      </roles>
      <timezone>America/New_York</timezone>
    </developer>

    <developer>
      <id>mattsicker</id>
      <name>Matt Sicker</name>
      <email>mattsicker@apache.org</email>
      <organization>Apple</organization>
      <roles>
        <role>PMC Member</role>
      </roles>
      <timezone>America/Chicago</timezone>
    </developer>

    <developer>
      <id>pkarwasz</id>
      <name>Piotr P. Karwasz</name>
      <email>pkarwasz@apache.org</email>
      <roles>
        <role>PMC Member</role>
      </roles>
      <timezone>Europe/Warsaw</timezone>
    </developer>

    <developer>
      <id>vy</id>
      <name>Volkan Yazıcı</name>
      <email>vy@apache.org</email>
      <roles>
        <role>PMC Chair</role>
      </roles>
      <timezone>Europe/Amsterdam</timezone>
    </developer>

  </developers>

  <modules>
    <module>log4j-api-scala_2.10</module>
    <module>log4j-api-scala_2.11</module>
    <module>log4j-api-scala_2.12</module>
    <module>log4j-api-scala_2.13</module>
    <module>log4j-api-scala_3</module>
  </modules>

  <scm child.scm.connection.inherit.append.path="false" child.scm.developerConnection.inherit.append.path="false" child.scm.url.inherit.append.path="false">
    <connection>scm:git:git@github.com:apache/logging-log4j-scala.git</connection>
    <developerConnection>scm:git:git@github.com:apache/logging-log4j-scala.git</developerConnection>
    <tag>HEAD</tag>
    <url>https://github.com/apache/logging-log4j-scala</url>
  </scm>

  <issueManagement>
    <system>GitHub Issues</system>
    <url>https://github.com/apache/logging-log4j-scala/issues</url>
  </issueManagement>

  <ciManagement>
    <system>GitHub Actions</system>
    <url>https://github.com/apache/logging-log4j-scala/actions</url>
  </ciManagement>

  <distributionManagement>
    <downloadUrl>https://logging.apache.org/download.html</downloadUrl>
  </distributionManagement>

  <properties>

    <!-- project version -->
    <revision>13.2.0-SNAPSHOT</revision>

    <!-- javac version (should work with the minimum `scala.version`!) -->
    <minimalJavaBuildVersion>[17,18)</minimalJavaBuildVersion>

    <!-- Scala version (to be overridden by modules!) -->
    <scala.version.group>2.10</scala.version.group>
    <scala.version>${scala.version.group}.7</scala.version>

    <!-- JDK 8 does not support `-release` flag -->
    <maven.compiler.source>8</maven.compiler.source>
    <maven.compiler.target>8</maven.compiler.target>
    <maven.compiler.release>8</maven.compiler.release>

    <!-- `project.build.outputTimestamp` is required to be present for reproducible builds.
         We actually inherit one from the `org.apache:apache` through our parent `org.apache.logging:logging-parent`.
         Though inheriting this property has two undesired consequences:
         1. `artifact:compare` dumps an `ERROR` log stating that this `property should not be inherited but defined` (apache/logging-parent#50)
         2. This value is employed in various places while creating the distribution
         To mitigate these, we define a *dummy* value here and let the CI replace it during a release.
         Hence, *DO NOT MANUALLY EDIT THIS VALUE*! -->
    <project.build.outputTimestamp>2024-02-01T09:39:00Z</project.build.outputTimestamp>

    <!--
      ~ Common OSGi and JPMS configuration.
      ~ Don't overwrite in modules!
      -->
    <bnd-module-name>org.apache.logging.log4j.api.scala</bnd-module-name>
    <bnd-extra-package-options>
      <!-- Scala reflection is optional -->
      scala.reflect.*;resolution:=optional
    </bnd-extra-package-options>
    <bnd-extra-module-options>
      <!-- Fix module names -->
      scala.library;substitute="scala-library",
      scala.reflect;substitute="scala-reflect";transitive=false
    </bnd-extra-module-options>

    <!-- disable `maven-site-plugin`-->
    <maven.site.skip>true</maven.site.skip>
    <maven.site.deploy.skip>true</maven.site.deploy.skip>

    <!-- disable Spotbugs -->
    <spotbugs.skip>true</spotbugs.skip>

    <!-- dependency version -->
    <junit.version>4.13.2</junit.version>
    <log4j.version>2.23.1</log4j.version>
    <mockito.version>4.11.0</mockito.version>
    <scalatest.version>3.2.10</scalatest.version>
    <scalatestplus.version>3.2.10.0</scalatestplus.version>

    <!-- plugin versions -->
    <maven-toolchains-plugin.version>3.2.0</maven-toolchains-plugin.version>
    <!-- Last one that runs on JDK 8 -->
    <spotless-maven-plugin.version>2.30.0</spotless-maven-plugin.version>
    <scala-maven-plugin.version>4.8.1</scala-maven-plugin.version>

  </properties>

  <dependencyManagement>
    <dependencies>

      <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-bom</artifactId>
        <version>${log4j.version}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>

      <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>${junit.version}</version>
      </dependency>

      <dependency>
        <groupId>org.mockito</groupId>
        <artifactId>mockito-core</artifactId>
        <version>${mockito.version}</version>
      </dependency>

      <dependency>
        <groupId>org.scalatest</groupId>
        <artifactId>scalatest_${scala.version.group}</artifactId>
        <version>${scalatest.version}</version>
      </dependency>

      <dependency>
        <groupId>org.scalatest</groupId>
        <artifactId>scalatest-funsuite_${scala.version.group}</artifactId>
        <version>${scalatest.version}</version>
      </dependency>

      <dependency>
        <groupId>org.scalatest</groupId>
        <artifactId>scalatest-matchers-core_${scala.version.group}</artifactId>
        <version>${scalatest.version}</version>
      </dependency>

      <dependency>
        <groupId>org.scalatestplus</groupId>
        <artifactId>junit-4-13_${scala.version.group}</artifactId>
        <version>${scalatestplus.version}</version>
      </dependency>

      <dependency>
        <groupId>org.scalatestplus</groupId>
        <artifactId>mockito-3-12_${scala.version.group}</artifactId>
        <version>${scalatestplus.version}</version>
      </dependency>

    </dependencies>
  </dependencyManagement>

  <dependencies>

    <dependency>
      <groupId>org.osgi</groupId>
      <artifactId>osgi.annotation</artifactId>
      <scope>provided</scope>
    </dependency>

  </dependencies>

  <build>

    <pluginManagement>

      <plugins>
        <plugin>
          <groupId>net.alchim31.maven</groupId>
          <artifactId>scala-maven-plugin</artifactId>
          <version>${scala-maven-plugin.version}</version>
          <executions>
            <execution>
              <id>scala-${scala.version.group}</id>
              <goals>
                <goal>compile</goal>
                <goal>testCompile</goal>
              </goals>
              <configuration>
                <scalaVersion>${scala.version}</scalaVersion>
                <!-- disabling zinc, since it is causing compilation failures -->
                <recompileMode>all</recompileMode>
              </configuration>
            </execution>
          </executions>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-toolchains-plugin</artifactId>
          <version>${maven-toolchains-plugin.version}</version>
          <executions>
            <execution>
              <id>java-8</id>
              <goals>
                <goal>toolchain</goal>
              </goals>
              <configuration>
                <toolchains>
                  <jdk>
                    <version>[1.8,9)</version>
                  </jdk>
                </toolchains>
              </configuration>
            </execution>
          </executions>
        </plugin>

      </plugins>
    </pluginManagement>

    <sourceDirectory>src/main/scala</sourceDirectory>

    <testSourceDirectory>src/test/scala</testSourceDirectory>

  </build>

</project>
