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

  <modelVersion>4.0.0</modelVersion>

  <groupId>org.apache.camel</groupId>
  <artifactId>camel</artifactId>
  <version>2.12.6-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.0.4</maven>
  </prerequisites>

  <properties>
    <!-- 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.6</jdk.version>
    <compiler.fork>1.6</compiler.fork>

    <!-- eclipse plugin need the jaxb in this pom.xml file -->
    <jaxb-version>2.1.13</jaxb-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>

  <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>buildingtools</module>
    <module>camel-core</module>
    <module>components</module>
    <module>platforms</module>
    <module>tooling</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>

    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-eclipse-plugin</artifactId>
          <version>2.9</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</version>
          <configuration>
            <downloadSources>true</downloadSources>
            <downloadJavadocs>false</downloadJavadocs>
          </configuration>
        </plugin>

          <plugin>
            <groupId>org.apache.rat</groupId>
            <artifactId>apache-rat-plugin</artifactId>
            <version>0.9</version>
            <configuration>
              <excludeSubProjects>false</excludeSubProjects>
              <excludes>
                <exclude>**/README</exclude>
                <exclude>**/README.txt</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>
                <!-- tooling/camel-manual/src/styles/print.css use a different
                  license -->
                <exclude>**/src/styles/print.css</exclude>
                <!-- cxf does not handle comments here -->
                <excludes>**/src/main/resources/META-INF/cxf/cxf.extension</excludes>
                <excludes>**/src/main/resources/META-INF/cxf/bus-extensions.txt</excludes>
                <!-- 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>**/examples/*/src/**/data/**/*.xml</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>
            <arguments>-Prelease,enable-schemagen,apt,sourcecheck,validate,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>
      </properties>
      <build>
        <defaultGoal>process-test-sources</defaultGoal>
        <pluginManagement>
          <plugins>
            <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-compiler-plugin</artifactId>
              <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>add-maven-repo</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>
            <dependencies>
              <dependency>
                <groupId>org.apache.camel</groupId>
                <artifactId>camel-buildtools</artifactId>
                <version>${project.version}</version>
              </dependency>
            </dependencies>
            <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" />

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

                    <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>
              <version>1.6</version>
              <dependencies>
                <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-xjc</artifactId>
                  <version>${jaxb-version}</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>
            <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>
              </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>
          </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>
  </profiles>
</project>
