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

  <parent>
    <groupId>io.syndesis</groupId>
    <artifactId>syndesis-parent</artifactId>
    <version>1.2.2</version>
    <relativePath>../pom.xml</relativePath>
  </parent>

  <artifactId>syndesis-core-parent</artifactId>
  <version>1.2.2</version>
  <packaging>pom</packaging>

  <name>Core :: Parent</name>

  <properties>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
    <basepom.test.timeout>300</basepom.test.timeout>
    <basepom.test.timeout>150</basepom.test.timeout>
    <basepom.failsafe.timeout>0</basepom.failsafe.timeout>
    <basepom.compiler.fail-warnings>true</basepom.compiler.fail-warnings>
    <dep.plugin.compiler.version>3.7.0</dep.plugin.compiler.version>

    <syndesis-connectors.version>${project.version}</syndesis-connectors.version>
    <syndesis-integration-runtime.version>${project.version}</syndesis-integration-runtime.version>

    <assertj-core.version>3.6.2</assertj-core.version>
    <immutables.version>2.5.6</immutables.version>
    <jackson.version>2.8.10</jackson.version>
    <junit.version>4.12</junit.version>
    <maven-shared-utils.version>3.1.0</maven-shared-utils.version>
    <maven-common-artifact-filters.version>1.4.0</maven-common-artifact-filters.version>
    <mockwebserver.version>0.0.15</mockwebserver.version>
    <okhttp-eventsource.version>1.3.2</okhttp-eventsource.version>
    <postgresql.version>9.1-901-1.jdbc4</postgresql.version>
    <resteasy-spring-boot-starter.version>2.3.4-RELEASE</resteasy-spring-boot-starter.version>
    <resteasy.version>3.1.4.Final</resteasy.version>
    <shrinkwrap.version>2.2.6</shrinkwrap.version>
    <spring.version>4.3.12.RELEASE</spring.version>
    <spring-cloud.version>Dalston.SR4</spring-cloud.version>
    <spring-cloud-kubernetes.version>0.1.6</spring-cloud-kubernetes.version>
    <spring-cloud-sleuth.version>1.2.5.RELEASE</spring-cloud-sleuth.version>
    <spring-security.version>4.2.3.RELEASE</spring-security.version>
    <spring-social.version>1.1.4.RELEASE</spring-social.version>
    <undertow.version>1.4.21.Final</undertow.version>
    <camel-atlasmap.version>${atlasmap.version}</camel-atlasmap.version>
    <apache-mime4j.version>0.6</apache-mime4j.version>
    <google-testing-compile.version>0.12</google-testing-compile.version>
    <google-testing-compile-guava.version>21.0</google-testing-compile-guava.version>
    <google-truth.version>0.35</google-truth.version>

    <!-- maven plugin version -->
    <dep.plugin.dependency.version>3.0.1</dep.plugin.dependency.version>
    <maven-resolver-api.version>1.0.3</maven-resolver-api.version>
    <maven-archetype-plugin.version>2.2</maven-archetype-plugin.version>
    <archetype-packaging.version>2.2</archetype-packaging.version>

    <!-- third party plugin version -->
    <asciidoctor-maven-plugin.version>1.5.3</asciidoctor-maven-plugin.version>
    <build-helper-maven-plugin.version>1.12</build-helper-maven-plugin.version>
    <exec-maven-plugin.version>1.5.0</exec-maven-plugin.version>
    <process-exec-maven-plugin.version>0.8</process-exec-maven-plugin.version>
    <swagger-maven-plugin.version>1.0.0</swagger-maven-plugin.version>
    <swagger2markup-maven-plugin.version>1.1.0</swagger2markup-maven-plugin.version>
    <base64.version>2.3.8</base64.version>

    <!-- maven archetypes -->
    <maven-archetype-packaging.version>2.0</maven-archetype-packaging.version>
  </properties>

  <modules>
	  <module>core</module>
    <module>model</module>
  </modules>

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

      <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-dependencies</artifactId>
        <version>${spring-boot.version}</version>
        <scope>import</scope>
        <type>pom</type>
      </dependency>
      <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-dependencies</artifactId>
        <version>${spring-cloud.version}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>

      <dependency>
        <groupId>org.jboss.shrinkwrap.resolver</groupId>
        <artifactId>shrinkwrap-resolver-bom</artifactId>
        <version>${shrinkwrap.version}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>

      <!-- Internal Dependencies -->

      <dependency>
        <groupId>io.syndesis</groupId>
        <artifactId>core</artifactId>
        <version>${project.version}</version>
      </dependency>

      <dependency>
        <groupId>io.syndesis</groupId>
        <artifactId>model</artifactId>
        <version>${project.version}</version>
      </dependency>

      <dependency>
        <groupId>javax.ws.rs</groupId>
        <artifactId>javax.ws.rs-api</artifactId>
        <version>2.0.1</version>
        <scope>provided</scope>
      </dependency>

      <dependency>
        <groupId>org.immutables</groupId>
        <artifactId>value</artifactId>
        <version>${immutables.version}</version>
        <scope>provided</scope>
      </dependency>

      <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>${spring.version}</version>
        <exclusions>
          <exclusion>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
          </exclusion>
        </exclusions>
      </dependency>

      <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-aop</artifactId>
        <version>${spring.version}</version>
        <exclusions>
          <exclusion>
            <groupId>aopalliance</groupId>
            <artifactId>aopalliance</artifactId>
          </exclusion>
        </exclusions>
      </dependency>

      <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-core</artifactId>
        <version>${spring-security.version}</version>
        <exclusions>
          <exclusion>
            <groupId>aopalliance</groupId>
            <artifactId>aopalliance</artifactId>
          </exclusion>
        </exclusions>
      </dependency>

      <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-crypto</artifactId>
        <version>${spring-security.version}</version>
        <exclusions>
          <exclusion>
            <groupId>aopalliance</groupId>
            <artifactId>aopalliance</artifactId>
          </exclusion>
        </exclusions>
      </dependency>

      <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-config</artifactId>
        <version>${spring-security.version}</version>
        <exclusions>
          <exclusion>
            <groupId>aopalliance</groupId>
            <artifactId>aopalliance</artifactId>
          </exclusion>
        </exclusions>
      </dependency>

      <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-web</artifactId>
        <version>${spring-security.version}</version>
        <exclusions>
          <exclusion>
            <groupId>aopalliance</groupId>
            <artifactId>aopalliance</artifactId>
          </exclusion>
        </exclusions>
      </dependency>

      <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <version>${spring-boot.version}</version>
        <exclusions>
          <exclusion>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
          </exclusion>
        </exclusions>
      </dependency>

      <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-loader-tools</artifactId>
        <version>${spring-boot.version}</version>
      </dependency>

      <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
        <version>${spring-boot.version}</version>
      </dependency>


      <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-annotations</artifactId>
        <version>${jackson.version}</version>
      </dependency>

      <dependency>
        <groupId>me.andrz.jackson</groupId>
        <artifactId>jackson-json-reference-core</artifactId>
        <version>0.2.1</version>
      </dependency>

      <dependency>
        <groupId>org.jboss.spec.javax.ws.rs</groupId>
        <artifactId>jboss-jaxrs-api_2.0_spec</artifactId>
        <version>1.0.1.Beta1</version>
      </dependency>

      <dependency>
        <groupId>org.jboss.spec.javax.annotation</groupId>
        <artifactId>jboss-annotations-api_1.2_spec</artifactId>
        <version>1.0.0.Final</version>
      </dependency>

      <dependency>
        <groupId>com.google.guava</groupId>
        <artifactId>guava</artifactId>
        <version>23.3-jre</version>
      </dependency>

      <dependency>
        <groupId>com.google.code.findbugs</groupId>
        <artifactId>jsr305</artifactId>
        <version>${dep.findbugs.version}</version>
      </dependency>

      <dependency>
        <groupId>com.google.code.findbugs</groupId>
        <artifactId>findbugs-annotations</artifactId>
        <version>${dep.findbugs.version}</version>
      </dependency>

      <dependency>
        <groupId>net.jcip</groupId>
        <artifactId>jcip-annotations</artifactId>
        <version>1.0</version>
      </dependency>

      <dependency>
        <groupId>com.google.errorprone</groupId>
        <artifactId>error_prone_annotations</artifactId>
        <version>2.0.19</version>
      </dependency>

      <dependency>
        <groupId>org.codehaus.groovy</groupId>
        <artifactId>groovy</artifactId>
        <version>2.4.12</version>
      </dependency>

      <dependency>
        <groupId>commons-io</groupId>
        <artifactId>commons-io</artifactId>
        <version>2.5</version>
      </dependency>

      <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-lang3</artifactId>
        <version>3.2.1</version>
      </dependency>

      <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-compress</artifactId>
        <version>1.14</version>
      </dependency>

      <!-- Testing Dependencies -->
      <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>${junit.version}</version>
        <scope>test</scope>
      </dependency>

      <dependency>
        <groupId>org.assertj</groupId>
        <artifactId>assertj-core</artifactId>
        <version>${assertj-core.version}</version>
        <scope>test</scope>
      </dependency>

      <dependency>
        <groupId>postgresql</groupId>
        <artifactId>postgresql</artifactId>
        <version>${postgresql.version}</version>
        <scope>runtime</scope>
      </dependency>

      <dependency>
        <groupId>org.apache.derby</groupId>
        <artifactId>derby</artifactId>
        <version>${derby.version}</version>
      </dependency>

      <dependency>
        <groupId>org.mockito</groupId>
        <artifactId>mockito-core</artifactId>
        <version>1.10.19</version>
        <scope>test</scope>
      </dependency>

      <dependency>
        <groupId>org.awaitility</groupId>
        <artifactId>awaitility</artifactId>
        <version>3.0.0</version>
        <scope>test</scope>
      </dependency>

      <dependency>
        <groupId>com.github.tomakehurst</groupId>
        <artifactId>wiremock-standalone</artifactId>
        <version>2.7.1</version>
        <scope>test</scope>
      </dependency>

      <dependency>
        <groupId>com.github.java-json-tools</groupId>
        <artifactId>json-schema-validator</artifactId>
        <version>2.2.8</version>
        <exclusions>
          <exclusion>
            <groupId>javax.mail</groupId>
            <artifactId>mailapi</artifactId>
          </exclusion>
        </exclusions>
      </dependency>

      <dependency>
        <groupId>javax.mail</groupId>
        <artifactId>mailapi</artifactId>
        <version>1.4.3</version>
      </dependency>

      <dependency>
        <groupId>com.github.java-json-tools</groupId>
        <artifactId>json-schema-core</artifactId>
        <version>1.2.8</version>
      </dependency>

      <!-- Only here to exclude commons-logging transitive dependency - not direct dependency-->
      <dependency>
        <groupId>org.apache.james</groupId>
        <artifactId>apache-mime4j</artifactId>
        <version>${apache-mime4j.version}</version>
        <scope>runtime</scope>
        <exclusions>
          <exclusion>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
          </exclusion>
        </exclusions>
      </dependency>

      <dependency>
        <groupId>net.iharder</groupId>
        <artifactId>base64</artifactId>
        <version>${base64.version}</version>
      </dependency>

      <dependency>
        <groupId>org.apache.maven.shared</groupId>
        <artifactId>maven-shared-utils</artifactId>
        <version>${maven-shared-utils.version}</version>
      </dependency>

      <dependency>
        <groupId>org.apache.maven.shared</groupId>
        <artifactId>maven-common-artifact-filters</artifactId>
        <version>${maven-common-artifact-filters.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.maven.resolver</groupId>
        <artifactId>maven-resolver-api</artifactId>
        <version>${maven-resolver-api.version}</version>
      </dependency>

    </dependencies>
  </dependencyManagement>

  <build>
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-maven-plugin</artifactId>
          <version>${spring-boot.version}</version>
        </plugin>
        <plugin>
          <groupId>io.fabric8</groupId>
          <artifactId>fabric8-maven-plugin</artifactId>
        </plugin>
        <plugin>
          <groupId>dk.nykredit.swagger</groupId>
          <artifactId>swagger-maven-plugin</artifactId>
          <version>${swagger-maven-plugin.version}</version>
        </plugin>
        <plugin>
          <groupId>io.github.swagger2markup</groupId>
          <artifactId>swagger2markup-maven-plugin</artifactId>
          <version>${swagger2markup-maven-plugin.version}</version>
        </plugin>
        <plugin>
          <groupId>org.asciidoctor</groupId>
          <artifactId>asciidoctor-maven-plugin</artifactId>
          <version>${asciidoctor-maven-plugin.version}</version>
        </plugin>
        <plugin>
          <groupId>com.bazaarvoice.maven.plugins</groupId>
          <artifactId>process-exec-maven-plugin</artifactId>
          <version>${process-exec-maven-plugin.version}</version>
        </plugin>
        <plugin>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>exec-maven-plugin</artifactId>
          <version>${exec-maven-plugin.version}</version>
        </plugin>
      </plugins>
    </pluginManagement>

    <plugins>

      <plugin>
        <artifactId>maven-surefire-plugin</artifactId>
        <inherited>true</inherited>
        <configuration>
          <environmentVariables>
            <ENV_VAR_EXISTS>value</ENV_VAR_EXISTS>
            <ENV_VAR_EXISTS_BOOLEAN>true</ENV_VAR_EXISTS_BOOLEAN>
          </environmentVariables>
        </configuration>
      </plugin>

      <plugin>
        <artifactId>maven-gpg-plugin</artifactId>
        <configuration>
          <passphrase>${gpg.passphrase}</passphrase>
        </configuration>
      </plugin>

      <plugin>
        <groupId>org.basepom.maven</groupId>
        <artifactId>duplicate-finder-maven-plugin</artifactId>
        <configuration>
          <ignoredClassPatterns>
            <ignoredClassPattern>io.fabric8.kubernetes.client.*</ignoredClassPattern>
            <ignoredClassPattern>org.infinispan.*</ignoredClassPattern>
            <ignoredClassPattern>org.springframework.security.crypto.*</ignoredClassPattern>
            <ignoredClassPattern>org.objectweb.asm.*</ignoredClassPattern>
            <ignoredClassPattern>javax.ws.*</ignoredClassPattern>
            <ignoredClassPattern>org.apache.camel.json.simple.*</ignoredClassPattern>
          </ignoredClassPatterns>
          <ignoredResourcePatterns>
            <ignoredResourcePattern>features.xml</ignoredResourcePattern>
            <ignoredResourcePattern>org/infinispan/.*</ignoredResourcePattern>
            <ignoredResourcePattern>ValidationMessages.properties</ignoredResourcePattern>
            <ignoredResourcePattern>about.html</ignoredResourcePattern>
            <ignoredResourcePattern>draftv3/schema</ignoredResourcePattern>
            <ignoredResourcePattern>draftv4/schema</ignoredResourcePattern>
          </ignoredResourcePatterns>
        </configuration>
      </plugin>

    </plugins>
  </build>

  <profiles>
    <profile>
      <id>release</id>
      <build>
        <plugins>
          <plugin>
            <artifactId>maven-enforcer-plugin</artifactId>
            <executions>
              <execution>
                <id>enforce-no-snapshots</id>
                <goals>
                  <goal>enforce</goal>
                </goals>
                <configuration>
                  <rules>
                    <requireReleaseDeps>
                      <message>No Snapshots Allowed!</message>
                    </requireReleaseDeps>
                    <bannedDependencies>
                      <excludes>
                        <exclude>commons-logging</exclude>
                      </excludes>
                    </bannedDependencies>
                  </rules>
                  <fail>false</fail>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>doclint-java8-disable</id>
      <activation>
        <jdk>[1.8,)</jdk>
      </activation>
      <properties>
        <javadoc.opts>-Xdoclint:none</javadoc.opts>
      </properties>
    </profile>
    <profile>
      <id>ci</id>
      <properties>
        <user.home>/home/jenkins</user.home>
        <fabric8.namespace>syndesis-ci</fabric8.namespace>
        <fabric8.mode>openshift</fabric8.mode>
      </properties>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-failsafe-plugin</artifactId>
            <executions>
              <execution>
                <goals>
                  <goal>integration-test</goal>
                  <goal>verify</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>deploy</id>
      <activation>
        <property>
          <name>deploy</name>
        </property>
      </activation>
      <build>
        <defaultGoal>clean package</defaultGoal>
      </build>
    </profile>
    <profile>
      <id>non-m2e</id>
      <activation>
        <!-- active only when not running under M2E in Eclipse -->
        <property>
          <name>!m2e.version</name>
        </property>
      </activation>
      <build>
        <plugins>
          <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
              <compilerId>javac-with-errorprone</compilerId>
              <forceJavacCompilerUse>true</forceJavacCompilerUse>
              <compilerArgs>
                <arg>-Xlint:all</arg>
                <arg>-Xlint:-deprecation</arg>
                <arg>-Xlint:-processing</arg>
                <arg>-Xlint:-serial</arg>
                <arg>-Werror</arg>
                <arg>-XepDisableWarningsInGeneratedCode</arg>
                <arg>-implicit:none</arg>
              </compilerArgs>
            </configuration>
            <dependencies>
              <dependency>
                <groupId>org.codehaus.plexus</groupId>
                <artifactId>plexus-compiler-javac-errorprone</artifactId>
                <version>2.8.2</version>
              </dependency>
              <!-- override plexus-compiler-javac-errorprone's dependency on
               Error Prone with the latest version -->
              <dependency>
                <groupId>com.google.errorprone</groupId>
                <artifactId>error_prone_core</artifactId>
                <version>2.1.2</version>
              </dependency>
            </dependencies>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>

</project>
