<?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.6.0</version>
    </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>
      <abdera-bundle-version>0.4.0-incubating_3</abdera-bundle-version>
      <ant-bundle-version>1.7.0_3</ant-bundle-version>
      <antlr-bundle-version>2.7.7_2</antlr-bundle-version>
      <aopalliance-bundle-version>1.0_3</aopalliance-bundle-version>
      <asm-bundle-version>2.2.3_3</asm-bundle-version>
      <aws-java-sdk-bundle-version>1.1.1_1</aws-java-sdk-bundle-version>
      <bcel-bundle-version>5.2_2</bcel-bundle-version>
      <cglib-version>2.1_3_6</cglib-version>
      <cometd-java-server-bundle-version>1.0.1_1</cometd-java-server-bundle-version>
      <commons-beanutils-bundle-version>1.7.0_3</commons-beanutils-bundle-version>
      <commons-csv-version>1.0-r706899_3</commons-csv-version>
      <commons-codec-version>1.4</commons-codec-version>
      <commons-codec-bundle-version>1.3_3</commons-codec-bundle-version>
      <commons-httpclient-bundle-version>3.1_4</commons-httpclient-bundle-version>
      <commons-io-bundle-version>1.3.2_3</commons-io-bundle-version>
      <commons-jxpath-version>1.3</commons-jxpath-version>
      <commons-lang-version>2.4</commons-lang-version>
      <commons-net-version>2.0</commons-net-version>
      <commons-management-version>1.0</commons-management-version>
      <commons-pool-bundle-version>1.5.4_1</commons-pool-bundle-version>
      <dom4j-bundle-version>1.6.1_2</dom4j-bundle-version>
      <dozer-bundle-version>5.3.1</dozer-bundle-version>
      <el-api-1.0-version>1.0.1</el-api-1.0-version>
      <fastinfoset-version>1.2.7_2</fastinfoset-version>
      <features.file>features.xml</features.file>
      <flatpack-bundle-version>3.2.0_1</flatpack-bundle-version>
      <felix.configadmin.version>1.2.4</felix.configadmin.version>
      <felix.framework.version>2.0.5</felix.framework.version>
      <freemarker-bundle-version>2.3.15_3</freemarker-bundle-version>
      <geronimo-el-version>1.0.1</geronimo-el-version>
      <geronimo-jsp-version>1.0.1</geronimo-jsp-version>
      <geronimo-ws-metadata-spec-version>1.1.2</geronimo-ws-metadata-spec-version>
      <gernimo-annotation-spec-version>1.1.1</gernimo-annotation-spec-version>
      <guice-bundle-version>2.0_1</guice-bundle-version>
      <hamcrest-bundle-version>1.2-dev1_1</hamcrest-bundle-version>
      <hapi-bundle-version>0.5.1_3</hapi-bundle-version>
      <hibernate-validator-bundle-version>4.1.0.Final_1</hibernate-validator-bundle-version>
      <httpcore-bundle-version>4.0-alpha6_1</httpcore-bundle-version>
      <ibatis-bundle-version>2.3.4.726_2</ibatis-bundle-version>
      <irclib-bundle-version>1.10_2</irclib-bundle-version>
      <isorelax-bundle-version>20050913_1</isorelax-bundle-version>
      <jackrabbit-version>1.5.3</jackrabbit-version>
      <jaxb-bundle-version>2.2.1.1_1</jaxb-bundle-version>
      <jasypt-bundle-version>1.6_1</jasypt-bundle-version>
      <jexcelapi-bundle-version>2.4.2_2</jexcelapi-bundle-version>
      <javax.el-bundle-version>2.1.0</javax.el-bundle-version>
      <jcr-bundle-version>1.0_2</jcr-bundle-version>
      <jdom-bundle-version>1.1_2</jdom-bundle-version>
      <jettison-bundle-version>1.2</jettison-bundle-version>
      <jing-bundle-version>20030619_1</jing-bundle-version>
      <jibx-bundle-version>1.2.2_1</jibx-bundle-version>
      <jodatime-bundle-version>1.5.2_2</jodatime-bundle-version>
      <josql-bundle-version>1.5_3</josql-bundle-version>
      <jsch-bundle-version>0.1.44_1</jsch-bundle-version>
      <jsendnsca-bundle-version>1.3.1_1</jsendnsca-bundle-version>
      <jsp-api-2.1-version>1.0.1</jsp-api-2.1-version>
      <juel-bundle-version>2.1.2_1</juel-bundle-version>
      <junit-bundle-version>4.7_1</junit-bundle-version>
      <jsmpp-bundle-version>2.1.0_1</jsmpp-bundle-version>
      <lucene-bundle-version>3.0.3_1</lucene-bundle-version>
      <mvel-bundle-version>2.0.8_4</mvel-bundle-version>
      <mina-bundle-version>1.1.7_3</mina-bundle-version>
      <neethi-bundle-version>2.0.4_2</neethi-bundle-version>
      <oro-bundle-version>2.0.8_3</oro-bundle-version>
      <openjpa-bundle-version>1.2.1_2</openjpa-bundle-version>
      <opensaml-version>1.1_3</opensaml-version>
      <oscache-bundle-version>2.4_3</oscache-bundle-version>
      <osgi.compendium.version>4.2.0</osgi.compendium.version>
      <protobuf-java-bundle-version>2.3.0_1</protobuf-java-bundle-version>
      <pax.web.version>0.7.2</pax.web.version>
      <quartz-bundle-version>1.8.3_2</quartz-bundle-version>
      <qpid-bundle-version>0.5.0_2</qpid-bundle-version>
      <quickfix-bundle-version>1.5.0_1</quickfix-bundle-version>
      <regexp-bundle-version>1.3_1</regexp-bundle-version>      
      <rome-bundle-version>1.0_1</rome-bundle-version>
      <saxon-bundle-version>9.1.0.8_1</saxon-bundle-version>
      <scala-bundle-version>2.8.1_1</scala-bundle-version>
      <jaxws.api.version>2.2</jaxws.api.version>
      <servlet-api-2.5-version>1.1.2</servlet-api-2.5-version>
      <serp-bundle-version>1.13.1_2</serp-bundle-version>
      <smack-bundle-version>3.1.0_1</smack-bundle-version>      
      <spring-version>2.5.6.SEC01</spring-version>
      <spring3-version>3.0.5.RELEASE</spring3-version>
      <spring-osgi-version>1.2.0</spring-osgi-version>
      <spring-castor-bundle-version>1.2.0</spring-castor-bundle-version>
      <spymemcached-bundle-version>2.5_1</spymemcached-bundle-version>
      <stringtemplate-bundle-version>3.2_3</stringtemplate-bundle-version>
      <tagsoup-bundle-version>1.2_3</tagsoup-bundle-version>
      <velocity-bundle-version>1.7_1</velocity-bundle-version>
      <xalan-bundle-version>2.7.1_2</xalan-bundle-version>
      <xerces-bundle-version>2.9.1_3</xerces-bundle-version>
      <xmlbeans-bundle-version>2.5.0_1</xmlbeans-bundle-version>
      <xmlschema-version>1.4.5</xmlschema-version>
      <xmlsec-bundle-version>1.4.4_1</xmlsec-bundle-version>
      <xmlresolver-bundle-version>1.2_2</xmlresolver-bundle-version>
      <xpp3-bundle-version>1.1.4c_3</xpp3-bundle-version>
      <xstream-bundle-version>1.3_3</xstream-bundle-version>
      <werken-xpath-bundle-version>0.9.4_3</werken-xpath-bundle-version>
      <woodstox-core-bundle-version>4.0.7</woodstox-core-bundle-version>
      <stax2-api-bundle-version>3.0.1</stax2-api-bundle-version>
      <saaj-impl-version>1.3.2_1</saaj-impl-version>
      <wsdl4j-bundle-version>1.6.2_2</wsdl4j-bundle-version>
      <wss4j-version>1.5.8</wss4j-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>
    </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>
		     <artifact>
                       <file>target/classes/features-spring2.xml</file>
                       <type>xml</type>
                       <classifier>features-spring2</classifier>
                     </artifact>
                   </artifacts>
                 </configuration>
               </execution>
           </executions>
         </plugin>
      </plugins>
    </build>

    <profiles>
       <profile>
         <id>spring-2.x</id>      
         <properties>
           <features.file>features-spring2.xml</features.file>
         </properties>     
       </profile>	 
       <profile>
          <id>validate</id>
          <build>
             <plugins>
                <plugin>
                   <groupId>org.apache.karaf.tooling</groupId>
                   <artifactId>features-maven-plugin</artifactId>
		   <version>${features-maven-plugin-version}</version>
		   <configuration>
		     <file>${project.build.directory}/classes/${features.file}</file>
                     <karafConfig>${project.build.directory}/classes/config.properties</karafConfig> 
		   </configuration>
		   <executions>
                     <execution>
                       <id>validate</id>
                       <phase>process-resources</phase>
                       <goals>
                         <goal>validate</goal>
                       </goals>
                     </execution>
                   </executions>
                   <dependencies>
                    <dependency> 
                     <groupId>org.slf4j</groupId>
                     <artifactId>slf4j-simple</artifactId>
                     <version>1.4.3</version>
	            </dependency>
                 </dependencies>
               </plugin> 
              </plugins>
           </build>
        </profile>
     </profiles>
</project>
