<?xml version="1.0" encoding="UTF-8"?>
<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">

    <!--
        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.
    -->

    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>org.apache.camel</groupId>
        <artifactId>karaf</artifactId>
        <version>2.10.7</version>
        <relativePath>..</relativePath>
    </parent>

    <groupId>org.apache.camel.karaf</groupId>
    <artifactId>apache-camel</artifactId>
    <packaging>pom</packaging>
    <name>Camel :: Platforms :: Apache Karaf :: Features</name>

    <!-- some of the bundles is located at: http://repo1.maven.org/maven2/org/apache/servicemix/bundles/ -->
    <properties>
      <ant-bundle-version>1.7.0_6</ant-bundle-version>
      <antlr-bundle-version>2.7.7_5</antlr-bundle-version>
      <aopalliance-bundle-version>1.0_6</aopalliance-bundle-version>
      <asm2-bundle-version>2.2.3_5</asm2-bundle-version>
      <avalon-bundle-version>4.3.1_1</avalon-bundle-version>
      <bcel-bundle-version>5.2_4</bcel-bundle-version>
      <bcpg-jdk16-bundle-version>1.46_2</bcpg-jdk16-bundle-version>
      <cglib-version>2.1_3_7</cglib-version>
      <cometd-java-server-bundle-version>2.3.1_2</cometd-java-server-bundle-version>
      <commons-beanutils-bundle-version>1.8.3_1</commons-beanutils-bundle-version>
      <commons-csv-version>1.0-r706900_3</commons-csv-version>
      <commons-daemon-version>1.0.5</commons-daemon-version>
      <commons-digester-version>2.1</commons-digester-version>
      <commons-httpclient-bundle-version>3.1_7</commons-httpclient-bundle-version>
      <commons-io-bundle-version>1.4_3</commons-io-bundle-version>
      <commons-jxpath-version>1.3</commons-jxpath-version>
      <commons-math-version>2.2</commons-math-version>
      <commons-dbcp-bundle-version>1.4_3</commons-dbcp-bundle-version>
      <commons-lang-version-xmljson>2.5</commons-lang-version-xmljson>
      <dom4j-bundle-version>1.6.1_5</dom4j-bundle-version>
      <el-api-1.0-version>1.0.1</el-api-1.0-version>
      <ezmorph-bundle-version>1.0.6_1</ezmorph-bundle-version>
      <fastinfoset-version>1.2.7_4</fastinfoset-version>
      <features.file>features.xml</features.file>
      <flatpack-bundle-version>3.2.0_2</flatpack-bundle-version>
      <felix-configadmin-version>1.2.4</felix-configadmin-version>
      <felix-framework-version>2.0.5</felix-framework-version>
      <fop-bundle-version>1.0_3</fop-bundle-version>
      <freemarker-bundle-version>2.3.19_1</freemarker-bundle-version>
      <geronimo-el-version>1.0.1</geronimo-el-version>
      <geronimo-ws-metadata-spec-version>1.1.3</geronimo-ws-metadata-spec-version>
      <gernimo-annotation-spec-version>1.1.1</gernimo-annotation-spec-version>
      <gernimo-jaxws22-spec-version>1.1</gernimo-jaxws22-spec-version>
      <guice-bundle-version>2.0_2</guice-bundle-version>
      <hadoop-bundle-version>1.0.3_1</hadoop-bundle-version>
      <hapi-bundle-version>0.5.1_5</hapi-bundle-version>
      <hibernate-validator-bundle-version>4.1.0.Final_3</hibernate-validator-bundle-version>
      <ibatis-bundle-version>2.3.4.726_4</ibatis-bundle-version>
      <irclib-bundle-version>1.10_5</irclib-bundle-version>
      <isorelax-bundle-version>20050913_4</isorelax-bundle-version>
      <java-apns-bundle-version>0.1.6_3</java-apns-bundle-version>
      <jaxb-bundle-version>2.2.1.1_2</jaxb-bundle-version>
      <jasypt-bundle-version>1.9.0_1</jasypt-bundle-version>
      <jetty6-bundle-version>6.1.26_4</jetty6-bundle-version>
      <jexcelapi-bundle-version>2.4.2_4</jexcelapi-bundle-version>
      <javax.el-bundle-version>2.1.0</javax.el-bundle-version>
      <jdom-bundle-version>1.1_4</jdom-bundle-version>
      <jing-bundle-version>20030619_5</jing-bundle-version>
      <jodatime-bundle-version>1.6.2</jodatime-bundle-version>
      <jodatime2-bundle-version>2.1</jodatime2-bundle-version>
      <josql-bundle-version>1.5_5</josql-bundle-version>
      <jsch-bundle-version>0.1.48_1</jsch-bundle-version>
      <jsendnsca-bundle-version>1.3.1_3</jsendnsca-bundle-version>
      <jsonlib-bundle-version>2.4_1</jsonlib-bundle-version>
      <jsp-api-2.1-version>1.0.1</jsp-api-2.1-version>
      <juel-bundle-version>2.1.2_2</juel-bundle-version>
      <junit-bundle-version>4.10_1</junit-bundle-version>
      <jsmpp-bundle-version>2.1.0_4</jsmpp-bundle-version>
      <kxml2-bundle-version>2.3.0_2</kxml2-bundle-version>
      <lucene-bundle-version>3.6.0_1</lucene-bundle-version>
      <mvel-bundle-version>2.0.18_3</mvel-bundle-version>
      <mina-bundle-version>1.1.7_6</mina-bundle-version>
      <neethi-bundle-version>3.0.1</neethi-bundle-version>
      <oro-bundle-version>2.0.8_6</oro-bundle-version>
      <opensaml-version>2.5.1_2</opensaml-version>
      <oscache-bundle-version>2.4_5</oscache-bundle-version>
      <protobuf-java-bundle-version>2.3.0_3</protobuf-java-bundle-version>
      <quartz-bundle-version>1.8.6_1</quartz-bundle-version>
      <qpid-bundle-version>0.16_1</qpid-bundle-version>
      <regexp-bundle-version>1.3_3</regexp-bundle-version>
      <rhino-bundle-version>1.7R2_3</rhino-bundle-version>
      <rome-bundle-version>1.0_3</rome-bundle-version>
      <saxon-bundle-version>9.3.0.11_2</saxon-bundle-version>
      <scala-bundle-version>2.9.1_3</scala-bundle-version>
      <scriptengines-version>1.1</scriptengines-version>
      <servlet-api-2.5-version>1.1.2</servlet-api-2.5-version>
      <serp-bundle-version>1.13.1_4</serp-bundle-version>
      <smack-bundle-version>3.2.1_1</smack-bundle-version>
      <solrj-bundle-version>3.6.0_1</solrj-bundle-version>
      <spring-osgi-version>1.2.1</spring-osgi-version>
      <spring-castor-bundle-version>1.2.0</spring-castor-bundle-version>
      <spymemcached-bundle-version>2.5_2</spymemcached-bundle-version>
      <stringtemplate-bundle-version>3.2_5</stringtemplate-bundle-version>
      <tagsoup-bundle-version>1.2_5</tagsoup-bundle-version>
      <twitter4j-bundle-version>2.2.5_2</twitter4j-bundle-version>
      <velocity-bundle-version>1.7_5</velocity-bundle-version>
      <xalan-bundle-version>2.7.1_6</xalan-bundle-version>
      <xerces-bundle-version>2.9.1_5</xerces-bundle-version>
      <xmlbeans-bundle-version>2.6.0_2</xmlbeans-bundle-version>
      <xmlschema-version>2.0</xmlschema-version>
      <xmlresolver-bundle-version>1.2_5</xmlresolver-bundle-version>
      <xpp3-bundle-version>1.1.4c_6</xpp3-bundle-version>
      <xstream-bundle-version>1.4.2_2</xstream-bundle-version>
      <werken-xpath-bundle-version>0.9.4_5</werken-xpath-bundle-version>
      <woodstox-core-bundle-version>${woodstox-version}</woodstox-core-bundle-version>
      <stax2-api-bundle-version>3.1.1</stax2-api-bundle-version>
      <saaj-impl-version>1.3.2_2</saaj-impl-version>
      <wsdl4j-bundle-version>1.6.2_6</wsdl4j-bundle-version>
    </properties>
    
    <!-- The validate plugin will export these provided dependencies bundles' export packages first -->  
    <dependencies>
        <dependency>
            <groupId>org.osgi</groupId>
            <artifactId>org.osgi.core</artifactId>
            <version>4.2.0</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.ops4j.pax.logging</groupId>
            <artifactId>pax-logging-api</artifactId>
            <version>${pax-logging-version}</version>
            <scope>provided</scope>
        </dependency>        
        <dependency>
            <groupId>org.ops4j.pax.logging</groupId>
            <artifactId>pax-logging-service</artifactId>
            <version>${pax-logging-version}</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.felix</groupId>
            <artifactId>org.apache.felix.framework</artifactId>
            <version>${felix-framework-version}</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.felix</groupId>
            <artifactId>org.apache.felix.configadmin</artifactId>
            <version>${felix-configadmin-version}</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.aries.blueprint</groupId>
            <artifactId>org.apache.aries.blueprint</artifactId>
            <version>${aries-blueprint-version}</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.karaf.shell</groupId>
            <artifactId>org.apache.karaf.shell.console</artifactId>
            <version>${karaf-version}</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>

    <build>
      <resources>
        <resource>
          <directory>src/main/resources</directory>
          <filtering>true</filtering>
        </resource>
      </resources>
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-resources-plugin</artifactId>
          <executions>
             <execution>
                <id>filter</id>
                <phase>generate-resources</phase>
                <goals>
                  <goal>resources</goal>
                </goals>
             </execution>
          </executions>
        </plugin>
        <plugin>
          <groupId>org.codehaus.mojo</groupId>
            <artifactId>build-helper-maven-plugin</artifactId>
            <executions>
              <execution>
                <id>attach-artifacts</id>
                <phase>package</phase>
                <goals>
                  <goal>attach-artifact</goal>
                </goals>
                <configuration>
                  <artifacts>
                    <artifact>
                      <file>target/classes/features.xml</file>
                       <type>xml</type>
                       <classifier>features</classifier>
                     </artifact>
                   </artifacts>
                 </configuration>
               </execution>
           </executions>
         </plugin>
      </plugins>
    </build>
 
    <profiles>
       <profile>
          <id>snapshot</id>
          <repositories>
            <repository>
              <id>pax.snapshot.repo</id>
              <name>PAX SNAPSHOT Deploy Repository </name>
              <url>https://oss.sonatype.org/content/repositories/ops4j-snapshots/</url>
              <releases>
                <enabled>false</enabled>
              </releases>
              <snapshots>
                <enabled>true</enabled>
              </snapshots>
            </repository>
          </repositories>
       </profile>
       <profile>
          <id>validate</id>
          <!-- Added the repository for the google script -->
          <repositories>
            <repository>
              <id>google.script.repo</id>
              <name>Google Script Engine Deploy Repository </name>
              <url>http://scriptengines.googlecode.com/svn/m2-repo/</url>
              <releases>
                <enabled>true</enabled>
              </releases>
              <snapshots>
                <enabled>false</enabled>
              </snapshots>
            </repository>
          </repositories>
          <build>
             <plugins>
                <plugin>
                   <groupId>org.apache.karaf.tooling</groupId>
                   <artifactId>features-maven-plugin</artifactId>
                   <version>${karaf-version}</version>
                   <configuration>
                       <file>${project.build.directory}/classes/${features.file}</file>
                       <karafConfig>${project.build.directory}/classes/config.properties</karafConfig>
                       <jreVersion>jre-1.6</jreVersion>
                   </configuration>
                   <executions>
                     <execution>
                       <id>validate</id>
                       <phase>process-resources</phase>
                       <goals>
                         <goal>validate</goal>
                       </goals>
                     </execution>
                   </executions>
               </plugin>
              </plugins>
           </build>
        </profile>
     </profiles>

</project>
