<?xml version="1.0" encoding="UTF-8"?>
<!--

    Copyright (c) 2010-2018 BSI Business Systems Integration AG.
    All rights reserved. This program and the accompanying materials
    are made available under the terms of the Eclipse Public License v1.0
    which accompanies this distribution, and is available at
    http://www.eclipse.org/legal/epl-v10.html

    Contributors:
        BSI Business Systems Integration AG - initial API and implementation

-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <parent>
    <groupId>org.eclipse.scout.rt</groupId>
    <artifactId>org.eclipse.scout.rt</artifactId>
    <version>10.0.0-SNAPSHOT</version>
    <relativePath>../org.eclipse.scout.rt</relativePath>
  </parent>

  <artifactId>org.eclipse.scout.rt.server.jaxws.test</artifactId>
  <packaging>jar</packaging>
  <name>${project.groupId}:${project.artifactId}</name>

  <build>
    <plugins>
      <plugin>
        <groupId>com.helger.maven</groupId>
        <artifactId>jaxws-maven-plugin</artifactId>
        <executions>
          <execution>
            <id>wsimport-1</id>
            <goals>
              <goal>wsimport</goal>
            </goals>
            <configuration>
              <wsdlLocation>WEB-INF/wsdl/JaxWsConsumerTestService.wsdl</wsdlLocation>
              <wsdlFiles>
                <wsdlFile>JaxWsConsumerTestService.wsdl</wsdlFile>
              </wsdlFiles>
            </configuration>
          </execution>
          <execution>
            <id>wsimport-2</id>
            <goals>
              <goal>wsimport</goal>
            </goals>
            <configuration>
              <wsdlLocation>WEB-INF/wsdl/JaxWsPingTestService.wsdl</wsdlLocation>
              <wsdlFiles>
                <wsdlFile>JaxWsPingTestService.wsdl</wsdlFile>
              </wsdlFiles>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>

  <dependencies>
    <!-- Build Dependencies -->
    <dependency>
      <groupId>org.eclipse.scout.rt</groupId>
      <artifactId>org.eclipse.scout.rt.server.jaxws</artifactId>
    </dependency>

    <!-- Test Dependencies -->
    <dependency>
      <groupId>org.eclipse.scout.rt</groupId>
      <artifactId>org.eclipse.scout.rt.server.test</artifactId>
    </dependency>
    <dependency>
      <groupId>com.sun.xml.ws</groupId>
      <artifactId>jaxws-rt</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>ch.qos.logback</groupId>
      <artifactId>logback-classic</artifactId>
      <scope>test</scope>
    </dependency>
  </dependencies>
</project>
