<?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-itest</artifactId>
        <version>2.0-M5.1</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-feature-core</artifactId>
            <type>pom</type>
            <version>2.0-M5.1</version>
        </dependency>       
                
    </dependencies>

    <build>
       <finalName>${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.codehaus.mojo</groupId>
                <artifactId>jaxws-maven-plugin</artifactId>
                <version>1.12</version>
                <!-- Explicitly add the transitive dependencies for jaxws-api
                     http://jira.codehaus.org/browse/MEV-498
                -->
                <dependencies>
                    <dependency>
                        <groupId>javax.jws</groupId>
                        <artifactId>jsr181-api</artifactId>
                        <version>1.0-MR1</version>
                    </dependency>
                    <dependency>
                        <groupId>javax.annotation</groupId>
                        <artifactId>jsr250-api</artifactId>
                        <version>1.0</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>
