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

  <modelVersion>4.0.0</modelVersion>

  <groupId>org.apache.camel</groupId>
  <artifactId>camel</artifactId>
  <version>2.12.0</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>camel-2.12.0</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>
              </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.1</version>
          <configuration>
            <localCheckout>true</localCheckout>
            <pushChanges>true</pushChanges>
            <tagNameFormat>@{project.artifactId}-@{project.version}</tagNameFormat>
            <useReleaseProfile>false</useReleaseProfile>
            <preparationGoals>clean install</preparationGoals>
            <goals>deploy</goals>
            <arguments>-Papache-release,enable-schemagen,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>apache-release</id>
      <activation>
        <property>
          <name>apache-release</name>
        </property>
      </activation>
      <build>
        <plugins>
          <!-- waiting for release -->
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-assembly-plugin</artifactId>
            <executions>
              <execution>
                <goals>
                  <goal>single</goal>
                </goals>
                <phase>package</phase>
                <configuration>
                  <runOnlyAtExecutionRoot>true</runOnlyAtExecutionRoot>
                  <descriptorRefs>
                    <descriptorRef>source-release</descriptorRef>
                  </descriptorRefs>
                </configuration>
              </execution>
            </executions>
            <dependencies>
              <dependency>
                <!-- apache version not yet released -->
                <!--<groupId>org.apache</groupId> -->
                <groupId>org.apache.geronimo.genesis</groupId>
                <artifactId>apache-source-release-assembly-descriptor</artifactId>
                <!-- apache version not yet known -->
                <version>2.0</version>
              </dependency>
            </dependencies>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>
</project>
