<?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.2.1</version>
	</parent>
	<artifactId>juddi-core</artifactId>
	<packaging>bundle</packaging>

	<name>jUDDI Core Services</name>
	<build>
		<plugins>
			<plugin>
				<groupId>org.apache.felix</groupId>
				<artifactId>maven-bundle-plugin</artifactId>
				<version>1.4.0</version>
				<configuration>
					<instructions>
						<Export-Package>org.apache.juddi, org.apache.juddi.api,
							org.apache.juddi.api.impl,
							org.apache.juddi.api.util,
							org.apache.juddi.config, org.apache.juddi.config,
							org.apache.juddi.cryptor, org.apache.juddi.keygen,
							org.apache.juddi.mapping, org.apache.juddi.model,
							org.apache.juddi.query, org.apache.juddi.query.util,
							org.apache.juddi.rmi, org.apache.juddi.subscription,
							org.apache.juddi.subscription.notify,
							org.apache.juddi.replication,
							org.apache.juddi.validation, org.apache.juddi.validation.vsv, org.apache.juddi.v3.auth,
							org.apache.juddi.v3.error</Export-Package>
						<Include-Resource>juddi_install_data=src/main/resources/juddi_install_data,
							src/main/resources/messages.properties</Include-Resource>
					</instructions>
				</configuration>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-antrun-plugin</artifactId>
				<version>1.3</version>
				<executions>
					<execution>
						<phase>generate-resources</phase>
						<configuration>
							<tasks>
								<delete dir="juddi-derby-test-db" />
							</tasks>
						</configuration>
						<goals>
							<goal>run</goal>
						</goals>
					</execution>
				</executions>
			</plugin>
			<plugin>
              <groupId>org.codehaus.mojo</groupId>
              <artifactId>hibernate3-maven-plugin</artifactId>
              <version>2.2</version>
              <!-- <executions> <execution> <phase>process-classes</phase> <goals> 
                  <goal>hbm2ddl</goal> </goals> </execution> </executions> -->
              <configuration>
                  <components>
                      <component>
                          <name>hbm2ddl</name>
                          <implementation>jpaconfiguration</implementation>
                      </component>
                  </components>
                  <componentProperties>
                      <persistenceunit>juddiDatabase</persistenceunit>
                      <outputfilename>schema.ddl</outputfilename>
                      <drop>false</drop>
                      <create>true</create>
                      <export>false</export>
                      <format>true</format>
                  </componentProperties>
              </configuration>
          </plugin>
	</plugins>
	</build>
	<dependencies>
		<dependency>
			<groupId>org.apache.juddi</groupId>
			<artifactId>uddi-ws</artifactId>
			<version>${project.parent.version}</version>
		</dependency>
		<dependency>
			<groupId>org.apache.juddi</groupId>
			<artifactId>juddi-client</artifactId>
			<version>${project.parent.version}</version>
		</dependency>
		<dependency>
			<groupId>org.apache.juddi</groupId>
			<artifactId>uddi-tck-base</artifactId>
			<version>${project.parent.version}</version>
			<scope>test</scope>
		</dependency>
		<dependency>
            <groupId>commons-configuration</groupId>
            <artifactId>commons-configuration</artifactId>
            <version>1.9</version>
        </dependency>
		 <dependency>
	<groupId>org.apache.commons</groupId>
	<artifactId>commons-lang3</artifactId>
	<version>3.1</version>
</dependency>
		<dependency>
			<groupId>org.hibernate.javax.persistence</groupId>
			<artifactId>hibernate-jpa-2.1-api</artifactId>
			<version>1.0.0.Final</version>
		</dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>
            <version>4.3.6.Final</version>
            <exclusions>
                <exclusion>
                    <groupId>cglib</groupId>
                    <artifactId>cglib</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-entitymanager</artifactId>
            <version>4.3.6.Final</version>
        </dependency>
        <dependency>
            <groupId>cglib</groupId>
            <artifactId>cglib-nodep</artifactId>
            <version>2.1_3</version>
        </dependency>
		<dependency>
			<groupId>commons-codec</groupId>
			<artifactId>commons-codec</artifactId>
			<version>1.3</version>
		</dependency>
		
		<dependency>
			<groupId>org.apache.geronimo.specs</groupId>
			<artifactId>geronimo-jta_1.1_spec</artifactId>
			<version>1.1.1</version>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>org.apache.geronimo.javamail</groupId>
			<artifactId>geronimo-javamail_1.4_mail</artifactId>
			<version>1.8.3</version>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>org.apache.derby</groupId>
			<artifactId>derby</artifactId>
			<version>10.5.3.0_1</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>5.1.6</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>postgresql</groupId>
			<artifactId>postgresql</artifactId>
			<version>8.2-504.jdbc3</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.mockejb</groupId>
			<artifactId>mockejb</artifactId>
			<version>0.6-beta2</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>dumbster</groupId>
			<artifactId>dumbster</artifactId>
			<version>1.5</version>
			<scope>test</scope>
		</dependency>
	 <dependency>
	  <groupId>commons-collections</groupId>
	  <artifactId>commons-collections</artifactId>
	  <version>3.2</version>
	 </dependency>
	 <dependency>
	  <groupId>javax.servlet</groupId>
	  <artifactId>servlet-api</artifactId>
	  <version>2.4</version>
	 </dependency>
	</dependencies>
		
</project>
