<?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>
   <parent>
      <groupId>org.apache.portals.pluto</groupId>
      <artifactId>pluto</artifactId>
      <version>3.0-SNAPSHOT</version>
   </parent>

   <artifactId>pluto-container</artifactId>
   <packaging>bundle</packaging>
   <name>Apache Pluto Portlet Container</name>
   <description>The Apache Pluto portlet container.</description>

   <dependencies>
      <dependency>
         <groupId>org.apache.portals.pluto</groupId>
         <artifactId>pluto-container-api</artifactId>
         <version>${project.version}</version>
         <scope>provided</scope>
      </dependency>

      <!-- Other Support Libraries =========================================== -->
      <dependency>
         <groupId>org.slf4j</groupId>
         <artifactId>slf4j-api</artifactId>
         <scope>provided</scope>
      </dependency>

      <!-- For method annotation scanning ==================================== -->
      <dependency>
         <groupId>eu.infomas</groupId>
         <artifactId>annotation-detector</artifactId>
      </dependency>

      <!-- Specification Libraries =========================================== -->
      <dependency>
         <groupId>org.apache.portals.pluto</groupId>
         <artifactId>portlet-api</artifactId>
         <version>${project.version}</version>
         <scope>provided</scope>
      </dependency>

      <dependency>
         <groupId>org.apache.tomcat</groupId>
         <artifactId>tomcat-servlet-api</artifactId>
         <scope>provided</scope>
      </dependency>

      <!-- CCPP Libraries -->
      <dependency>
         <groupId>javax.ccpp</groupId>
         <artifactId>ccpp</artifactId>
         <scope>provided</scope>
      </dependency>

      <!-- CDI API for extension -->
      <dependency>
         <groupId>javax.enterprise</groupId>
         <artifactId>cdi-api</artifactId>
         <version>1.2</version>
      </dependency>

      <!-- Testing Libraries ================================================= -->
      <dependency>
         <groupId>org.slf4j</groupId>
         <artifactId>slf4j-jdk14</artifactId>
         <scope>test</scope>
      </dependency>
      <dependency>
         <groupId>junit</groupId>
         <artifactId>junit</artifactId>
      </dependency>
      <dependency>
         <groupId>jmock</groupId>
         <artifactId>jmock</artifactId>
      </dependency>
      <dependency>
         <groupId>jmock</groupId>
         <artifactId>jmock-cglib</artifactId>
      </dependency>
      <dependency>
         <groupId>org.jboss.weld.se</groupId>
         <artifactId>weld-se-core</artifactId>
         <version>${cdi.version}</version>
         <scope>test</scope>
      </dependency>
      <dependency>
         <groupId>org.jglue.cdi-unit</groupId>
         <artifactId>cdi-unit</artifactId>
         <version>3.1.3</version>
         <exclusions>
            <exclusion>
               <groupId>org.jboss.weld.se</groupId>
               <artifactId>weld-se-core</artifactId>
            </exclusion>
         </exclusions>
         <scope>test</scope>
      </dependency>

   </dependencies>

   <build>
<!--   
      <resources>
         <resource>
            <directory>src/main/resources</directory>
            <filtering>true</filtering>
         </resource>
      </resources>
      <testResources>
         <testResource>
            <directory>src/test/resources</directory>
            <filtering>true</filtering>
         </testResource>
      </testResources>
 --> 
      <plugins>
         <!-- Surefire Plugin: Exec Tests ===================================== -->
         <plugin>
            <artifactId>maven-surefire-plugin</artifactId>
            <configuration>
               <includes>
                  <include>**/*Test.java</include>
                  <include>**/*TestSuite.java</include>
               </includes>
               <excludes>
                  <exclude>**/PlutoTestCase.java</exclude>
               </excludes>
            </configuration>
         </plugin>
         <plugin>
            <groupId>org.apache.rat</groupId>
            <artifactId>apache-rat-plugin</artifactId>
            <configuration>
               <excludes>
                  <exclude>src/main/resources/org/apache/pluto/container/impl/portlet-app_1_0.xsd</exclude>
                  <exclude>src/main/resources/org/apache/pluto/container/impl/portlet-app_2_0.xsd</exclude>
                  <exclude>src/main/resources/org/apache/pluto/container/impl/web-app_2_3.dtd</exclude>
               </excludes>
            </configuration>
         </plugin>
         <plugin>
            <groupId>org.apache.felix</groupId>
            <artifactId>maven-bundle-plugin</artifactId>
            <configuration>
               <instructions>
                  <Export-Package>org.apache.pluto.container.impl,
                     org.apache.pluto.container.om.portlet.impl,
                     org.apache.pluto.container.om.portlet10.impl,
                     org.apache.pluto.container.om.portlet20.impl,
                     org.apache.pluto.container.om.portlet30.impl,
                     org.apache.pluto.container.util
                  </Export-Package>
               </instructions>
            </configuration>
         </plugin>
         <plugin>
            <groupId>org.jvnet.jaxb2.maven2</groupId>
            <artifactId>maven-jaxb2-plugin</artifactId>
            <version>0.12.3</version>
            <executions>
               <execution>
                  <id>portlet1-generate</id>
                  <goals>
                     <goal>generate</goal>
                  </goals>
                  <configuration>
                     <schemaDirectory>src/main/resources/org/apache/pluto/container/impl</schemaDirectory>
                     <schemaIncludes>
                        <include>portlet-app_1_0.xsd</include>
                     </schemaIncludes>
                     <generatePackage>org.apache.pluto.container.om.portlet10.impl</generatePackage>
                     <generateDirectory>${project.build.directory}/generated-sources/xjc1</generateDirectory>
                  </configuration>
               </execution>
               <execution>
                  <id>portlet2-generate</id>
                  <goals>
                     <goal>generate</goal>
                  </goals>
                  <configuration>
                     <schemaDirectory>src/main/resources/org/apache/pluto/container/impl</schemaDirectory>
                     <schemaIncludes>
                        <include>portlet-app_2_0.xsd</include>
                     </schemaIncludes>
                     <generatePackage>org.apache.pluto.container.om.portlet20.impl</generatePackage>
                     <generateDirectory>${project.build.directory}/generated-sources/xjc2</generateDirectory>
                  </configuration>
               </execution>
               <execution>
                  <id>portlet3-generate</id>
                  <goals>
                     <goal>generate</goal>
                  </goals>
                  <configuration>
                     <schemaDirectory>src/main/resources/org/apache/pluto/container/impl</schemaDirectory>
                     <schemaIncludes>
                        <include>portlet-app_3_0.xsd</include>
                     </schemaIncludes>
                     <generatePackage>org.apache.pluto.container.om.portlet30.impl</generatePackage>
                     <generateDirectory>${project.build.directory}/generated-sources/xjc3</generateDirectory>
                  </configuration>
               </execution>
            </executions>
         </plugin>
      </plugins>
   </build>
</project>