<?xml version="1.0" encoding="UTF-8"?>
<!--
   Copyright (C) 2016 Red Hat, Inc.

   Licensed 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>

  <groupId>io.syndesis.integration</groupId>
  <artifactId>integration-bom</artifactId>
  <version>1.13.2</version>
  <name>Integration :: Bill of Materials (BOM)</name>
  <description>Syndesis :: Integration :: ${project.name}</description>

  <packaging>pom</packaging>

  <properties>
    <!-- we must ensure to have this version aligned with extension-bom and integration-bom -->
    <spring-boot.version>2.3.12.RELEASE</spring-boot.version>
    <camel.version>2.23.2.fuse-7_10_0-00020-redhat-00001</camel.version>
    <atlasmap.version>2.3.2</atlasmap.version>
    <jackson.version>2.11.2</jackson.version>
    <!-- any change to mongodb driver version, should be updated to parent pom.xml -->
    <mongodb.version>3.12.7</mongodb.version>
    <jetty.version>9.4.43.v20210629</jetty.version>
    <netty.version>4.1.68.Final</netty.version>
    <kubernetes.client.version>4.13.3</kubernetes.client.version>
    <aws-java-sdk.version>1.11.438</aws-java-sdk.version>
    <undertow.version>2.2.12.Final</undertow.version>
    <dep.plugin.deploy.version>2.8.2</dep.plugin.deploy.version>
    <org.apache.log4j.version>2.17.0</org.apache.log4j.version>
  </properties>

  <!-- Metadata need to publish to central -->
  <url>https://syndesis.io/</url>
  <inceptionYear>2016</inceptionYear>

  <organization>
    <name>Red Hat</name>
    <url>https://redhat.com</url>
  </organization>

  <licenses>
    <license>
      <name>Apache License, Version 2.0</name>
      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
      <distribution>repo</distribution>
    </license>
  </licenses>

  <developers>
    <developer>
      <name>Syndesis committers</name>
    </developer>
  </developers>

  <scm>
    <connection>scm:git:https://github.com/syndesisio/syndesis.git</connection>
    <developerConnection>scm:git:ssh://git@github.com:syndesisio/syndesis.git</developerConnection>
    <url>http://github.com/syndesisio/syndesis</url>
  </scm>

  <distributionManagement>
    <snapshotRepository>
      <id>oss-sonatype-staging</id>
      <name>oss-sonatype-staging</name>
      <url>https://oss.sonatype.org/content/repositories/snapshots</url>
    </snapshotRepository>
    <repository>
      <id>oss-sonatype-staging</id>
      <name>Sonatype Staging Repository</name>
      <url>https://oss.sonatype.org/service/local/staging/deploy/maven2</url>
    </repository>
  </distributionManagement>

  <issueManagement>
    <system>github</system>
    <url>https://github.com/syndesisio/syndesis.io/issues</url>
  </issueManagement>

  <repositories>
    <repository>
      <id>central</id>
      <name>Maven Central</name>
      <url>https://repo.maven.apache.org/maven2/</url>
    </repository>
    <repository>
      <id>redhat-ga</id>
      <name>Red Hat General Availability Repository</name>
      <url>https://maven.repository.redhat.com/ga/</url>
    </repository>
    <repository>
      <id>atlassian-public</id>
      <url>https://packages.atlassian.com/maven-external</url>
    </repository>
  </repositories>

  <pluginRepositories>
    <pluginRepository>
      <id>central</id>
      <name>Maven Central</name>
      <url>https://repo.maven.apache.org/maven2/</url>
    </pluginRepository>
    <pluginRepository>
      <id>redhat-ga</id>
      <name>Red Hat General Availability Repository</name>
      <url>https://maven.repository.redhat.com/ga/</url>
    </pluginRepository>
  </pluginRepositories>

  <dependencyManagement>
    <dependencies>
      <!-- Overriden Spring boot BOM dependecies -->
      <dependency>
        <groupId>org.mongodb</groupId>
        <artifactId>mongo-java-driver</artifactId>
        <version>${mongodb.version}</version>
      </dependency>

      <dependency>
        <groupId>com.amazonaws</groupId>
        <artifactId>aws-java-sdk-bom</artifactId>
        <version>${aws-java-sdk.version}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>

      <dependency>
        <groupId>io.fabric8</groupId>
        <artifactId>kubernetes-client-bom-with-deps</artifactId>
        <version>${kubernetes.client.version}</version>
        <scope>import</scope>
        <type>pom</type>
      </dependency>

      <dependency>
        <groupId>org.eclipse.jetty</groupId>
        <artifactId>jetty-bom</artifactId>
        <version>${jetty.version}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>

      <dependency>
        <groupId>io.netty</groupId>
        <artifactId>netty-bom</artifactId>
        <version>${netty.version}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>

      <dependency>
        <groupId>com.fasterxml.jackson</groupId>
        <artifactId>jackson-bom</artifactId>
        <version>${jackson.version}</version>
        <scope>import</scope>
        <type>pom</type>
      </dependency>

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

      <!-- Camel BOM for Spring-boot -->
      <dependency>
        <groupId>org.apache.camel</groupId>
        <artifactId>camel-spring-boot-dependencies</artifactId>
        <version>${camel.version}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>

      <dependency>
        <groupId>org.apache.camel</groupId>
        <artifactId>camel-swagger-java</artifactId>
        <version>${camel.version}</version>
        <exclusions>
          <exclusion>
            <!-- brought in via io.swagger:swagger-core and io.swagger:swagger-models and we do not want it as it conflicts with jakarta validation API -->
            <groupId>javax.validation</groupId>
            <artifactId>validation-api</artifactId>
          </exclusion>
        </exclusions>
      </dependency>

      <!-- Extension dependencies -->
      <dependency>
        <groupId>io.syndesis.extension</groupId>
        <artifactId>extension-annotation-processor</artifactId>
        <version>${project.version}</version>
      </dependency>

      <dependency>
        <groupId>io.syndesis.extension</groupId>
        <artifactId>extension-api</artifactId>
        <version>${project.version}</version>
      </dependency>

      <!-- Integration runtime depdendencies -->
      <dependency>
        <groupId>io.syndesis.integration</groupId>
        <artifactId>integration-api</artifactId>
        <version>${project.version}</version>
      </dependency>

      <dependency>
        <groupId>io.syndesis.integration</groupId>
        <artifactId>integration-runtime</artifactId>
        <version>${project.version}</version>
      </dependency>

      <dependency>
        <groupId>io.syndesis.integration</groupId>
        <artifactId>integration-runtime-springboot</artifactId>
        <version>${project.version}</version>
      </dependency>

      <!-- Atlasmap runtime -->
      <dependency>
        <groupId>io.atlasmap</groupId>
        <artifactId>camel-atlasmap</artifactId>
        <version>${atlasmap.version}</version>
        <exclusions>
          <exclusion>
            <groupId>javax.validation</groupId>
            <artifactId>validation-api</artifactId>
          </exclusion>
        </exclusions>
      </dependency>

      <!--
          Connector depdendencies

          NOTE: any new connector provided out of the box by syndesis should be listed here. Maybe this can be
                auto generated in a future release.
      -->
      <!-- components -->
      <dependency>
        <groupId>io.syndesis.integration</groupId>
        <artifactId>integration-component-proxy</artifactId>
        <version>${project.version}</version>
        <exclusions>
          <exclusion>
            <groupId>org.apache.camel</groupId>
            <artifactId>camel-connector</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>io.syndesis.connector</groupId>
        <artifactId>connector-twitter</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>io.syndesis.connector</groupId>
        <artifactId>connector-ftp</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>io.syndesis.connector</groupId>
        <artifactId>connector-sftp</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>io.syndesis.connector</groupId>
        <artifactId>connector-dropbox</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>io.syndesis.connector</groupId>
        <artifactId>connector-aws-ddb</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>io.syndesis.connector</groupId>
        <artifactId>connector-aws-s3</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>io.syndesis.connector</groupId>
        <artifactId>connector-aws-sns</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>io.syndesis.connector</groupId>
        <artifactId>connector-aws-sqs</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>io.syndesis.connector</groupId>
        <artifactId>connector-activemq</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>io.syndesis.connector</groupId>
        <artifactId>connector-amqp</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>io.syndesis.connector</groupId>
        <artifactId>connector-sql</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>io.syndesis.connector</groupId>
        <artifactId>connector-mqtt</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>io.syndesis.connector</groupId>
        <artifactId>connector-http</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>io.syndesis.connector</groupId>
        <artifactId>connector-salesforce</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>io.syndesis.connector</groupId>
        <artifactId>connector-slack</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>io.syndesis.connector</groupId>
        <artifactId>connector-gmail</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>io.syndesis.connector</groupId>
        <artifactId>connector-fhir</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>io.syndesis.connector</groupId>
        <artifactId>connector-kafka</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>io.syndesis.connector</groupId>
        <artifactId>connector-servicenow</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>io.syndesis.connector</groupId>
        <artifactId>connector-concur</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>io.syndesis.connector</groupId>
        <artifactId>connector-rest-swagger</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>io.syndesis.connector</groupId>
        <artifactId>connector-soap</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>io.syndesis.connector</groupId>
        <artifactId>connector-webhook</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>io.syndesis.connector</groupId>
        <artifactId>connector-timer</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>io.syndesis.connector</groupId>
        <artifactId>connector-log</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>io.syndesis.connector</groupId>
        <artifactId>connector-telegram</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>io.syndesis.connector</groupId>
        <artifactId>connector-irc</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>io.syndesis.connector</groupId>
        <artifactId>connector-api-provider</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>io.syndesis.connector</groupId>
        <artifactId>connector-google-calendar</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>io.syndesis.connector</groupId>
        <artifactId>connector-google-sheets</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>io.syndesis.connector</groupId>
        <artifactId>connector-kudu</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>io.syndesis.connector</groupId>
        <artifactId>connector-odata</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>io.syndesis.connector</groupId>
        <artifactId>connector-odata-v2</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>io.syndesis.connector</groupId>
        <artifactId>connector-box</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>io.syndesis.connector</groupId>
        <artifactId>connector-flow</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>io.syndesis.connector</groupId>
        <artifactId>connector-email</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>io.syndesis.connector</groupId>
        <artifactId>connector-jira</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>io.syndesis.connector</groupId>
        <artifactId>connector-mongodb</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>org.glassfish</groupId>
        <artifactId>jakarta.el</artifactId>
        <version>3.0.4</version>
      </dependency>
      <dependency>
        <groupId>io.undertow</groupId>
        <artifactId>undertow-core</artifactId>
        <version>${undertow.version}</version>
      </dependency>
      <dependency>
        <groupId>io.undertow</groupId>
        <artifactId>undertow-servlet</artifactId>
        <version>${undertow.version}</version>
        <exclusions>
          <exclusion>
            <groupId>org.jboss.spec.javax.servlet</groupId>
            <artifactId>jboss-servlet-api_4.0_spec</artifactId>
          </exclusion>
          <exclusion>
            <groupId>org.jboss.spec.javax.annotation</groupId>
            <artifactId>jboss-annotations-api_1.2_spec</artifactId>
          </exclusion>
            <exclusion>
              <groupId>org.jboss.spec.javax.annotation</groupId>
              <artifactId>jboss-annotations-api_1.3_spec</artifactId>
            </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>io.undertow</groupId>
        <artifactId>undertow-websockets-jsr</artifactId>
        <version>${undertow.version}</version>
      </dependency>
    </dependencies>
  </dependencyManagement>

  <build>
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>com.mycila</groupId>
          <artifactId>license-maven-plugin</artifactId>
          <inherited>true</inherited>
          <configuration>
            <header>license/syndesis-license.txt</header>
            <skipExistingHeaders>false</skipExistingHeaders>
            <concurrencyFactor>1</concurrencyFactor>
            <mapping combine.children="append">
              <provides>SCRIPT_STYLE</provides>
              <assemble>SCRIPT_STYLE</assemble>
              <xsd>XML_PREFIX</xsd>
            </mapping>
            <includes>
              <include>**/src/**</include>
              <include>**/pom.xml</include>
            </includes>
          </configuration>
          <dependencies>
            <dependency>
              <groupId>io.syndesis</groupId>
              <artifactId>syndesis-parent</artifactId>
              <classifier>tools</classifier>
              <version>${project.version}</version>
            </dependency>
          </dependencies>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>
  <profiles>
    <profile>
      <id>release</id>
      <build>
        <plugins>

          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-deploy-plugin</artifactId>
            <version>${dep.plugin.deploy.version}</version>
            <configuration>
              <skip>true</skip>
            </configuration>
          </plugin>

          <plugin>
            <groupId>org.sonatype.plugins</groupId>
            <artifactId>nexus-staging-maven-plugin</artifactId>
            <version>1.6.8</version>
            <executions>
              <execution>
                <id>default-deploy</id>
                <phase>deploy</phase>
                <goals>
                  <goal>deploy</goal>
                </goals>
              </execution>
            </executions>
            <configuration>
              <nexusUrl>https://oss.sonatype.org/</nexusUrl>
              <serverId>oss-sonatype-staging</serverId>
            </configuration>
          </plugin>

          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-gpg-plugin</artifactId>
            <version>1.6</version>
            <configuration>
              <skip>false</skip>
            </configuration>
            <executions>
              <execution>
                <id>sign-artifacts</id>
                <phase>verify</phase>
                <goals>
                  <goal>sign</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>

</project>
