<?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>itest-bpel</artifactId>
        <version>1.7-SNAPSHOT</version>
        <relativePath>../../pom.xml</relativePath>
    </parent>
    <artifactId>itest-bpel-helloworld-reference</artifactId>
    <name>Apache Tuscany SCA iTest HelloWorld Reference BPEL</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-embedded</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-ws-axis2</artifactId>
            <version>1.7-SNAPSHOT</version>
            <scope>runtime</scope>
        </dependency>        

        <dependency>
            <groupId>org.apache.tuscany.sca</groupId>
            <artifactId>tuscany-host-tomcat</artifactId>
            <version>1.7-SNAPSHOT</version>
            <scope>runtime</scope>
        </dependency> 
        
        <dependency>
            <groupId>org.apache.tuscany.sca</groupId>
            <artifactId>tuscany-implementation-bpel-ode</artifactId>
            <version>1.7-SNAPSHOT</version>
            <scope>runtime</scope>
        </dependency>

		<dependency>
			<groupId>org.apache.ode</groupId>
			<artifactId>ode-dao-jpa-ojpa-derby</artifactId>
			<version>1.1</version>
			<type>zip</type>
		</dependency>
		
        <dependency>
            <groupId>org.apache.tuscany.sdo</groupId>
            <artifactId>tuscany-sdo-impl</artifactId>
            <version>1.1.1</version>
        </dependency>

		<dependency>
		    <groupId>xerces</groupId>
		    <artifactId>xercesImpl</artifactId>
		    <version>2.8.0</version>
		</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-surefire-plugin</artifactId>
                <!--  http://jira.codehaus.org/browse/SUREFIRE-322 -->
                <version>2.3.1</version>
				<configuration>
					<useFile>false</useFile>
					<trimStackTrace>false</trimStackTrace>
					<useSystemClassLoader>true</useSystemClassLoader>
				</configuration>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-dependency-plugin</artifactId>
				<executions>
					<execution>
						<id>unpack</id>
						<phase>generate-sources</phase>
						<goals>
							<goal>unpack</goal>
						</goals>
						<configuration>
							<artifactItems>
								<artifactItem>
									<groupId>org.apache.ode</groupId>
									<artifactId>ode-dao-jpa-ojpa-derby</artifactId>
									<version>1.1</version>
									<type>zip</type>
									<overWrite>true</overWrite>
									<outputDirectory>${project.build.directory}/test-classes/</outputDirectory>
								</artifactItem>
							</artifactItems>
						</configuration>
					</execution>
				</executions>
			</plugin>			
			<!-- 
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-dependency-plugin</artifactId>
				<executions>
					<execution>
						<id>unpack</id>
						<phase>test-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</version>
									<type>zip</type>
									<overWrite>true</overWrite>
									<outputDirectory>${project.build.directory}/test-classes/</outputDirectory>
								</artifactItem>
							</artifactItems>
						</configuration>
					</execution>
				</executions>
			</plugin>
			<plugin>
				<groupId>org.apache.tuscany.sdo</groupId>
				<artifactId>tuscany-sdo-plugin</artifactId>
				<version>1.1.1</version>
				<executions>
					<execution>
						<id>generate-bpel-helloworld</id>
						<phase>generate-sources</phase>
						<configuration>
							<schemaFile>${basedir}/src/test/resources/helloworld/helloworld.wsdl</schemaFile>
							<targetDirectory>${basedir}/target/wsdl2java-source</targetDirectory>
							<prefix>HelloWorld</prefix>
							<noNotification>true</noNotification>
							<noContainer>true</noContainer>
							<noUnsettable>true</noUnsettable>
						</configuration>
						<goals>
							<goal>generate</goal>
						</goals>
					</execution>
				</executions>
			</plugin>
			<plugin>
				<groupId>org.apache.tuscany.sca</groupId>
				<artifactId>tuscany-maven-wsdl2java</artifactId>
				<version>1.7-SNAPSHOT</version>
				<executions>
					<execution>
						<configuration>
							<wsdlFiles>
								<wsdlFile>
									<fileName>${basedir}/src/test/resources/helloworld/helloworld.wsdl</fileName>
								</wsdlFile>
							</wsdlFiles>
						</configuration>
						<goals>
							<goal>generate</goal>
						</goals>
					</execution>
				</executions>
			</plugin>
			-->
		</plugins>
    </build>

</project>
