<?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/xsd/maven-4.0.0.xsd">

	<modelVersion>4.0.0</modelVersion>

	<parent>
		<groupId>org.apache.juneau</groupId>
		<artifactId>juneau-microservice</artifactId>
		<version>8.1.4-SNAPSHOT</version>
	</parent>

	<artifactId>juneau-microservice-jetty</artifactId>
	<name>juneau/microservice/microservice-jetty</name>
	<description>Apache Juneau Microservice Server</description>

	<properties>
		<!-- Skip javadoc generation since we generate them in the aggregate pom -->
		<maven.javadoc.skip>true</maven.javadoc.skip>
		
		<!-- Java 8 required because Jetty requires it. -->
		<maven.compiler.source>1.8</maven.compiler.source>
		<maven.compiler.target>1.8</maven.compiler.target>
	</properties>

	<dependencies>
		<dependency>
			<groupId>org.apache.juneau</groupId>
			<artifactId>juneau-microservice-core</artifactId>
			<version>${project.version}</version>
		</dependency>
		<dependency>
			<groupId>org.eclipse.jetty</groupId>
			<artifactId>jetty-server</artifactId>
			<version>${jetty.version}</version>
		</dependency>
		<dependency>
			<groupId>org.eclipse.jetty</groupId>
			<artifactId>jetty-security</artifactId>
			<version>${jetty.version}</version>
		</dependency>
		<dependency>
			<groupId>org.eclipse.jetty</groupId>
			<artifactId>jetty-servlet</artifactId>
			<version>${jetty.version}</version>
		</dependency>
		<dependency>
			<groupId>org.eclipse.jetty</groupId>
			<artifactId>jetty-xml</artifactId>
			<version>${jetty.version}</version>
		</dependency>
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>javax.servlet-api</artifactId>
		</dependency>
	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-source-plugin</artifactId>
				<executions>
					<execution>
						<id>attach-sources</id>
						<phase>verify</phase>
						<goals>
							<goal>jar-no-fork</goal>
						</goals>
					</execution>
				</executions>
			</plugin>
			<!--plugin>
				<groupId>com.github.siom79.japicmp</groupId>
				<artifactId>japicmp-maven-plugin</artifactId>
				<version>0.13.0</version>
				<configuration>
					<oldVersion>
						<dependency>
							<groupId>org.apache.juneau</groupId>
							<artifactId>juneau-microservice-jetty</artifactId>
							<version>7.1.0</version>
							<type>jar</type>
						</dependency>
					</oldVersion>
					<newVersion>
						<file>
							<path>${project.build.directory}/${project.artifactId}-${project.version}.jar</path>
						</file>
					</newVersion>
					<parameter>
						<onlyModified>true</onlyModified>
						<accessModifier>public</accessModifier>
						<excludes>
							<exclude>org.apache.juneau.microservice.jetty.resources</exclude>
						</excludes>
						<ignoreMissingClasses>true</ignoreMissingClasses>
						<onlyBinaryIncompatible>true</onlyBinaryIncompatible>
						<breakBuildOnBinaryIncompatibleModifications>true</breakBuildOnBinaryIncompatibleModifications>
						<breakBuildIfCausedByExclusion>false</breakBuildIfCausedByExclusion>
						<breakBuildBasedOnSemanticVersioning>true</breakBuildBasedOnSemanticVersioning>
						<overrideCompatibilityChangeParameters>
							<overrideCompatibilityChangeParameter>
								<binaryCompatible>true</binaryCompatible>
								<compatibilityChange>SUPERCLASS_REMOVED</compatibilityChange>
								<sourceCompatible>true</sourceCompatible>
							</overrideCompatibilityChangeParameter>
							<overrideCompatibilityChangeParameter>
								<binaryCompatible>true</binaryCompatible>
								<compatibilityChange>FIELD_REMOVED_IN_SUPERCLASS</compatibilityChange>
								<sourceCompatible>true</sourceCompatible>
							</overrideCompatibilityChangeParameter>
						</overrideCompatibilityChangeParameters>
					</parameter>
				</configuration>
				<executions>
					<execution>
						<phase>verify</phase>
						<goals>
							<goal>cmp</goal>
						</goals>
					</execution>
				</executions>
			</plugin-->
		</plugins>
	</build>

</project>
