<?xml version="1.0" encoding="UTF-8"?>
<!--
  ~ Copyright 2010-2014 Ning, Inc.
  ~ Copyright 2014-2020 Groupon, Inc
  ~ Copyright 2020-2021 Equinix, Inc
  ~ Copyright 2014-2021 The Billing Project, LLC
  ~
  ~ The Billing Project 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.kill-bill.billing</groupId>
        <artifactId>killbill-oss-parent</artifactId>
        <version>0.146.63</version>
    </parent>
    <groupId>org.kill-bill.commons</groupId>
    <artifactId>killbill-commons</artifactId>
    <version>0.27.0</version>
    <packaging>pom</packaging>
    <name>killbill-commons</name>
    <description>Kill Bill reusable Java components</description>
    <url>http://github.com/killbill/killbill-commons</url>
    <licenses>
        <license>
            <name>Apache License 2.0</name>
            <url>http://www.apache.org/licenses/LICENSE-2.0.html</url>
            <distribution>repo</distribution>
        </license>
    </licenses>
    <modules>
        <module>clock</module>
        <module>concurrent</module>
        <module>config-magic</module>
        <module>embeddeddb</module>
        <module>jdbi</module>
        <module>locker</module>
        <module>queue</module>
        <module>skeleton</module>
        <module>xmlloader</module>
        <module>automaton</module>
        <module>jooby</module>
        <module>metrics</module>
        <module>metrics-api</module>
        <module>utils</module>
    </modules>
    <scm>
        <connection>scm:git:git://github.com/killbill/killbill-commons.git</connection>
        <developerConnection>scm:git:git@github.com:killbill/killbill-commons.git</developerConnection>
        <tag>killbill-commons-0.27.0</tag>
        <url>http://github.com/killbill/killbill-commons/tree/master</url>
    </scm>
    <issueManagement>
        <system>Github</system>
        <url>http://github.com/killbill/killbill-commons</url>
    </issueManagement>
    <properties>
        <check.fail-spotbugs>true</check.fail-spotbugs>
        <!-- killbill-oss-parent still brings extra-enforcer-rules 1.6.1, which rejects Java 21 as
             an unknown target. Keep this local override until the parent is updated. -->
        <extra-enforcer-rules.version>1.12.0</extra-enforcer-rules.version>
        <!-- Used across the reactor; Guice Servlet 7 is required by jooby, metrics, and skeleton. -->
        <guice.version>7.0.0</guice.version>
        <!-- Used by skeleton. -->
        <hk2.version>3.0.6</hk2.version>
        <!-- Used by skeleton. -->
        <jackson.jakarta.rs.version>2.13.4</jackson.jakarta.rs.version>
        <!-- Used by automaton and xmlloader. -->
        <jakarta.activation-api.version>2.1.0</jakarta.activation-api.version>
        <!-- Used by jooby and skeleton. -->
        <jakarta.annotation-api.version>2.1.1</jakarta.annotation-api.version>
        <!-- Used by jooby, queue, jdbi, metrics, and skeleton. -->
        <jakarta.inject-api.version>2.0.1</jakarta.inject-api.version>
        <!-- Used by jooby, metrics, and skeleton. -->
        <jakarta.servlet-api.version>5.0.0</jakarta.servlet-api.version>
        <!-- Used by skeleton. -->
        <jakarta.validation-api.version>3.0.2</jakarta.validation-api.version>
        <!-- Used by skeleton. -->
        <jakarta.ws.rs-api.version>3.0.0</jakarta.ws.rs-api.version>
        <!-- Used by skeleton. -->
        <javassist.version>3.30.2-GA</javassist.version>
        <!-- Used by automaton and xmlloader. -->
        <jaxb-api.version>4.0.0</jaxb-api.version>
        <!-- Used by automaton and xmlloader. -->
        <jaxb-runtime.version>4.0.0</jaxb-runtime.version>
        <!-- Used by skeleton. -->
        <jersey.version>3.0.18</jersey.version>
        <!-- Used by skeleton and jooby. -->
        <jetty.version>11.0.24</jetty.version>
        <project.build.targetJdk>21</project.build.targetJdk>
        <!-- killbill-oss-parent still brings spotbugs-maven-plugin 4.7.2.1, whose bundled ASM
             stack cannot read Java 21 class files (major version 65). Keep this local override
             until the parent moves to a Java-21-capable SpotBugs line. -->
        <spotbugs-maven-plugin.version>4.9.8.3</spotbugs-maven-plugin.version>
        <surefireArgLine>-Xmx${build.jvmsize} --add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.base/java.io=ALL-UNNAMED --add-opens java.base/java.util=ALL-UNNAMED</surefireArgLine>
    </properties>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>com.fasterxml.jackson.jakarta.rs</groupId>
                <artifactId>jackson-jakarta-rs-json-provider</artifactId>
                <version>${jackson.jakarta.rs.version}</version>
            </dependency>
            <dependency>
                <groupId>com.google.inject</groupId>
                <artifactId>guice</artifactId>
                <version>${guice.version}</version>
            </dependency>
            <dependency>
                <groupId>com.google.inject.extensions</groupId>
                <artifactId>guice-servlet</artifactId>
                <version>${guice.version}</version>
            </dependency>
            <dependency>
                <groupId>jakarta.activation</groupId>
                <artifactId>jakarta.activation-api</artifactId>
                <version>${jakarta.activation-api.version}</version>
            </dependency>
            <dependency>
                <groupId>jakarta.inject</groupId>
                <artifactId>jakarta.inject-api</artifactId>
                <version>${jakarta.inject-api.version}</version>
            </dependency>
            <dependency>
                <groupId>jakarta.xml.bind</groupId>
                <artifactId>jakarta.xml.bind-api</artifactId>
                <version>${jaxb-api.version}</version>
            </dependency>
            <dependency>
                <groupId>org.eclipse.jetty</groupId>
                <artifactId>jetty-alpn-server</artifactId>
                <version>${jetty.version}</version>
            </dependency>
            <dependency>
                <groupId>org.eclipse.jetty.http2</groupId>
                <artifactId>http2-server</artifactId>
                <version>${jetty.version}</version>
            </dependency>
            <dependency>
                <groupId>org.eclipse.jetty.websocket</groupId>
                <artifactId>websocket-jetty-api</artifactId>
                <version>${jetty.version}</version>
            </dependency>
            <dependency>
                <groupId>org.glassfish.jaxb</groupId>
                <artifactId>jaxb-runtime</artifactId>
                <version>${jaxb-runtime.version}</version>
                <exclusions>
                    <exclusion>
                        <!-- We use jakarta.activation:jakarta.activation-api instead -->
                        <groupId>com.sun.activation</groupId>
                        <artifactId>jakarta.activation</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>org.javassist</groupId>
                <artifactId>javassist</artifactId>
                <version>${javassist.version}</version>
            </dependency>
            <dependency>
                <groupId>org.kill-bill.commons</groupId>
                <artifactId>killbill-automaton</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.kill-bill.commons</groupId>
                <artifactId>killbill-clock</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.kill-bill.commons</groupId>
                <artifactId>killbill-clock</artifactId>
                <version>${project.version}</version>
                <type>test-jar</type>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.kill-bill.commons</groupId>
                <artifactId>killbill-concurrent</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.kill-bill.commons</groupId>
                <artifactId>killbill-config-magic</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.kill-bill.commons</groupId>
                <artifactId>killbill-embeddeddb</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.kill-bill.commons</groupId>
                <artifactId>killbill-embeddeddb-common</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.kill-bill.commons</groupId>
                <artifactId>killbill-embeddeddb-h2</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.kill-bill.commons</groupId>
                <artifactId>killbill-embeddeddb-mysql</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.kill-bill.commons</groupId>
                <artifactId>killbill-embeddeddb-mysql</artifactId>
                <version>${project.version}</version>
                <type>test-jar</type>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.kill-bill.commons</groupId>
                <artifactId>killbill-embeddeddb-postgresql</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.kill-bill.commons</groupId>
                <artifactId>killbill-embeddeddb-postgresql</artifactId>
                <version>${project.version}</version>
                <type>test-jar</type>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.kill-bill.commons</groupId>
                <artifactId>killbill-jdbi</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.kill-bill.commons</groupId>
                <artifactId>killbill-jooby</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.kill-bill.commons</groupId>
                <artifactId>killbill-locker</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.kill-bill.commons</groupId>
                <artifactId>killbill-metrics</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.kill-bill.commons</groupId>
                <artifactId>killbill-metrics-api</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.kill-bill.commons</groupId>
                <artifactId>killbill-queue</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.kill-bill.commons</groupId>
                <artifactId>killbill-skeleton</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.kill-bill.commons</groupId>
                <artifactId>killbill-utils</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.kill-bill.commons</groupId>
                <artifactId>killbill-xmlloader</artifactId>
                <version>${project.version}</version>
            </dependency>
        </dependencies>
    </dependencyManagement>
    <build>
        <plugins>
            <plugin>
                <groupId>com.github.spotbugs</groupId>
                <artifactId>spotbugs-maven-plugin</artifactId>
                <version>${spotbugs-maven-plugin.version}</version>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-enforcer-plugin</artifactId>
                <dependencies>
                    <!-- Only the helper dependency version changes here; the inherited Enforcer
                         rules/executions stay intact. -->
                    <dependency>
                        <groupId>org.codehaus.mojo</groupId>
                        <artifactId>extra-enforcer-rules</artifactId>
                        <version>${extra-enforcer-rules.version}</version>
                    </dependency>
                </dependencies>
            </plugin>
        </plugins>
    </build>
</project>
