<?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>
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.apache.tuscany.sca</groupId>
        <artifactId>tuscany-sca</artifactId>
        <version>1.7-SNAPSHOT</version>
        <relativePath>../../pom.xml</relativePath>
    </parent>
    <artifactId>sample-helloworld-dojo-webapp</artifactId>
    <packaging>war</packaging>
    <name>Apache Tuscany SCA Sample HelloWorld DOJO WebApp</name>

    <repositories>
       <repository>
          <id>apache.incubator</id>
          <url>http://people.apache.org/repo/m2-incubating-repository</url>
       </repository>
    </repositories>

    <dependencies>
        <dependency>
            <groupId>org.apache.tuscany.sca</groupId>
            <artifactId>tuscany-host-webapp</artifactId>
            <version>1.7-SNAPSHOT</version>
        </dependency>

        <dependency>
            <groupId>org.apache.tuscany.sca</groupId>
            <artifactId>tuscany-implementation-java-runtime</artifactId>
            <version>1.7-SNAPSHOT</version>
            <scope>runtime</scope>
        </dependency>

        <dependency>
            <groupId>org.apache.tuscany.sca</groupId>
            <artifactId>tuscany-binding-jsonrpc-runtime</artifactId>
            <version>1.7-SNAPSHOT</version>
            <scope>runtime</scope>
        </dependency>

        <!-- exclude stax 1.0.1 as we're also pulling in javax\xml\stream\stax-api\1.0-2 -->
        <dependency>
            <groupId>stax</groupId>
            <artifactId>stax-api</artifactId>
            <version>1.0.1</version>
            <scope>provided</scope>
        </dependency>

        <!-- marking dependency as provided to exclude from war file -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
            <version>2.3</version>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>org.dojotoolkit</groupId>
            <artifactId>dojo</artifactId>
            <version>1.3.0</version>
            <type>zip</type>
        </dependency>        

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

    </dependencies>

    <build>
        <finalName>${artifactId}</finalName>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-antrun-plugin</artifactId>
                <!-- version>1.1</version --> 
			    <dependencies>
			        <dependency>
			    	    <groupId>ant</groupId>
			    	    <artifactId>ant-trax</artifactId>
			    	    <version>1.6.5</version>
			        </dependency>
			    </dependencies>                    
                <executions>
                    <execution>
                        <id>copy-dojo-files</id>
                        <phase>generate-resources</phase>
                        <goals>
                            <goal>run</goal>
                        </goals>
                        <configuration>
                            <tasks>
                                <ant antfile="./build-dojo.xml" target="unpack-dojo-files">
                                    <property name="localRepository" value="${settings.localRepository}"/>
                                    <property name="artifactId" value="${artifactId}"/>
                                </ant>
                            </tasks>
                        </configuration>
                    </execution>
                    <execution>
                        <id>clean-dojo-files</id>
                        <phase>package</phase>
                        <goals>
                            <goal>run</goal>
                        </goals>
                        <configuration>
                            <tasks>
                                <ant antfile="./build-dojo.xml" target="clean-dojo-files">
                                    <property name="localRepository" value="${settings.localRepository}"/>
                                    <property name="artifactId" value="${artifactId}"/>
                                </ant>
                            </tasks>
                        </configuration>
                    </execution>
                </executions>
            </plugin> 
            <plugin>
                <groupId>org.apache.tuscany.sca</groupId>
                <artifactId>tuscany-maven-ant-generator</artifactId>
                <version>1.7-SNAPSHOT</version>
                <executions>
                    <execution>
                        <configuration>
                            <buildDependencyFileOnly>true</buildDependencyFileOnly>
                        </configuration>                    
                        <goals>
                            <goal>generate</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>           
        </plugins>
    </build>
</project>
