<?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.wicket.experimental.wicket9</groupId>
		<artifactId>wicket-http2</artifactId>
		<version>0.9</version>
		<relativePath>../pom.xml</relativePath>
	</parent>
	<artifactId>wicket-http2-servlet4</artifactId>
	<packaging>bundle</packaging>
	<name>Wicket Http/2 Servlet 4</name>
	<description>
		Wicket’s implementation to use the PushBuilder API
		to serve resource via http/2 with less requests. This
		is the Servlet 4 implementation to resolve the PushBuilder API and
		provide the IInitializer.
	</description>

	<properties>
		<automatic-module-name>org.apache.wicket.http2.servlet4</automatic-module-name>
	</properties>

	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>javax.servlet</groupId>
				<artifactId>javax.servlet-api</artifactId>
				<version>4.0.0</version><!--$NO-MVN-MAN-VER$-->
				<scope>provided</scope>
			</dependency>
		</dependencies>
	</dependencyManagement>

	<dependencies>
		<dependency>
		    <groupId>javax.servlet</groupId>
		    <artifactId>javax.servlet-api</artifactId>
		</dependency>
		<dependency>
			<groupId>org.apache.wicket.experimental.wicket9</groupId>
			<artifactId>wicket-http2-core</artifactId>
		</dependency>
	</dependencies>
</project>
