<?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.valuetypes</groupId>
		<artifactId>isis-valuetypes-markdown</artifactId>
		<version>2.0.0-M9</version>
	</parent>

	<artifactId>isis-valuetypes-markdown-ui</artifactId>
	<name>Apache Isis Val - Markdown (ui)</name>
	<packaging>pom</packaging>

	<properties>
		<jar-plugin.automaticModuleName>org.apache.isis.valuetypes.markdown.ui</jar-plugin.automaticModuleName>
		<git-plugin.propertiesDir>org/apache/isis/valuetypes/markdown/ui</git-plugin.propertiesDir>
	</properties>

	<dependencies>

		<dependency>
			<groupId>org.apache.isis.valuetypes</groupId>
			<artifactId>isis-valuetypes-markdown-applib</artifactId>
		</dependency>

		<dependency>
			<groupId>org.apache.isis.core</groupId>
			<artifactId>isis-core-metamodel</artifactId>
		</dependency>

		<!-- provides a markdown parser -->
		<dependency>
			<groupId>com.vladsch.flexmark</groupId>
			<artifactId>flexmark-all</artifactId>
			<version>${flexmark.version}</version>
			<exclusions>
				<exclusion>
					<groupId>org.jsoup</groupId>
					<artifactId>jsoup</artifactId>
				</exclusion>
			</exclusions>
		</dependency>
		<!-- convergence issue with com.vaadin:flow-server -->
		<dependency>
			<groupId>org.jsoup</groupId>
			<artifactId>jsoup</artifactId>
		</dependency>

	</dependencies>

	<modules>
		<module>wicket</module>
	</modules>
</project>
