<?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/xsd/maven-4.0.0.xsd">

    <modelVersion>4.0.0</modelVersion>

    <parent>
        <artifactId>rave-project</artifactId>
        <groupId>org.apache.rave</groupId>
        <version>0.20</version>
    </parent>

    <artifactId>rave-portal-resources</artifactId>
    <name>Apache Rave :: rave-portal-resources</name>
    <description>Apache Rave Portal Resources</description>
    <packaging>war</packaging>

    <!--
     The dependencies defined here should have the scope provided.
     They are not needed for compilation, only to support JSTL code completion in IDE's.
     -->
    <dependencies>
        <dependency>
            <groupId>org.glassfish.web</groupId>
            <artifactId>jstl-impl</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-taglibs</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-ldap</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.rave</groupId>
            <artifactId>rave-web</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.tiles</groupId>
            <artifactId>tiles-jsp</artifactId>
            <scope>provided</scope>
        </dependency>
    </dependencies>

    <build>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
                <!-- exclude the wro4j config files from the WAR as they are only needed for build -->
                <excludes>
                    <exclude>**/wro.properties</exclude>
                    <exclude>**/wro.xml</exclude>
                </excludes>
            </resource>
        </resources>
        <plugins>
            <plugin>
                <groupId>com.googlecode.mavenfilesync</groupId>
                <artifactId>maven-filesync-plugin</artifactId>
                <configuration>
                    <mappings>
                        <mapping>
                            <sourceFolder>src/main/webapp</sourceFolder>
                            <destinationFolder>@../rave-portal/target/tomcat6x/webapps/portal</destinationFolder>
                        </mapping>
                        <mapping>
                            <sourceFolder>src/main/resources</sourceFolder>
                            <destinationFolder>@../rave-portal/target/tomcat6x/webapps/portal/WEB-INF/classes</destinationFolder>
                        </mapping>
                    </mappings>
                </configuration>
            </plugin>
            <plugin>
                <groupId>com.github.searls</groupId>
                <artifactId>jasmine-maven-plugin</artifactId>
                <version>1.0.2-beta-2</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>generateManualRunner</goal>
                            <goal>resources</goal>
                            <goal>testResources</goal>
                            <goal>test</goal>
                        </goals>
                        <configuration>
                            <jsSrcDir>${project.basedir}/src/main/webapp/static/script/</jsSrcDir>
                            <debug>true</debug>
                            <sourceExcludes>
                                <exclude>rave_layout.js</exclude>
                                <!-- exclude the combined js file from our tests, created by the wro4j plugin  -->
                                <exclude>all.min.js</exclude>
                            </sourceExcludes>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <!--
               wro4j maven plugin is used for optimization (concatenation, minification, etc) of our static resources
               it is invoked as part of the compile phase of the maven lifecycle
            -->
            <plugin>
                <groupId>ro.isdc.wro4j</groupId>
                <artifactId>wro4j-maven-plugin</artifactId>
                <version>1.6.1</version>
                <executions>
                    <execution>
                        <phase>compile</phase>
                        <goals>
                            <goal>run</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <!-- wro.properties defines which pre and post processors to execute -->
                    <extraConfigFile>${basedir}/src/main/resources/wro.properties</extraConfigFile>
                    <!-- wro.xml defines the resource groups -->
                    <wroFile>${basedir}/src/main/resources/wro.xml</wroFile>
                    <!-- targetGroups is the set of resource groups, defined in wro.xml, that you want to process -->
                    <targetGroups>rave_all.min,rave</targetGroups>
                    <!-- minimize instructs the processors to handle their minimization work -->
                    <minimize>true</minimize>
                    <!-- location of the javascript after processing -->
                    <jsDestinationFolder>${project.build.directory}/${project.build.finalName}/static/script/</jsDestinationFolder>
					<!-- location of the CSS after processing -->
					<cssDestinationFolder>${project.build.directory}/${project.build.finalName}/static/css/</cssDestinationFolder>
                    <!-- location of webapp directory that wro4j uses for its location context -->
                    <contextFolder>${basedir}/src/main/webapp/</contextFolder>
                    <wroManagerFactory>ro.isdc.wro.maven.plugin.manager.factory.ConfigurableWroManagerFactory</wroManagerFactory>
                    <ignoreMissingResources>false</ignoreMissingResources>
                </configuration>
            </plugin>
        </plugins>
    </build>
    <profiles>
        <profile>
            <id>jpa</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-war-plugin</artifactId>
                        <version>${maven-war-plugin.version}</version>
                        <configuration>
                            <webResources>
                                <resource>
                                    <directory>src/main/resources_jpa</directory>
                                    <targetPath>WEB-INF/</targetPath>
                                    <filtering>true</filtering>
                                    <includes>
                                        <include>**/*</include>
                                    </includes>
                                </resource>
                            </webResources>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <profile>
            <id>mongodb</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-war-plugin</artifactId>
                        <version>${maven-war-plugin.version}</version>
                        <configuration>
                            <webResources>
                                <resource>
                                    <directory>src/main/resources_mongo</directory>
                                    <targetPath>WEB-INF/</targetPath>
                                    <filtering>true</filtering>
                                    <includes>
                                        <include>**/*</include>
                                    </includes>
                                </resource>
                            </webResources>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>
</project>
