<?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.tuscany.sca.samples</groupId>
      <artifactId>tuscany-samples</artifactId>
      <version>2.0.1-SNAPSHOT</version>
      <relativePath />
   </parent>

   <artifactId>helloworld-webapp</artifactId>
   <version>2.0.1-SNAPSHOT</version>

   <name>Apache Tuscany SCA Samples Helloworld WebApp</name>
   <packaging>war</packaging>

   <properties>
      <tuscany.version>${project.version}</tuscany.version>
   </properties>

   <!-- ASF repositories so sample can be built from SVN without building trunk-->
   <repositories><repository>
       <id>apache.snapshots</id>
       <name>Apache Snapshot Repository</name>
       <url>http://repository.apache.org/snapshots</url>
       <releases><enabled>false</enabled></releases>
   </repository></repositories>
   <pluginRepositories><pluginRepository>
       <id>apache.snapshots</id>
       <name>Apache Snapshot Repository</name>
       <url>http://repository.apache.org/snapshots</url>
       <releases><enabled>false</enabled></releases>
   </pluginRepository></pluginRepositories>

   <dependencies>

      <dependency>
         <groupId>org.apache.tuscany.sca</groupId>
         <artifactId>tuscany-base-runtime</artifactId>
         <version>${tuscany.version}</version>
      </dependency>         

      <dependency>
         <groupId>junit</groupId>
         <artifactId>junit</artifactId>
         <version>4.8.1</version>
         <scope>test</scope>
      </dependency>

      <dependency>
         <groupId>net.sourceforge.htmlunit</groupId>
         <artifactId>htmlunit</artifactId>
         <version>2.6</version>
         <scope>test</scope>
         <exclusions>
             <exclusion>
                 <groupId>xalan</groupId>
                 <artifactId>xalan</artifactId>
             </exclusion> 
         </exclusions>        
      </dependency>

      <!-- replace xalan dependency with verstion that Tuscany is using -->
      <dependency>
          <groupId>xalan</groupId>
          <artifactId>xalan</artifactId>
          <version>2.7.1</version>
          <scope>test</scope>
          <exclusions>
             <exclusion>
                 <groupId>xml-apis</groupId>
                 <artifactId>xml-apis</artifactId>
             </exclusion>                              
          </exclusions>            
      </dependency>  

   </dependencies>

    <build>
       <plugins>

          <!-- this copies the SCA contribution from the helloworld sample into this webapp -->
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <executions>
              <execution>
                <id>copy</id>
                <phase>compile</phase>
                <goals>
                  <goal>copy</goal>
                </goals>
                <configuration>
                   <artifactItems>
                     <artifactItem>
                       <groupId>org.apache.tuscany.sca.samples</groupId>
                       <artifactId>helloworld</artifactId>
                       <version>${project.version}</version>
                       <!-- should really go in the target folder but i can't get jetty:run or tomcat:run to work using that -->
                       <outputDirectory>src/main/webapp/WEB-INF/sca-contributions</outputDirectory>
                     </artifactItem>
                   </artifactItems>
                </configuration>
              </execution>
            </executions>
          </plugin>

          <!-- to support running thw webapp with mvn tuscany:run -->
         <plugin>
            <groupId>org.apache.tuscany.sca</groupId>
            <artifactId>tuscany-maven-plugin</artifactId>
            <version>${tuscany.version}</version>
         </plugin>

          <!-- to support using mvn jetty:run and also to run the webapp for the integration test -->
          <plugin>
             <groupId>org.mortbay.jetty</groupId>
             <artifactId>maven-jetty-plugin</artifactId>
             <version>6.1.26</version>
             <configuration>
                <contextPath>helloworld-webapp</contextPath>
                <stopKey>foo</stopKey>
                <stopPort>9999</stopPort>
             </configuration>
             <executions>
                <execution>
                   <id>start-jetty</id>
                   <phase>process-test-classes</phase>
                   <goals>
                       <goal>run</goal>
                   </goals>
                   <configuration>
                       <scanIntervalSeconds>0</scanIntervalSeconds>
                       <daemon>true</daemon>
                       <connectors>
                          <connector implementation="org.mortbay.jetty.nio.SelectChannelConnector">
                             <port>8085</port>
                          </connector>
                       </connectors>
                   </configuration>
                </execution>
                <execution>
                   <id>stop-jetty</id>
                   <phase>prepare-package</phase>
                   <goals>
                       <goal>stop</goal>
                   </goals>
                </execution>
             </executions>
          </plugin>

          <!-- to support using mvn tomcat:run -->
          <plugin>
             <groupId>org.codehaus.mojo</groupId>
             <artifactId>tomcat-maven-plugin</artifactId>
             <version>1.1</version>
          </plugin>

       </plugins>
    </build>
</project>
