<?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</groupId>
        <artifactId>wicket-native-websocket</artifactId>
        <version>6.28.0</version>
        <relativePath>../pom.xml</relativePath>
    </parent>
    <artifactId>wicket-native-websocket-jetty</artifactId>
    <packaging>jar</packaging>
    <version>6.28.0</version>
    <name>Wicket Native WebSocket Jetty</name>
    <description>Provides the code specific to integrate with Jetty web container</description>
    <dependencies>
        <dependency>
            <groupId>org.apache.wicket</groupId>
            <artifactId>wicket-native-websocket-core</artifactId>
        </dependency>

        <dependency>
            <groupId>org.eclipse.jetty</groupId>
            <artifactId>jetty-websocket</artifactId>
            <version>${jetty.version}</version>
            <scope>provided</scope>
        </dependency>

    </dependencies>
    <build>
    	<pluginManagement>
    		<plugins>
    			<!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself.-->
    			<plugin>
    				<groupId>org.eclipse.m2e</groupId>
    				<artifactId>lifecycle-mapping</artifactId>
    				<version>1.0.0</version>
    				<configuration>
    					<lifecycleMappingMetadata>
    						<pluginExecutions>
    							<pluginExecution>
    								<pluginExecutionFilter>
    									<groupId>
    										org.apache.felix
    									</groupId>
    									<artifactId>
    										maven-bundle-plugin
    									</artifactId>
    									<versionRange>
    										[2.3.7,)
    									</versionRange>
    									<goals>
    										<goal>manifest</goal>
    									</goals>
    								</pluginExecutionFilter>
    								<action>
    									<ignore />
    								</action>
    							</pluginExecution>
    						</pluginExecutions>
    					</lifecycleMappingMetadata>
    				</configuration>
    			</plugin>
    		</plugins>
    	</pluginManagement>
    </build>
</project>
