<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>PortletHubDemo</artifactId>
   <packaging>war</packaging>

   <dependencies>
      <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>

      <!-- for eclipse JSP tooling purposes -->
      <dependency>
         <groupId>javax.servlet.jsp</groupId>
         <artifactId>jsp-api</artifactId>
         <version>2.1</version>
         <scope>provided</scope>
      </dependency>
      <dependency>
         <groupId>org.apache.taglibs</groupId>
         <artifactId>taglibs-standard-spec</artifactId>
         <scope>provided</scope>
      </dependency>
      <dependency>
          <groupId>org.apache.taglibs</groupId>
          <artifactId>taglibs-standard-impl</artifactId>
          <scope>provided</scope>
      </dependency>
      <dependency>
          <groupId>org.apache.taglibs</groupId>
          <artifactId>taglibs-standard-jstlel</artifactId>
          <scope>provided</scope>
      </dependency>
      <dependency>
         <groupId>org.apache.portals.pluto</groupId>
         <artifactId>pluto-taglib</artifactId>
         <version>2.1.0-M3</version>
         <scope>provided</scope>
      </dependency>
   </dependencies>

   <build>
      <finalName>PortletHubDemo</finalName>
      <plugins>
         <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
               <source>1.7</source>
               <target>1.7</target>
            </configuration>
         </plugin>
         <plugin>
            <artifactId>maven-war-plugin</artifactId>
            <configuration>
               <archiveClasses>false</archiveClasses>
            </configuration>
         </plugin>
      </plugins>
   </build>

   <profiles>
      <profile>
         <id>pluto</id>
         <activation>
           <property>
             <name>!alwaysActivate</name>
           </property>
         </activation>
    
         <dependencies>
            <dependency>
                <groupId>org.apache.taglibs</groupId>
                <artifactId>taglibs-standard-spec</artifactId>
                <scope>compile</scope>
            </dependency>
            <dependency>
                <groupId>org.apache.taglibs</groupId>
                <artifactId>taglibs-standard-impl</artifactId>
                <scope>compile</scope>
            </dependency>
            <dependency>
                <groupId>org.apache.taglibs</groupId>
                <artifactId>taglibs-standard-jstlel</artifactId>
                <scope>compile</scope>
            </dependency>
         </dependencies>
         
         <build>
            <plugins>
               <plugin>
                 <artifactId>maven-war-plugin</artifactId>
                 <configuration>
                   <archiveClasses>false</archiveClasses>
                 </configuration>
               </plugin>
               <!-- workaround for war processing of m-r-r-plugin causing the generated NOTICE and LICENSE file to be put under WEB-INF/classes/META-INF -->
               <plugin>
                   <groupId>org.apache.maven.plugins</groupId>
                   <artifactId>maven-remote-resources-plugin</artifactId>
                   <executions>
                       <execution>
                           <goals>
                               <goal>process</goal>
                           </goals>
                           <configuration>
                               <outputDirectory>${project.build.directory}/${project.build.finalName}</outputDirectory>
                               <attached>false</attached>
                           </configuration>
                       </execution>
                   </executions>
               </plugin>
            </plugins>
         </build>
      </profile>
   </profiles>

</project>
