<?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/maven-v4_0_0.xsd">
  <parent>
    <groupId>org.apache</groupId>
    <artifactId>apache</artifactId>
    <version>23</version>
  </parent>
  <modelVersion>4.0.0</modelVersion>

  <groupId>org.apache.qpid</groupId>
  <artifactId>qpid-jms-parent</artifactId>
  <version>0.61.0</version>
  <packaging>pom</packaging>
  <name>QpidJMS</name>
  <inceptionYear>2013</inceptionYear>
  <url>https://qpid.apache.org</url>

  <description>
      QpidJMS is a JMS framework featuring support for AMQP v1.0
  </description>

  <properties>
    <!-- Dependency Versions for this Project -->
    <proton-version>0.33.10</proton-version>
    <netty-version>4.1.72.Final</netty-version>
    <slf4j-version>1.7.32</slf4j-version>
    <geronimo.jms.2.spec.version>1.0-alpha-2</geronimo.jms.2.spec.version>

    <!-- 'Provided'/Test Dependency Versions for this Project -->
    <opentracing-version>0.33.0</opentracing-version>

    <!-- Test Dependency Versions for this Project -->
    <netty-tcnative-version>2.0.46.Final</netty-tcnative-version>
    <activemq-version>5.16.3</activemq-version>
    <junit-version>4.13.2</junit-version>
    <fuse-joram-tests-version>1.0</fuse-joram-tests-version>
    <jetty-version>9.4.43.v20210629</jetty-version>
    <mockito-version>3.12.4</mockito-version>
    <hamcrest-version>2.2</hamcrest-version>
    <hadoop-minikdc-version>3.3.0</hadoop-minikdc-version>
    <commons-io-version>2.10.0</commons-io-version>

    <!-- Maven Plugin Versions for this Project -->
    <maven-javacc-plugin-version>2.6</maven-javacc-plugin-version>
    <maven-eclipse-plugin-version>2.10</maven-eclipse-plugin-version>
    <maven-idea-plugin-version>2.5</maven-idea-plugin-version>
    <maven-bundle-plugin-version>5.1.2</maven-bundle-plugin-version>
    <maven-enforcer-plugin-version>3.0.0-M3</maven-enforcer-plugin-version>
    <findbugs-maven-plugin-version>3.0.2</findbugs-maven-plugin-version>
    <jacoco-plugin-version>0.8.6</jacoco-plugin-version>
    <surefire.version>2.22.2</surefire.version>

    <!-- See also maven.compiler.release in the java9on profile -->
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>

    <!-- Test properties -->
    <maven.test.redirectTestOutputToFile>true</maven.test.redirectTestOutputToFile>
    <surefire.runOrder>filesystem</surefire.runOrder>
    <proton.trace.frames>false</proton.trace.frames>

    <!-- surefire forked jvm arguments -->
    <argLine>-Xmx2g -enableassertions ${jacoco-config}</argLine>

    <netty-transport-native-epoll-classifier>linux-x86_64</netty-transport-native-epoll-classifier>
    <netty-transport-native-kqueue-classifier>osx-x86_64</netty-transport-native-kqueue-classifier>
  </properties>

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

  <scm>
    <connection>scm:git:https://gitbox.apache.org/repos/asf/qpid-jms.git</connection>
    <developerConnection>scm:git:https://gitbox.apache.org/repos/asf/qpid-jms.git</developerConnection>
    <url>https://gitbox.apache.org/repos/asf?p=qpid-jms.git</url>
    <tag>0.61.0</tag>
  </scm>

  <modules>
    <module>qpid-jms-client</module>
    <module>qpid-jms-discovery</module>
    <module>qpid-jms-interop-tests</module>
    <module>qpid-jms-examples</module>
    <module>qpid-jms-docs</module>
    <module>apache-qpid-jms</module>
  </modules>

  <dependencyManagement>
    <dependencies>
      <!-- Internal module dependencies -->
      <dependency>
        <groupId>org.apache.qpid</groupId>
        <artifactId>qpid-jms-client</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.qpid</groupId>
        <artifactId>qpid-jms-discovery</artifactId>
        <version>${project.version}</version>
      </dependency>
      <!-- Required dependencies -->
      <dependency>
        <groupId>org.apache.qpid</groupId>
        <artifactId>proton-j</artifactId>
        <version>${proton-version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.geronimo.specs</groupId>
        <artifactId>geronimo-jms_2.0_spec</artifactId>
        <version>${geronimo.jms.2.spec.version}</version>
      </dependency>
      <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>${slf4j-version}</version>
      </dependency>
      <dependency>
        <groupId>io.netty</groupId>
        <artifactId>netty-buffer</artifactId>
        <version>${netty-version}</version>
      </dependency>
      <dependency>
        <groupId>io.netty</groupId>
        <artifactId>netty-common</artifactId>
        <version>${netty-version}</version>
      </dependency>
      <dependency>
        <groupId>io.netty</groupId>
        <artifactId>netty-handler</artifactId>
        <version>${netty-version}</version>
      </dependency>
      <dependency>
        <groupId>io.netty</groupId>
        <artifactId>netty-handler-proxy</artifactId>
        <version>${netty-version}</version>
      </dependency>
      <dependency>
        <groupId>io.netty</groupId>
        <artifactId>netty-transport</artifactId>
        <version>${netty-version}</version>
      </dependency>
      <dependency>
        <groupId>io.netty</groupId>
        <artifactId>netty-transport-classes-epoll</artifactId>
        <version>${netty-version}</version>
      </dependency>
      <dependency>
        <groupId>io.netty</groupId>
        <artifactId>netty-transport-native-epoll</artifactId>
        <version>${netty-version}</version>
        <classifier>${netty-transport-native-epoll-classifier}</classifier>
      </dependency>
      <dependency>
        <groupId>io.netty</groupId>
        <artifactId>netty-transport-classes-kqueue</artifactId>
        <version>${netty-version}</version>
      </dependency>
      <dependency>
        <groupId>io.netty</groupId>
        <artifactId>netty-transport-native-kqueue</artifactId>
        <version>${netty-version}</version>
        <classifier>${netty-transport-native-kqueue-classifier}</classifier>
      </dependency>
      <dependency>
        <groupId>io.netty</groupId>
        <artifactId>netty-codec-http</artifactId>
        <version>${netty-version}</version>
      </dependency>
      <!--  Provided dependencies -->
      <dependency>
        <groupId>io.opentracing</groupId>
        <artifactId>opentracing-api</artifactId>
        <version>${opentracing-version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>io.opentracing</groupId>
        <artifactId>opentracing-util</artifactId>
        <version>${opentracing-version}</version>
        <scope>provided</scope>
      </dependency>
      <!-- Logging impl dependency, e.g for the tests or examples -->
      <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-simple</artifactId>
        <version>${slf4j-version}</version>
      </dependency>
      <!-- Test dependencies -->
      <dependency>
        <groupId>io.opentracing</groupId>
        <artifactId>opentracing-mock</artifactId>
        <version>${opentracing-version}</version>
        <scope>test</scope>
      </dependency>
      <dependency>
         <groupId>io.netty</groupId>
         <artifactId>netty-tcnative-boringssl-static</artifactId>
         <version>${netty-tcnative-version}</version>
         <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>${junit-version}</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.mockito</groupId>
        <artifactId>mockito-core</artifactId>
        <version>${mockito-version}</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.hamcrest</groupId>
        <artifactId>hamcrest</artifactId>
        <version>${hamcrest-version}</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-minikdc</artifactId>
        <version>${hadoop-minikdc-version}</version>
        <scope>test</scope>
        <exclusions>
          <exclusion>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>commons-io</groupId>
        <artifactId>commons-io</artifactId>
        <version>${commons-io-version}</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.apache.kerby</groupId>
        <artifactId>token-provider</artifactId>
        <scope>test</scope>
        <exclusions>
          <exclusion>
            <groupId>com.nimbusds</groupId>
            <artifactId>nimbus-jose-jwt</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
    </dependencies>
  </dependencyManagement>

  <build>
    <defaultGoal>install</defaultGoal>
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-surefire-plugin</artifactId>
          <configuration>
            <runOrder>${surefire.runOrder}</runOrder>
            <redirectTestOutputToFile>${maven.test.redirectTestOutputToFile}</redirectTestOutputToFile>
            <forkCount>1</forkCount>
            <reuseForks>true</reuseForks>
            <systemPropertyVariables>
                <java.awt.headless>true</java.awt.headless>
            </systemPropertyVariables>
            <failIfNoTests>false</failIfNoTests>
            <environmentVariables>
              <PN_TRACE_FRM>${proton.trace.frames}</PN_TRACE_FRM>
            </environmentVariables>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-eclipse-plugin</artifactId>
          <version>${maven-eclipse-plugin-version}</version>
          <configuration>
            <downloadSources>true</downloadSources>
            <downloadJavadocs>true</downloadJavadocs>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-idea-plugin</artifactId>
          <version>${maven-idea-plugin-version}</version>
          <configuration>
            <downloadSources>true</downloadSources>
            <downloadJavadocs>true</downloadJavadocs>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-enforcer-plugin</artifactId>
          <version>${maven-enforcer-plugin-version}</version>
        </plugin>
        <plugin>
          <groupId>org.apache.felix</groupId>
          <artifactId>maven-bundle-plugin</artifactId>
          <version>${maven-bundle-plugin-version}</version>
          <extensions>true</extensions>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-release-plugin</artifactId>
          <configuration>
            <autoVersionSubmodules>true</autoVersionSubmodules>
            <tagNameFormat>@{project.version}</tagNameFormat>
            <pushChanges>true</pushChanges>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>javacc-maven-plugin</artifactId>
          <version>${maven-javacc-plugin-version}</version>
        </plugin>
        <plugin>
          <groupId>org.jacoco</groupId>
          <artifactId>jacoco-maven-plugin</artifactId>
          <version>${jacoco-plugin-version}</version>
        </plugin>
      </plugins>
    </pluginManagement>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
          <optimize>true</optimize>
          <debug>true</debug>
          <showDeprecation>true</showDeprecation>
          <showWarnings>true</showWarnings>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.jacoco</groupId>
        <artifactId>jacoco-maven-plugin</artifactId>
        <executions>
          <execution>
            <goals>
              <goal>prepare-agent</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <propertyName>jacoco-config</propertyName>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.rat</groupId>
        <artifactId>apache-rat-plugin</artifactId>
        <configuration>
          <excludes>
            <exclude>appveyor.yml</exclude>
            <exclude>.travis.yml</exclude>
            <exclude>.github/workflows/*.yml</exclude>
            <exclude>**/*.md</exclude>
            <exclude>**/*.txt</exclude>
            <exclude>etc/org.eclipse.*</exclude>
            <exclude>**/target/</exclude>
            <exclude>**/data/</exclude>
            <exclude>**/*.lock</exclude>
            <exclude>**/META-INF/services/*</exclude>
            <exclude>**/*.iml</exclude>
            <exclude>**/*.keystore</exclude>
            <exclude>**/*.truststore</exclude>
            <exclude>**/*.crt</exclude>
            <exclude>**/*.csr</exclude>
          </excludes>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-enforcer-plugin</artifactId>
        <executions>
          <execution>
            <id>enforce-java-version</id>
            <goals>
              <goal>enforce</goal>
            </goals>
            <configuration>
              <rules>
                <requireJavaVersion>
                  <version>[1.8,)</version>
                  <message>You must use Java 8+ to build</message>
                </requireJavaVersion>
              </rules>
            </configuration>
            </execution>
            <execution>
              <id>enforce-maven-version</id>
              <goals>
                <goal>enforce</goal>
              </goals>
              <configuration>
                <rules>
                  <requireMavenVersion>
                    <version>3.5.0</version>
                    <message>You must use Maven 3.5.0+ to build</message>
                  </requireMavenVersion>
                </rules>
              </configuration>
            </execution>
        </executions>
        </plugin>
    </plugins>
  </build>

  <reporting>
    <plugins>
      <plugin>
        <groupId>org.jacoco</groupId>
        <artifactId>jacoco-maven-plugin</artifactId>
        <version>${jacoco-plugin-version}</version>
      </plugin>
    </plugins>
  </reporting>

  <profiles>
    <!-- Override the apache-release profile from the parent. Skip creating
         a source release here, we have a release module that does it.  -->
    <profile>
      <id>apache-release</id>
      <build>
        <plugins>
          <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
            <executions>
              <execution>
                <id>source-release-assembly</id>
                <configuration>
                  <skipAssembly>true</skipAssembly>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>

    <profile>
      <id>java9on</id>
      <activation>
        <jdk>[9,)</jdk>
      </activation>
      <properties>
        <maven.compiler.release>8</maven.compiler.release>
      </properties>
    </profile>
  </profiles>
</project>
