<?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-distribution-tomcat-testing</artifactId>
        <version>2.0.1-SNAPSHOT</version>
        <relativePath>../pom.xml</relativePath>
    </parent>

    <artifactId>download-tomcat</artifactId>
    <packaging>war</packaging>
    <name>Apache Tuscany SCA Tomcat Integration Testing Download Tomcat</name>

    <properties>
        <tomcat.version>6.0.18</tomcat.version>
    </properties>

    <build>


        <plugins>

      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>tomcat-maven-plugin</artifactId>
        <version>1.0-beta-1</version>
      </plugin>

           <plugin>
              <groupId>org.codehaus.mojo</groupId>
              <artifactId>wagon-maven-plugin</artifactId>
              <version>1.0-beta-1</version>
              <executions>
                 <execution>
                    <id>download-tomcat</id>
                    <phase>pre-integration-test</phase>
                    <goals>
                       <goal>download-single</goal>
                    </goals>
                    <configuration>
                       <url>http://archive.apache.org</url>
                       <fromFile>dist/tomcat/tomcat-6/v${tomcat.version}/bin/apache-tomcat-${tomcat.version}.zip</fromFile>
                       <toDir>download</toDir>
                    </configuration>
                 </execution>
              </executions>
           </plugin>
        </plugins>
   </build>


<profiles>
  <profile>
    <activation>
      <file>
        <exists>download/apache-tomcat-6.0.18.zip</exists>
      </file>
    </activation>
  </profile>
</profiles>


</project>
