<?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.5-SNAPSHOT</version>
        <relativePath>../pom.xml</relativePath>
    </parent>

   <groupId>org.apache.tuscany.sca.samples</groupId>
   <artifactId>helloworld-http-contribution</artifactId>
   <version>2.5-SNAPSHOT</version>
   <packaging>jar</packaging>

   <name>Tuscany Sample Helloworld Rest Contribution</name>

   <properties>
      <tuscany.version>2.5-SNAPSHOT</tuscany.version>
   </properties>

   <dependencies>

      <dependency>
         <groupId>org.apache.tuscany.sca</groupId>
         <artifactId>tuscany-sca-api</artifactId>
         <version>${tuscany.version}</version>
         <scope>provided</scope>
      </dependency>

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

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

      <dependency>
         <groupId>org.apache.tuscany.sca</groupId>
         <artifactId>tuscany-binding-http-runtime</artifactId>
         <version>${tuscany.version}</version>
         <scope>test</scope>
      </dependency>

      <dependency>
         <groupId>org.apache.tuscany.sca</groupId>
         <artifactId>tuscany-databinding-json</artifactId>
         <version>2.5-SNAPSHOT</version>
         <scope>test</scope>
      </dependency>

      <dependency>
          <groupId>org.mortbay.jetty</groupId>
          <artifactId>jetty</artifactId>
          <version>6.1.19</version>
          <scope>test</scope>
      </dependency>

   </dependencies>

   <build>
      <defaultGoal>install</defaultGoal>
      <finalName>helloworld-contribution</finalName>

      <plugins>
         <plugin>
            <groupId>org.apache.tuscany.maven.plugins</groupId>
            <artifactId>maven-tuscany-plugin</artifactId>
            <version>${tuscany.version}</version>
            <dependencies>
               <dependency>
                  <groupId>org.apache.tuscany.sca</groupId>
                  <artifactId>tuscany-binding-http-runtime</artifactId>
                  <version>${tuscany.version}</version>
               </dependency>
               <dependency>
                  <groupId>org.apache.tuscany.sca</groupId>
                  <artifactId>tuscany-databinding-json</artifactId>
                  <version>2.5-SNAPSHOT</version>
               </dependency>
            </dependencies>
         </plugin>
      </plugins>

   </build>

</project>