#set( $symbol_pound = '#' )
#set( $symbol_dollar = '$' )
#set( $symbol_escape = '\' )
<?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">
    <modelVersion>4.0.0</modelVersion>
    <groupId>${groupId}</groupId>
    <artifactId>${artifactId}</artifactId>
    <packaging>war</packaging>
    <version>${version}</version>
    <name>A custom project using MyFaces 2.0, OpenWebBeans and MyFaces CODI</name>
    <url>http://www.myorganization.org</url>

    <properties>
        <jsf-myfaces.version>2.0.7</jsf-myfaces.version>
        <jsf-mojarra.version>2.0.6</jsf-mojarra.version>
        <openwebbeans.version>1.1.0</openwebbeans.version>
        <codi.version>1.0.1</codi.version>
        <maven.jetty.plugin.version>6.1.22</maven.jetty.plugin.version>
    </properties>

    <build>
        <finalName>${artifactId}</finalName>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.5</source>
                    <target>1.5</target>
                </configuration>
            </plugin>
        </plugins>
    </build>

    <profiles>
        <profile>
            <id>myfaces</id>
            <activation>
                <property>
                    <name>!jsf</name>
                </property>
            </activation>
            <dependencies>
                <dependency>
                    <groupId>org.apache.myfaces.core</groupId>
                    <artifactId>myfaces-api</artifactId>
                    <version>${symbol_dollar}{jsf-myfaces.version}</version>
                    <scope>compile</scope>
                </dependency>
                <dependency>
                    <groupId>org.apache.myfaces.core</groupId>
                    <artifactId>myfaces-impl</artifactId>
                    <version>${symbol_dollar}{jsf-myfaces.version}</version>
                    <scope>runtime</scope>
                </dependency>
            </dependencies>
        </profile>

        <profile>
            <!-- Activate by adding -Djsf=mojarra -->
            <id>mojarra</id>
            <activation>
                <property>
                    <name>jsf</name>
                    <value>mojarra</value>
                </property>
            </activation>
            <dependencies>
                <dependency>
                    <groupId>com.sun.faces</groupId>
                    <artifactId>jsf-api</artifactId>
                    <version>${symbol_dollar}{jsf-mojarra.version}</version>
                    <scope>compile</scope>
                </dependency>
                <dependency>
                    <groupId>com.sun.faces</groupId>
                    <artifactId>jsf-impl</artifactId>
                    <version>${symbol_dollar}{jsf-mojarra.version}</version>
                    <scope>runtime</scope>
                </dependency>
            </dependencies>
            <repositories>
                <repository>
                    <id>java.net</id>
                    <url>http://download.java.net/maven/2</url>
                </repository>
            </repositories>
        </profile>

        <profile>
            <!-- Use mvn clean jetty:run-exploded -PjettyConfig to run with jetty -->
            <id>jettyConfig</id>
            <build>
                <plugins>
                    <plugin>
                        <!--This plugin allows to run the war using mvn jetty:run -->
                        <groupId>org.mortbay.jetty</groupId>
                        <artifactId>maven-jetty-plugin</artifactId>
                        <version>${symbol_dollar}{maven.jetty.plugin.version}</version>
                        <configuration>
                            <scanIntervalSeconds>10</scanIntervalSeconds>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>

    <!-- Project dependencies -->
    <dependencies>

        <!-- Specifications -->
        <!-- JSR-330 -->
        <dependency>
            <groupId>org.apache.geronimo.specs</groupId>
            <artifactId>geronimo-atinject_1.0_spec</artifactId>
            <version>1.0</version>
            <scope>compile</scope>
        </dependency>

        <!-- JSR-299 -->
        <dependency>
            <groupId>org.apache.geronimo.specs</groupId>
            <artifactId>geronimo-jcdi_1.0_spec</artifactId>
            <version>1.0</version>
            <scope>compile</scope>
        </dependency>
        
        <dependency>
            <groupId>org.apache.geronimo.specs</groupId>
            <artifactId>geronimo-jta_1.1_spec</artifactId>
            <version>1.1.1</version>
            <scope>compile</scope>
        </dependency>

        <dependency>
            <groupId>org.apache.geronimo.specs</groupId>
            <artifactId>geronimo-interceptor_1.1_spec</artifactId>
            <version>1.0</version>
            <scope>compile</scope>
        </dependency>

        <dependency>
            <groupId>org.apache.geronimo.specs</groupId>
            <artifactId>geronimo-validation_1.0_spec</artifactId>
            <version>1.1</version>
            <scope>compile</scope>
        </dependency>

        <dependency>
            <groupId>org.apache.geronimo.specs</groupId>
            <artifactId>geronimo-jpa_1.0_spec</artifactId>
            <version>1.1.2</version>
            <scope>compile</scope>
        </dependency>

        <dependency>
            <groupId>org.apache.geronimo.specs</groupId>
            <artifactId>geronimo-servlet_2.5_spec</artifactId>
            <version>1.2</version>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>org.apache.geronimo.specs</groupId>
            <artifactId>geronimo-el_1.0_spec</artifactId>
            <version>1.0.2</version>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>dom4j</groupId>
            <artifactId>dom4j</artifactId>
            <version>1.6.1</version>
        </dependency>

        <!-- OpenWebBeans -->
        <dependency>
            <groupId>org.apache.openwebbeans</groupId>
            <artifactId>openwebbeans-impl</artifactId>
            <version>${symbol_dollar}{openwebbeans.version}</version>
            <scope>runtime</scope>
        </dependency>

        <dependency>
            <groupId>org.apache.openwebbeans</groupId>
            <artifactId>openwebbeans-jsf</artifactId>
            <version>${symbol_dollar}{openwebbeans.version}</version>
            <scope>runtime</scope>
        </dependency>

        <dependency>
            <groupId>org.apache.openwebbeans</groupId>
            <artifactId>openwebbeans-web</artifactId>
            <version>${symbol_dollar}{openwebbeans.version}</version>
            <scope>runtime</scope>
        </dependency>

        <dependency>
            <groupId>org.apache.openwebbeans</groupId>
            <artifactId>openwebbeans-spi</artifactId>
            <version>${symbol_dollar}{openwebbeans.version}</version>
            <scope>runtime</scope>
        </dependency>

        <dependency>
            <groupId>org.apache.openwebbeans</groupId>
            <artifactId>openwebbeans-resource</artifactId>
            <version>${symbol_dollar}{openwebbeans.version}</version>
            <scope>runtime</scope>
        </dependency>

        
        <!-- MyFaces CODI -->
        <!-- the JSF independent core -->
        <dependency>
            <groupId>org.apache.myfaces.extensions.cdi.core</groupId>
            <artifactId>myfaces-extcdi-core-api</artifactId>
            <version>${symbol_dollar}{codi.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.myfaces.extensions.cdi.core</groupId>
            <artifactId>myfaces-extcdi-core-impl</artifactId>
            <version>${symbol_dollar}{codi.version}</version>
            <scope>runtime</scope>
        </dependency>

        <!-- the JSF-2.0 specific library, which includes the JSF-1.2 parts -->
        <dependency>
            <groupId>org.apache.myfaces.extensions.cdi.modules</groupId>
            <artifactId>myfaces-extcdi-jsf20-module-api</artifactId>
            <version>${symbol_dollar}{codi.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.myfaces.extensions.cdi.modules</groupId>
            <artifactId>myfaces-extcdi-jsf20-module-impl</artifactId>
            <version>${symbol_dollar}{codi.version}</version>
            <scope>runtime</scope>
        </dependency>

        <!-- the BV-1.0 specific library -->
        <dependency>
            <groupId>org.apache.myfaces.extensions.cdi.modules</groupId>
            <artifactId>myfaces-extcdi-bv1-module-api</artifactId>
            <version>${symbol_dollar}{codi.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.myfaces.extensions.cdi.modules</groupId>
            <artifactId>myfaces-extcdi-bv1-module-impl</artifactId>
            <version>${symbol_dollar}{codi.version}</version>
            <scope>runtime</scope>
        </dependency>

        <!-- CODI JPA-1.0 Module -->
        <dependency>
            <groupId>org.apache.myfaces.extensions.cdi.modules</groupId>
            <artifactId>myfaces-extcdi-jpa1-module-api</artifactId>
            <version>${symbol_dollar}{codi.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.myfaces.extensions.cdi.modules</groupId>
            <artifactId>myfaces-extcdi-jpa1-module-impl</artifactId>
            <version>${symbol_dollar}{codi.version}</version>
            <scope>runtime</scope>
        </dependency>

        <!-- CODI-I18N Message Module -->
        <dependency>
            <groupId>org.apache.myfaces.extensions.cdi.modules</groupId>
            <artifactId>myfaces-extcdi-message-module-api</artifactId>
            <version>${symbol_dollar}{codi.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.myfaces.extensions.cdi.modules</groupId>
            <artifactId>myfaces-extcdi-message-module-impl</artifactId>
            <version>${symbol_dollar}{codi.version}</version>
            <scope>runtime</scope>
        </dependency>

        <!-- CODI-Scripting Module -->
        <dependency>
            <groupId>org.apache.myfaces.extensions.cdi.modules</groupId>
            <artifactId>myfaces-extcdi-scripting-module-api</artifactId>
            <version>${symbol_dollar}{codi.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.myfaces.extensions.cdi.modules</groupId>
            <artifactId>myfaces-extcdi-scripting-module-impl</artifactId>
            <version>${symbol_dollar}{codi.version}</version>
            <scope>runtime</scope>
        </dependency>

        <!-- OPTIONAL: use the all-in-one jar instead of the individual CODI module dependencies -->
        <!--dependency>
            <groupId>org.apache.myfaces.extensions.cdi.bundles</groupId>
            <artifactId>myfaces-extcdi-bundle-jsf20</artifactId>
            <version>${symbol_dollar}{codi.version}</version>
            <scope>compile</scope>
        </dependency-->

        <!-- test dependencies -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.8.1</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

</project>
