<?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-scaclient</artifactId>
   <version>2.0.1-SNAPSHOT</version>

   <name>Apache Tuscany SCA Samples Helloworld SCAClient</name>

   <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-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>
      
      <!-- this is for the Tuscany distributed domain support -->
      <dependency>
         <groupId>org.apache.tuscany.sca</groupId>
         <artifactId>tuscany-domain-hazelcast</artifactId>
         <version>${tuscany.version}</version>
         <scope>test</scope>
      </dependency>

   </dependencies>

   <build>

      <plugins>

         <!-- to support running the application with mvn tuscany:run -->
         <plugin>
            <groupId>org.apache.tuscany.sca</groupId>
            <artifactId>tuscany-maven-plugin</artifactId>
            <version>${tuscany.version}</version>
            <configuration>
              <mainClass>sample.HelloworldSCAClient</mainClass>
            </configuration>
         </plugin>

         <!-- to support running the application with mvn exec:java -->
         <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>exec-maven-plugin</artifactId>
            <version>1.1.1</version>
            <executions>
              <execution>
                <goals>
                  <goal>java</goal>
                </goals>
              </execution>
            </executions>
            <configuration>
              <mainClass>sample.HelloworldSCAClient</mainClass>
              <classpathScope>test</classpathScope>
            </configuration>
         </plugin>

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