<?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.causeway.extensions</groupId>
		<artifactId>causeway-extensions</artifactId>
		<version>2.0.0</version>
		<relativePath>../../pom.xml</relativePath>
	</parent>

	<artifactId>causeway-extensions-executionrepublisher</artifactId>
	<name>Apache Causeway Ext - Execution Republisher</name>
	<description>Republishes executions persisted in the execution log to the execution outbox</description>

	<packaging>pom</packaging>

	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>org.apache.causeway.extensions</groupId>
				<artifactId>causeway-extensions-executionrepublisher-applib</artifactId>
				<version>2.0.0</version>
			</dependency>

			<dependency>
				<groupId>org.apache.causeway.extensions</groupId>
				<artifactId>causeway-extensions-executionlog</artifactId>
				<version>2.0.0</version>
				<scope>import</scope>
				<type>pom</type>
			</dependency>

			<dependency>
				<groupId>org.apache.causeway.extensions</groupId>
				<artifactId>causeway-extensions-executionoutbox</artifactId>
				<version>2.0.0</version>
				<scope>import</scope>
				<type>pom</type>
			</dependency>
		</dependencies>
	</dependencyManagement>

	<modules>
		<module>applib</module>
	</modules>

</project>
