<?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>
	<properties>
		<metamodel.version>5.0-RC3</metamodel.version>
	</properties>
	<parent>
		<groupId>org.apache.metamodel</groupId>
		<artifactId>MetaModel</artifactId>
		<version>5.0-RC3</version>
	</parent>
	<scm>
		<url>https://git-wip-us.apache.org/repos/asf?p=metamodel-membrane.git</url>
		<connection>scm:git:http://git-wip-us.apache.org/repos/asf/metamodel-membrane.git</connection>
		<developerConnection>scm:git:https://git-wip-us.apache.org/repos/asf/metamodel-membrane.git</developerConnection>
		<tag>HEAD</tag>
	</scm>
	<groupId>org.apache.metamodel.membrane</groupId>
	<artifactId>Membrane-parent</artifactId>
	<version>0.1-SNAPSHOT</version>
	<name>MetaModel Membrane</name>
	<description>Data Federation as a RESTful service.</description>
	<url>http://metamodel.apache.org</url>
	<inceptionYear>2017</inceptionYear>
	<packaging>pom</packaging>
	<modules>
		<module>swagger-codegen</module>
		<module>core</module>
		<module>war</module>
		<module>undertow</module>
	</modules>

	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>org.apache.metamodel</groupId>
				<artifactId>MetaModel-core</artifactId>
				<version>${metamodel.version}</version>
			</dependency>
			<dependency>
				<groupId>org.apache.metamodel</groupId>
				<artifactId>MetaModel-spring</artifactId>
				<version>${metamodel.version}</version>
			</dependency>
			<dependency>
				<groupId>org.apache.metamodel</groupId>
				<artifactId>MetaModel-full</artifactId>
				<version>${metamodel.version}</version>
			</dependency>
			<dependency>
				<groupId>javax.servlet</groupId>
				<artifactId>javax.servlet-api</artifactId>
				<version>3.1.0</version>
				<scope>provided</scope>
			</dependency>
		</dependencies>
	</dependencyManagement>
</project>
