<?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.cayenne</groupId>
		<artifactId>cayenne-parent</artifactId>
		<version>4.1</version>
	</parent>

	<artifactId>cayenne-modeler-parent</artifactId>
	<groupId>org.apache.cayenne.modeler</groupId>
	<name>cayenne-modeler-parent: Cayenne Modeler Parent</name>
	<packaging>pom</packaging>
	
	<modules>
		<module>cayenne-wocompat</module>
		<module>cayenne-modeler</module>
		<module>cayenne-modeler-generic</module>
		<module>cayenne-modeler-generic-ext</module>
		<module>cayenne-modeler-mac-ext</module>
		<module>cayenne-modeler-mac</module>
		<module>cayenne-modeler-win</module>
        <module>cayenne-modeler-win-ext</module>
    </modules>

	<build>
		<plugins>
			<!-- This ensures LICENSE and NOTICE inclusion in all jars -->
            <plugin>
                <artifactId>maven-remote-resources-plugin</artifactId>
                <executions>
                    <execution>
                        <goals>
                            <goal>process</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>
