<?xml version="1.0" encoding="UTF-8"?>
<!--
 * Copyright 2001-2009 The Apache Software Foundation.
 *
 * Licensed 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>
  <parent>
    <groupId>org.apache.juddi</groupId>
    <artifactId>juddi-parent</artifactId>
    <version>3.1.2-SNAPSHOT</version>
  </parent> 
  <artifactId>juddi-client-extras</artifactId>
  <packaging>bundle</packaging>
  <name>jUDDI Client side extras</name>
  <properties>
    <cxf.version>2.3.6</cxf.version>
  </properties>

  <dependencies>
    <dependency>
	<groupId>org.apache.juddi</groupId>
        <artifactId>juddi-client</artifactId>
        <version>${project.parent.version}</version>
    </dependency>
    <dependency>
        <groupId>org.apache.juddi</groupId>
        <artifactId>uddi-ws</artifactId>
        <version>${project.parent.version}</version>
     </dependency>
     <dependency>
        <groupId>commons-configuration</groupId>
        <artifactId>commons-configuration</artifactId>
        <version>1.6</version>
     </dependency>
      <dependency>
		<groupId>javax.servlet</groupId>
		<artifactId>servlet-api</artifactId>
		<version>2.5</version>
		<scope>provided</scope>
	 </dependency>
	 <dependency>
    	<groupId>wsdl4j</groupId>
    	<artifactId>wsdl4j</artifactId>
    	<version>1.6.2</version>
    </dependency>

    <dependency>
        <groupId>org.apache.cxf</groupId>
        <artifactId>cxf-rt-frontend-jaxws</artifactId>
        <version>${cxf.version}</version>
	<scope>compile</scope>
    </dependency>
    <dependency>
        <groupId>org.apache.cxf</groupId>
        <artifactId>cxf-rt-transports-http</artifactId>
        <version>${cxf.version}</version>
        <exclusions>
            <exclusion>
                <groupId>cglib</groupId>
                <artifactId>cglib</artifactId>
            </exclusion>
       </exclusions>
       <scope>compile</scope>
    </dependency>
  </dependencies> 
</project>
