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

	<groupId>org.apache.isis.incubator</groupId>
	<artifactId>isis-incubator</artifactId>

	<name>Apache Isis Incubator</name>
	<description>
        Collection of Apache Isis artifacts, currently incubating.
    </description>

	<packaging>pom</packaging>

	<properties>
		<jar-plugin.automaticModuleName>org.apache.isis.incubator</jar-plugin.automaticModuleName>
		<git-plugin.propertiesDir>org/apache/isis/incubator</git-plugin.propertiesDir>
	</properties>

	<build>
		<resources>
			<resource>
				<filtering>true</filtering>
				<directory>src/main/resources</directory>
				<includes>
					<include>**</include>
				</includes>
			</resource>
			<resource>
				<filtering>false</filtering>
				<directory>src/main/java</directory>
				<includes>
					<include>**</include>
				</includes>
				<excludes>
					<exclude>**/*.java</exclude>
				</excludes>
			</resource>
		</resources>

		<plugins>
			<plugin>
				<groupId>org.apache.rat</groupId>
				<artifactId>apache-rat-plugin</artifactId>

				<!-- APACHE ISIS customisation 4/7: start -->
				<configuration>
					<addDefaultLicenseMatchers>true</addDefaultLicenseMatchers>
					<excludeSubProjects>true</excludeSubProjects>
					<excludes>
						<exclude>**/target/**</exclude>
						<exclude>**/target-ide/**</exclude>

						<exclude>**/node_modules/**</exclude>
						<exclude>**/node/npm</exclude>
						<exclude>**/node/npm.cmd</exclude>

						<exclude>**/*.project</exclude>
						<exclude>**/.classpath</exclude>
						<exclude>**/.settings/**</exclude>
						<exclude>**/*.launch</exclude>

						<exclude>**/*.iml</exclude>
						<exclude>**/webpack.generated.js</exclude>

						<exclude>**/*.gitkeep</exclude>
						<exclude>**/*.pdn</exclude>
						<exclude>**/*.svg</exclude>
						<exclude>**/*.rtf</exclude>
						<exclude>**/*.json</exclude>
						<exclude>**/*.min.js</exclude>

						<exclude>**/module-nav.adoc</exclude>
						<exclude>**/component-nav.adoc</exclude>

						<exclude>**/MANIFEST.MF</exclude>
						<exclude>**/*.ucd</exclude>
						<exclude>**/*.ucls</exclude>

						<exclude>**/datanucleus.log</exclude>
						<exclude>**/gradle/wrapper/gradle-wrapper.properties</exclude>
						<exclude>**/gradlew</exclude>
						<exclude>**/gradlew.bat</exclude>

						<exclude>**/intellij/launch/*.xml</exclude>

						<exclude>**/META-INF/services/**</exclude>

						<exclude>**/package.json.d/project.info</exclude>
						<exclude>**/src/main/resources/hbs/**</exclude>
						<exclude>**/src/test/kotlin/org/apache/isis/client/kroviz/snapshots/**</exclude>
						<exclude>**/webpack.config.d/*.js</exclude>

						<exclude>**/ui/pnpm-lock.yaml</exclude>
						<exclude>**/ui/pnpmfile.js</exclude>
						<exclude>**/ui/webpack.config.js</exclude>
					</excludes>
					<licenses>
						<license
								implementation="org.apache.rat.analysis.license.SimplePatternBasedLicense">
							<licenseFamilyCategory>AL2  </licenseFamilyCategory>
							<licenseFamilyName>Apache License 2.0</licenseFamilyName>
							<notes />
							<patterns>
								<pattern>Licensed to the Apache Software Foundation (ASF) under
									one</pattern>
							</patterns>
						</license>
					</licenses>
					<licenseFamilies>
						<licenseFamily
								implementation="org.apache.rat.license.SimpleLicenseFamily">
							<familyName>Apache License 2.0</familyName>
						</licenseFamily>
					</licenseFamilies>
				</configuration>
			</plugin>
		</plugins>
	</build>

	<dependencyManagement>
		<dependencies>

			<dependency>
				<groupId>org.apache.isis.incubator.extensions</groupId>
				<artifactId>isis-extensions-commandreplay</artifactId>
				<version>2.0.0-SNAPSHOT</version>
				<type>pom</type>
			</dependency>
			<dependency>
				<groupId>org.apache.isis.incubator.extensions</groupId>
				<artifactId>isis-extensions-commandreplay-primary</artifactId>
				<version>2.0.0-SNAPSHOT</version>
			</dependency>
			<dependency>
				<groupId>org.apache.isis.incubator.extensions</groupId>
				<artifactId>isis-extensions-commandreplay-secondary</artifactId>
				<version>2.0.0-SNAPSHOT</version>
			</dependency>

			<dependency>
				<groupId>org.apache.isis.incubator.viewer</groupId>
				<artifactId>isis-viewer-graphql</artifactId>
				<version>2.0.0-SNAPSHOT</version>
			</dependency>

			<dependency>
				<groupId>org.apache.isis.incubator.viewer</groupId>
				<artifactId>isis-viewer-javafx</artifactId>
				<version>2.0.0-SNAPSHOT</version>
			</dependency>

			<dependency>
				<groupId>org.apache.isis.incubator.viewer</groupId>
				<artifactId>isis-viewer-vaadin</artifactId>
				<version>2.0.0-SNAPSHOT</version>
				<type>pom</type>
			</dependency>
			<dependency>
				<groupId>org.apache.isis.incubator.viewer</groupId>
				<artifactId>isis-viewer-vaadin-model</artifactId>
				<version>2.0.0-SNAPSHOT</version>
			</dependency>
			<dependency>
				<groupId>org.apache.isis.incubator.viewer</groupId>
				<artifactId>isis-viewer-vaadin-ui</artifactId>
				<version>2.0.0-SNAPSHOT</version>
			</dependency>
			<dependency>
				<groupId>org.apache.isis.incubator.viewer</groupId>
				<artifactId>isis-viewer-vaadin-viewer</artifactId>
				<version>2.0.0-SNAPSHOT</version>
			</dependency>


			<!-- TESTING -->

			<dependency>
				<groupId>org.apache.isis.testing</groupId>
				<artifactId>isis-testing-fixtures-applib</artifactId>
				<version>2.0.0-SNAPSHOT</version>
			</dependency>

		</dependencies>
	</dependencyManagement>

	<modules>
 		<module>clients/kroviz</module>
 		<module>extensions/core/commandreplay</module>
		<module>viewers/graphql</module>
		<module>viewers/javafx</module>
		<module>viewers/vaadin</module>
		<module>../valuetypes/asciidoc/ui/vaadin</module>
	</modules>

</project>


