<!--
  ~ 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 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/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>org.apache.axis2.samples</groupId>
    <artifactId>jaxws-interop</artifactId>
    <packaging>jar</packaging>
    <version>1.6.0</version>
    <name>JAXWS Interop Sample</name>
    <build>
        <sourceDirectory>src</sourceDirectory>
        <resources>
          <resource>
            <directory>resources</directory>
          </resource>
        </resources>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.5</source>
                    <target>1.5</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
    <dependencies>
        <dependency>
            <groupId>javax.xml.bind</groupId>
            <artifactId>jaxb-api</artifactId>
            <version>2.1</version>
            <exclusions>
                <exclusion>
                    <artifactId>jsr173</artifactId>
                    <groupId>javax.xml</groupId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.apache.axis2</groupId>
            <artifactId>axis2-jaxws</artifactId>
            <version>1.6.0</version>
        </dependency>
    </dependencies>
    <repositories>
        <repository>
            <id>apache-m2</id>
            <url>http://people.apache.org/repo/m2-ibiblio-rsync-repository</url>
        </repository>
        <repository>
            <id>apache-snapshots</id>
            <url>http://people.apache.org/repo/m2-snapshot-repository/</url>
        </repository>
        <repository>
            <id>maven2</id>
            <url>http://repo1.maven.org/maven2/</url>
        </repository>
    </repositories>
    <pluginRepositories>
        <pluginRepository>
            <id>apache-m2</id>
            <url>http://people.apache.org/repo/m2-ibiblio-rsync-repository</url>
        </pluginRepository>
        <pluginRepository>
            <id>apache-snapshots</id>
            <url>http://people.apache.org/repo/m2-snapshot-repository</url>
        </pluginRepository>
        <pluginRepository>
            <id>maven2</id>
            <url>http://repo1.maven.org/maven2/</url>
        </pluginRepository>
    </pluginRepositories>
</project>
