<?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 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.causeway.core</groupId>
		<artifactId>causeway-core</artifactId>
		<version>2.0.0-RC1</version>
		<relativePath>../../core/pom.xml</relativePath>
	</parent>

	<groupId>org.apache.causeway.persistence</groupId>
	<artifactId>causeway-persistence-commons</artifactId>

	<name>Apache Causeway Persistence - Commons</name>
	<description>
		Apache Causeway Common utilities for persistence stacks
    </description>

	<properties>
		<jar-plugin.automaticModuleName>org.apache.causeway.persistence.commons</jar-plugin.automaticModuleName>
		<git-plugin.propertiesDir>org/apache/causeway/persistence/commons</git-plugin.propertiesDir>
	</properties>

	<dependencies>

		<dependency>
			<groupId>org.apache.causeway.commons</groupId>
			<artifactId>causeway-commons</artifactId>
		</dependency>

		<dependency>
			<groupId>org.apache.causeway.core</groupId>
			<artifactId>causeway-applib</artifactId>
		</dependency>

		<dependency>
			<groupId>org.apache.causeway.core</groupId>
			<artifactId>causeway-core-runtime</artifactId>
		</dependency>

		<!-- TESTING -->

        <dependency>
            <groupId>org.apache.causeway.core</groupId>
            <artifactId>causeway-core-internaltestsupport</artifactId>
            <scope>test</scope>
        </dependency>

	</dependencies>


</project>
