<?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</groupId>
          <artifactId>tuscany-sca</artifactId>
          <version>2.0-M5.1</version>
          <relativePath>../../pom.xml</relativePath>
      </parent>

      <artifactId>sample-helloworld-bpel-webapp</artifactId>
      <packaging>war</packaging>
      <name>Apache Tuscany SCA Sample Helloworld BPEL</name>

	<properties>
		<tuscany.version>2.0-M5.1</tuscany.version>
		<jetty.version>6.1.18</jetty.version>
	</properties>

	<dependencies>
		<!--  TUSCANY DEPENDENCIES -->
            <dependency>
               <groupId>org.apache.tuscany.sca</groupId>
               <artifactId>tuscany-sca-api</artifactId>
               <version>${tuscany.version}</version>
            </dependency>

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

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

		<!--  JUNIT DEPENDENCY FOR TESTING -->
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.8.1</version>
			<scope>test</scope>
		</dependency>

		<!--  JETTY DEPENDENCIES FOR TESTING  -->
		<dependency>
			<groupId>org.mortbay.jetty</groupId>
			<artifactId>jetty</artifactId>
			<version>${jetty.version}</version>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>org.mortbay.jetty</groupId>
			<artifactId>jetty-util</artifactId>
			<version>${jetty.version}</version>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>org.mortbay.jetty</groupId>
			<artifactId>jetty-management</artifactId>
			<version>${jetty.version}</version>
			<scope>provided</scope>
		</dependency>
	</dependencies>

	<build>
         <finalName>helloworld-bpel</finalName>

         <plugins>
            <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-dependency-plugin</artifactId>
              <executions>
                <execution>
                  <id>unpack</id>
                  <phase>compile</phase>
                  <goals>
                    <goal>unpack</goal>
                  </goals>
                  <configuration>
                    <artifactItems>
                      <artifactItem>
                        <groupId>org.apache.ode</groupId>
                        <artifactId>ode-dao-jpa-ojpa-derby</artifactId>
                        <version>1.1.1</version>
                        <type>zip</type>
                        <overWrite>false</overWrite>
                        <outputDirectory>${project.build.directory}/classes</outputDirectory>
                        <includes>**/*</includes>
                      </artifactItem>
                    </artifactItems>
                   </configuration>
                </execution>
              </executions>
            </plugin>

          <plugin>
             <groupId>org.mortbay.jetty</groupId>
             <artifactId>maven-jetty-plugin</artifactId>
             <version>6.1.18</version>
             <configuration>
                <contextPath>helloworld-bpel</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>

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