<?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/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>org.apache.nuvem</groupId>
		<artifactId>nuvem</artifactId>
		<version>1.0-incubating-SNAPSHOT</version>
		<relativePath>../pom.xml</relativePath>
	</parent>
	<artifactId>nuvem-samples</artifactId>
	<version>1.0-incubating-SNAPSHOT</version>
	<name>Apache Nuvem Cloud Store common assets</name>
	<packaging>pom</packaging>


	
	<modules>
		<!-- Modules -->
		<module>store-assets</module>
		<module>store-appengine-webapp</module>
		<module>store-catalog-appengine-webapp</module>
		<module>store-catalog-ibmcloud-webapp</module>
		<module>store-merger-appengine-webapp</module>
		<module>store-standalone</module>
	</modules>
	<dependencies>
        <dependency>
         	<groupId>org.apache.nuvem</groupId>
         	<artifactId>nuvem-sca-config</artifactId>
         	<version>1.0-incubating-SNAPSHOT</version>
        </dependency>
	</dependencies>
	
</project>