<?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-ws-jaxws</artifactId>
        <version>2.5-SNAPSHOT</version>
        <relativePath>../pom.xml</relativePath>
    </parent>

    <artifactId>itest-ws-jaxws-contribution-wsdl-first</artifactId>
    <name>Apache Tuscany SCA iTest WS JAXWS Contribution WSDL First</name>

    <dependencies>
        
        <dependency>
            <groupId>org.apache.tuscany.sca</groupId>
            <artifactId>tuscany-base-runtime-pom</artifactId>
            <type>pom</type>
            <version>2.5-SNAPSHOT</version>
        </dependency>

       <dependency>
            <groupId>org.apache.tuscany.sca</groupId>
            <artifactId>tuscany-binding-ws-runtime-axis2</artifactId>
            <version>2.5-SNAPSHOT</version>
       </dependency>
                
        <dependency>
            <groupId>org.mortbay.jetty</groupId>
            <artifactId>jetty</artifactId>
            <version>6.1.19</version>
        </dependency>
                
    </dependencies>

    <build>
       <finalName>${project.artifactId}</finalName>
        <plugins>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>build-helper-maven-plugin</artifactId>
                <version>1.0</version>
                <executions>
                    <execution>
                        <id>add-source</id>
                        <phase>generate-sources</phase>
                        <goals>
                            <goal>add-test-source</goal>
                        </goals>
                        <configuration>
                            <sources>
                                <source>target/jaxws-source</source>
                            </sources>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.jvnet.jax-ws-commons</groupId>
                <artifactId>jaxws-maven-plugin</artifactId>
                <version>2.1</version>
                <dependencies>
                   <dependency>
                      <groupId>com.sun.xml.ws</groupId>
                      <artifactId>jaxws-tools</artifactId>
                      <version>2.2.6-promoted-b10</version>
                   </dependency>
                </dependencies>
                <executions>
                    <execution>
                        <id>wsimport1</id>
                        <phase>process-resources</phase>
                        <goals>
                            <goal>wsimport</goal>
                        </goals>
                        <configuration>
                            <packageName>org.apache.tuscany.sca.binding.ws.jaxws</packageName>
                            <wsdlDirectory>${basedir}/target/classes</wsdlDirectory>
                            <wsdlFiles>
                                <wsdlFile>helloworld-sca.wsdl</wsdlFile>
                            </wsdlFiles>
                            <staleFile>${project.build.directory}/jaxws/stale/.wsimport1StaleFlag</staleFile>
                        </configuration>
                    </execution>  
                    <execution>
                        <id>wsimport2</id>
                        <phase>process-resources</phase>
                        <goals>
                            <goal>wsimport</goal>
                        </goals>
                        <configuration>
                            <packageName>org.apache.tuscany.sca.binding.ws.jaxws.external.service</packageName>
                            <wsdlDirectory>${basedir}/target/classes</wsdlDirectory>
                            <wsdlFiles>
                                <wsdlFile>helloworld-external.wsdl</wsdlFile>
                            </wsdlFiles>
                            <staleFile>${project.build.directory}/jaxws/stale/.wsimport2StaleFlag</staleFile>
                        </configuration>
                    </execution>                                                         
                </executions>
                <configuration>
                    <target>2.1</target>
                    <sourceDestDir>${project.build.directory}/jaxws-source</sourceDestDir>
                    <verbose>true</verbose>
                    <xnocompile>true</xnocompile>
                </configuration>
            </plugin>                     
        </plugins>
    </build>
</project>
