<?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>17</version>
  </parent>

  <modelVersion>4.0.0</modelVersion>

  <groupId>org.apache.camel</groupId>
  <artifactId>camel</artifactId>
  <version>2.18-SNAPSHOT</version>
  <packaging>pom</packaging>
  <name>Camel</name>
  <description>Camel build POM</description>
  <url>http://camel.apache.org</url>
  <inceptionYear>2007</inceptionYear>

  <prerequisites>
    <maven>3.2.5</maven>
  </prerequisites>

  <properties>
    <!-- enforce to require using at least this maven version -->
    <maven-enforcer-require-maven-version>3.1.1</maven-enforcer-require-maven-version>

    <!-- unify the encoding for all the modules -->
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>

    <site-repo-url>scpexe://people.apache.org/www/camel.apache.org/maven/</site-repo-url>
    <jdk.version>1.8</jdk.version>
    <compiler.fork>false</compiler.fork>

    <maven-compiler-plugin-version>3.5.1</maven-compiler-plugin-version>
    <maven-surefire-plugin-version>2.19.1</maven-surefire-plugin-version>

    <!-- eclipse plugin need the jaxb in this pom.xml file -->
    <!-- Make sure to keep JAXB version up to date in parent/pom.xml in the bottom of the file -->
    <jaxb-version>2.2.11</jaxb-version>
    <errorprone-version>2.5</errorprone-version>
  </properties>

  <mailingLists>
    <mailingList>
      <name>Development List</name>
      <subscribe>dev-subscribe@camel.apache.org</subscribe>
      <unsubscribe>dev-unsubscribe@camel.apache.org</unsubscribe>
      <post>dev@camel.apache.org</post>
    </mailingList>
    <mailingList>
      <name>User List</name>
      <subscribe>users-subscribe@camel.apache.org</subscribe>
      <unsubscribe>users-unsubscribe@camel.apache.org</unsubscribe>
      <post>users@camel.apache.org</post>
    </mailingList>
    <mailingList>
      <name>Commits List</name>
      <subscribe>commits-subscribe@camel.apache.org</subscribe>
      <unsubscribe>commits-unsubscribe@camel.apache.org</unsubscribe>
      <post>commits@camel.apache.org</post>
    </mailingList>
  </mailingLists>

  <developers>
    <developer>
      <name>The Apache Camel Team</name>
      <email>dev@camel.apache.org</email>
      <url>http://camel.apache.org</url>
      <organization>Apache Software Foundation</organization>
      <organizationUrl>http://apache.org/</organizationUrl>
      <properties>
        <picUrl>http://camel.apache.org/banner.data/apache-camel-7.png</picUrl>
      </properties>
    </developer>
  </developers>

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

  <distributionManagement>
    <site>
      <id>apache.website</id>
      <url>${site-repo-url}</url>
    </site>
  </distributionManagement>

  <!-- Comment out the snapshot repositories as we don't need them now -->
  <repositories>
    <repository>
      <id>apache.snapshots</id>
      <url>http://repository.apache.org/snapshots/</url>
      <name>Apache Snapshot Repo</name>
      <snapshots>
        <enabled>true</enabled>
      </snapshots>
      <releases>
        <enabled>false</enabled>
      </releases>
    </repository>
  </repositories>

  <pluginRepositories>
    <pluginRepository>
      <id>apache.snapshots</id>
      <url>http://repository.apache.org/snapshots/</url>
      <snapshots>
        <enabled>true</enabled>
      </snapshots>
      <releases>
        <enabled>false</enabled>
      </releases>
    </pluginRepository>
  </pluginRepositories>

  <modules>
    <module>parent</module>
    <module>etc</module>
    <module>buildingtools</module>
    <module>camel-core</module>
    <module>components</module>
    <module>tooling</module>
    <module>platforms</module>
    <module>tests</module>
    <module>examples</module>
  </modules>

  <scm>
    <connection>scm:git:http://git-wip-us.apache.org/repos/asf/camel.git</connection>
    <developerConnection>scm:git:https://git-wip-us.apache.org/repos/asf/camel.git</developerConnection>
    <url>https://fisheye6.atlassian.com/browse/~br=master/camel-git</url>
    <tag>HEAD</tag>
  </scm>

  <build>
    <defaultGoal>install</defaultGoal>

    <!-- enforce maven version -->
    <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-enforcer-plugin</artifactId>
          <version>1.4</version>
          <executions>
            <execution>
              <id>enforce-maven</id>
              <goals>
                <goal>enforce</goal>
              </goals>
              <configuration>
                <rules>
                  <requireMavenVersion>
                    <version>${maven-enforcer-require-maven-version}</version>
                  </requireMavenVersion>
                </rules>
              </configuration>
            </execution>
          </executions>
        </plugin>
    </plugins>

    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-eclipse-plugin</artifactId>
          <version>2.10</version>
          <dependencies>
            <dependency>
              <groupId>org.apache.camel</groupId>
              <artifactId>camel-buildtools</artifactId>
              <version>${project.version}</version>
            </dependency>
          </dependencies>
          <configuration>
            <downloadSources>true</downloadSources>
            <downloadJavadocs>false</downloadJavadocs>
          </configuration>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-idea-plugin</artifactId>
          <version>2.2.1</version>
          <dependencies>
            <dependency>
              <groupId>org.apache.camel</groupId>
              <artifactId>camel-buildtools</artifactId>
              <version>${project.version}</version>
            </dependency>
          </dependencies>
          <configuration>
            <downloadSources>true</downloadSources>
            <downloadJavadocs>false</downloadJavadocs>
          </configuration>
        </plugin>

          <plugin>
            <groupId>org.apache.rat</groupId>
            <artifactId>apache-rat-plugin</artifactId>
            <configuration>
              <excludeSubProjects>false</excludeSubProjects>
              <excludes>
                <exclude>**/README</exclude>
                <exclude>**/README.txt</exclude>
                <exclude>**/README.md</exclude>
                <exclude>**/ReadMe.md</exclude>
                <exclude>**/resources/**/*.xsd</exclude>
                <exclude>**/webapp/js/**/*</exclude>
                <exclude>**/test/resources/**/*</exclude>
                <exclude>**/test/data*/**/*</exclude>
                <exclude>.gitignore</exclude>
                <exclude>.git/**/*</exclude>
                <exclude>**/*.adoc</exclude>
                <exclude>**/*.md</exclude>
                <!-- tooling/camel-manual/src/styles/print.css use a different license -->
                <exclude>**/src/styles/print.css</exclude>
                <!-- tooling for component docs -->
                <exclude>**/component-header.mvel</exclude>
                <exclude>**/component-options.mvel</exclude>
                <exclude>**/endpoint-options.mvel</exclude>
                <!-- cxf does not handle comments here -->
                <exclude>**/src/main/resources/META-INF/cxf/cxf.extension</exclude>
                <exclude>**/src/main/resources/META-INF/cxf/bus-extensions.txt</exclude>
                <!-- ignore the api signatures files -->
                <exclude>**/src/signatures/*.txt</exclude>
                <!-- camel website and user-manual -->
                <exclude>**/node/**</exclude>
                <exclude>**/node_modules/**</exclude>
                <exclude>**/npm-shrinkwrap.json</exclude>
                <exclude>**/package.json</exclude>
                <exclude>**/user-manual/**</exclude>
                <!-- generated files -->
                <exclude>**/target/**/*</exclude>
                <exclude>**/eclipse-classes/**/*</exclude>
                <exclude>**/.*</exclude>
                <exclude>**/.settings/**/*</exclude>
                <exclude>**/*.iml</exclude>
                <exclude>**/.idea/**/*</exclude>
                <exclude>**/avro/**/*.avpr</exclude>
                <exclude>**/OSGI-INF/bundle.info</exclude>
                <exclude>**/test_rsa*</exclude>
                <exclude>**/data*/**/*.xml</exclude>
                <exlucde>**/*.log</exlucde>
                <exclude>**/id_file</exclude>
                <exclude>**/dependency-reduced-pom.xml</exclude>
                <exclude>**/grape.json</exclude>
                <exclude>**/Dropbox_API_Terms_and_Conditions.txt</exclude>
                <exclude>**/MerchandiseRestResource.apxc</exclude>
                <exclude>**/file-sig-api.txt</exclude>
              </excludes>
            </configuration>
          </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-release-plugin</artifactId>
          <!-- see http://jira.codehaus.org/browse/MRELEASE-812 -->
          <version>2.4.2</version>
          <dependencies>
            <dependency>
              <groupId>org.apache.maven.scm</groupId>
              <artifactId>maven-scm-provider-gitexe</artifactId>
              <version>1.9</version>
            </dependency>
          </dependencies>
          <configuration>
            <localCheckout>true</localCheckout>
            <pushChanges>true</pushChanges>
            <tagNameFormat>@{project.artifactId}-@{project.version}</tagNameFormat>
            <useReleaseProfile>false</useReleaseProfile>
            <preparationGoals>clean install</preparationGoals>
            <goals>deploy</goals>
            <!-- The profile we want to use when doing the release -->
            <arguments>-Prelease,apache-release,enable-schemagen,apt,sourcecheck,hibernate</arguments>
            <autoVersionSubmodules>true</autoVersionSubmodules>
          </configuration>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>

  <profiles>
    <profile>
      <id>assembly</id>
      <activation>
        <property>
          <name>!noassembly</name>
        </property>
      </activation>
      <modules>
        <module>apache-camel</module>
      </modules>
    </profile>
    <profile>
      <id>setup.eclipse</id>
      <!-- set up the eclipse workspace and generate the .classpath and .project
        files for modules -->
      <properties>
        <eclipse.workspace.dir>${basedir}/../workspace</eclipse.workspace.dir>
        <maven.test.skip.exec>true</maven.test.skip.exec>
      </properties>
      <build>
        <defaultGoal>package</defaultGoal>
        <pluginManagement>
          <plugins>
            <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-compiler-plugin</artifactId>
              <version>${maven-compiler-plugin-version}</version>
              <configuration>
                <source>${jdk.version}</source>
                <target>${jdk.version}</target>
                <maxmem>512M</maxmem>
                <fork>${compiler.fork}</fork>
              </configuration>
            </plugin>
          </plugins>
        </pluginManagement>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-eclipse-plugin</artifactId>
            <inherited>false</inherited>
            <executions>
              <execution>
                <id>setup.eclipse.workspace</id>
                <phase>process-test-sources</phase>
                <goals>
                  <goal>configure-workspace</goal>
                </goals>
                <configuration>
                  <workspace>${eclipse.workspace.dir}</workspace>
                  <workspaceCodeStylesURL>file:etc/eclipse/CamelCodeFormatter.xml</workspaceCodeStylesURL>
                </configuration>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-antrun-plugin</artifactId>
            <inherited>false</inherited>
            <executions>
              <execution>
                <id>setup.workspace</id>
                <phase>validate</phase>
                <configuration>
                  <target>
                    <path id="ecp.ws.path" location="${eclipse.workspace.dir}" />
                    <property name="full.eclipse.workspace" refid="ecp.ws.path" />
                    <path path="${basedir}/etc" id="etc.path" />

                    <path id="buildtools.classpath">
                        <fileset dir="${basedir}/buildingtools/target" includes="*.jar" />
                        <pathelement location="${basedir}/buildingtools/target/classes" />
                        <pathelement location="${basedir}/buildingtools/src/main/resources" />
                    </path>

                    <whichresource resource="/camel-eclipse-pmd" property="pmd.url" classpathref="buildtools.classpath" />
                    <whichresource resource="/camel-pmd-ruleset.xml" property="pmdruleset.url" classpathref="buildtools.classpath" />
                    <whichresource resource="/camel-eclipse-checkstyle" property="eclipse.checkstyle.url" classpathref="buildtools.classpath" />
                    <whichresource resource="/camel-checkstyle.xml" property="checkstyle.url" classpathref="buildtools.classpath" />

                    <mkdir dir="${full.eclipse.workspace}/.metadata/.plugins/org.eclipse.core.runtime/.settings" />
                    <mkdir dir="${full.eclipse.workspace}/.metadata/.plugins/net.sf.eclipsecs.core" />
                    <mkdir dir="${full.eclipse.workspace}/.metadata/.plugins/net.sourceforge.pmd.eclipse" />

                    <get src="${checkstyle.url}" dest="${full.eclipse.workspace}/camel-checkstyle.xml" />

                    <!-- Add checkstyle config -->
                    <copy file="${basedir}/etc/eclipse/template.checkstyle-config.xml" tofile="${full.eclipse.workspace}/.metadata/.plugins/net.sf.eclipsecs.core/checkstyle-config.xml" overwrite="no">
                      <filterset>
                        <filter token="CHECKSTYLE_CONFIG_FILE" value="${full.eclipse.workspace}/camel-checkstyle.xml" />
                        <filter token="APACHE_HEADER_FILE" value="${full.eclipse.workspace}/apache-header.txt" />
                      </filterset>
                    </copy>

                    <xslt style="${basedir}/etc/eclipse/addcheckstyle.xsl" in="${full.eclipse.workspace}/.metadata/.plugins/net.sf.eclipsecs.core/checkstyle-config.xml" out="${full.eclipse.workspace}/.metadata/.plugins/net.sf.eclipsecs.core/checkstyle-config.xml.new">
                      <param name="checkstyleconfig" expression="${full.eclipse.workspace}/camel-checkstyle.xml" />
                    </xslt>
                    <copy file="${full.eclipse.workspace}/.metadata/.plugins/net.sf.eclipsecs.core/checkstyle-config.xml.new" tofile="${full.eclipse.workspace}/.metadata/.plugins/net.sf.eclipsecs.core/checkstyle-config.xml" overwrite="yes" />

                    <!-- Add code format rules -->
                    <concat destfile="${full.eclipse.workspace}/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.core.prefs" append="true" fixlastline="true">
                      <filelist dir="${basedir}/etc/eclipse" files="org.eclipse.jdt.core.prefs" />
                    </concat>
                    <loadfile property="eclipse.code.format" srcFile="${basedir}/etc/eclipse/CamelCodeFormatter.xml" />
                    <loadfile property="eclipse.code.templates" srcFile="${basedir}/etc/eclipse/codetemplates.xml" />
                    <loadfile property="eclipse.camel.java.code.templates" srcFile="${basedir}/etc/eclipse/camel_java_templates.xml" />
                    <loadfile property="eclipse.camel.xml.code.templates" srcFile="${basedir}/etc/eclipse/camel_xml_templates.xml" />
                    <propertyfile file="${full.eclipse.workspace}/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.ui.prefs">
                      <entry key="formatter_profile" value="Camel Java Conventions" />
                      <entry key="org.eclipse.jdt.ui.formatterprofiles" value="${eclipse.code.format}" />
                      <entry key="org.eclipse.jdt.ui.text.custom_code_templates" value="${eclipse.code.templates}" />

                      <!-- Add Camel templates for Java DSL -->
                      <entry key="org.eclipse.jdt.ui.text.custom_templates" value="${eclipse.camel.java.code.templates}" />

                      <!-- Add import order -->
                      <entry key="org.eclipse.jdt.ui.importorder" value="java;javax;org.w3c;org.xml;w3c;" />
                      <!-- Sort order -->
                      <entry key="org.eclipse.jdt.ui.visibility.order" value="B,R,D,V," />
                      <entry key="outlinesortoption" value="T,SF,F,SI,I,C,SM,M," />
                      <entry key="org.eclipse.jdt.ui.enable.visibility.order" value="true" />
                    </propertyfile>
                    <propertyfile file="${full.eclipse.workspace}/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.wst.xml.ui.prefs">
                      <entry key="eclipse.preferences.version" value="1" />
                      <!-- Add Camel templates for Spring DSL -->
                      <entry key="org.eclipse.wst.sse.ui.custom_templates" value="${eclipse.camel.xml.code.templates}" />
                    </propertyfile>
                  </target>
                </configuration>
                <goals>
                  <goal>run</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>

    <profile>
      <!-- When not on the Mac, we need to add tools.jar to the antrun plugin
        for schemagen to work -->
      <id>not-mac</id>
      <activation>
        <os>
          <family>!mac</family>
        </os>
      </activation>
      <build>
        <pluginManagement>
          <plugins>
            <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-antrun-plugin</artifactId>
              <dependencies>
                <dependency>
                  <groupId>com.sun.xml.bind</groupId>
                  <artifactId>jaxb-core</artifactId>
                  <version>${jaxb-version}</version>
                </dependency>
                <dependency>
                  <groupId>com.sun.xml.bind</groupId>
                  <artifactId>jaxb-impl</artifactId>
                  <version>${jaxb-version}</version>
                </dependency>
                <dependency>
                  <groupId>com.sun.xml.bind</groupId>
                  <artifactId>jaxb-jxc</artifactId>
                  <version>${jaxb-version}</version>
                </dependency>
                <dependency>
                  <groupId>xerces</groupId>
                  <artifactId>xercesImpl</artifactId>
                  <version>2.11.0</version>
                </dependency>
                <dependency>
                  <groupId>ant-contrib</groupId>
                  <artifactId>ant-contrib</artifactId>
                  <version>1.0b3</version>
                  <exclusions>
                    <exclusion>
                      <groupId>ant</groupId>
                      <artifactId>ant</artifactId>
                    </exclusion>
                  </exclusions>
                </dependency>
                <dependency>
                  <groupId>org.apache.ant</groupId>
                  <artifactId>ant-trax</artifactId>
                  <version>1.8.0</version>
                </dependency>
                <dependency>
                  <groupId>org.apache.ant</groupId>
                  <artifactId>ant-nodeps</artifactId>
                  <version>1.8.1</version>
                </dependency>
                <dependency>
                  <groupId>com.sun</groupId>
                  <artifactId>tools</artifactId>
                  <version>1.5.0</version>
                  <scope>system</scope>
                  <systemPath>${java.home}/../lib/tools.jar</systemPath>
                </dependency>
              </dependencies>
            </plugin>
          </plugins>
        </pluginManagement>
      </build>
    </profile>

    <profile>
      <id>integration</id>
      <!--The profile for running the unit and integration test -->
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>${maven-surefire-plugin-version}</version>
            <configuration>
              <forkedProcessTimeoutInSeconds>300</forkedProcessTimeoutInSeconds>
              <childDelegation>false</childDelegation>
              <useFile>true</useFile>
              <failIfNoTests>false</failIfNoTests>
              <runOrder>alphabetical</runOrder>
              <systemPropertyVariables>
                <derby.stream.error.file>target/derby.log</derby.stream.error.file>
                <java.awt.headless>${java.awt.headless}</java.awt.headless>
              </systemPropertyVariables>
              <includes>
                <include>**/*Test.*</include>
                <include>**/*IntegrationTest.*</include>
              </includes>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>

    <profile>
      <id>deploy</id>
      <build>
        <defaultGoal>deploy</defaultGoal>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-source-plugin</artifactId>
            <executions>
              <execution>
                <id>attach-sources</id>
                <goals>
                  <goal>jar</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-javadoc-plugin</artifactId>
            <executions>
              <execution>
                <id>attach-javadocs</id>
                <goals>
                  <goal>jar</goal>
                </goals>
                <configuration>
                  <additionalparam>${javadoc.opts}</additionalparam>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>

    <profile>
      <id>source-jar</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-source-plugin</artifactId>
            <executions>
              <execution>
                <id>attach-sources</id>
                <goals>
                  <goal>jar</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
       <id>release</id>
       <activation>
        <property>
          <name>release</name>
        </property>
      </activation>
      <build>
        <plugins>
          <!-- We want to deploy the artifact to a staging location for perusal -->
          <plugin>
            <inherited>true</inherited>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-deploy-plugin</artifactId>
            <configuration>
              <updateReleaseInfo>true</updateReleaseInfo>
            </configuration>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-source-plugin</artifactId>
            <executions>
              <execution>
                <id>attach-sources</id>
                <goals>
                  <goal>jar</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-javadoc-plugin</artifactId>
            <executions>
              <execution>
                <id>attach-javadocs</id>
                <goals>
                  <goal>jar</goal>
                </goals>
              </execution>
            </executions>
            <configuration>
              <additionalparam>${javadoc.opts}</additionalparam>
            </configuration>
          </plugin>
          <!-- We want to sign the artifact, the POM, and all attached artifacts -->
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-gpg-plugin</artifactId>
            <configuration>
              <passphrase>${gpg.passphrase}</passphrase>
              <useAgent>${gpg.useagent}</useAgent>
            </configuration>
            <executions>
              <execution>
                <goals>
                  <goal>sign</goal>
                </goals>
              </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>
  </profiles>
</project>
