<?xml version="1.0" encoding="UTF-8"?>
<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">

  <parent>
    <groupId>org.eclipse.jetty</groupId>
    <artifactId>jetty-parent</artifactId>
    <version>21</version>
  </parent>

  <modelVersion>4.0.0</modelVersion>
  <groupId>org.eclipse.jetty.alpn</groupId>
  <artifactId>alpn-api</artifactId>
  <version>1.1.3.v20160715</version>
  <name>Jetty :: ALPN :: API</name>

  <scm>
    <connection>scm:git:http://git.eclipse.org/gitroot/jetty/org.eclipse.jetty.alpn.git</connection>
    <developerConnection>scm:git:ssh://git.eclipse.org/gitroot/jetty/org.eclipse.jetty.alpn.git</developerConnection>
    <url>http://git.eclipse.org/c/jetty/org.eclipse.jetty.alpn.git/tree</url>
  </scm>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <bundle-name>${project.artifactId}</bundle-name>
    <bundle-symbolic-name>org.eclipse.jetty.alpn.api</bundle-symbolic-name>
    <bundle-doc-url>http://www.eclipse.org/jetty/documentation/current/alpn-chapter.html</bundle-doc-url>
  </properties>

  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-enforcer-plugin</artifactId>
        <version>1.1</version>
        <executions>
          <execution>
            <id>enforce-versions</id>
            <goals>
              <goal>enforce</goal>
            </goals>
            <configuration>
              <rules>
                <requireJavaVersion>
                  <version>[1.8,)</version>
                  <message>[ERROR] OLD JDK [${java.version}] in use. Jetty ${project.version} requires JDK 1.8.0 or newer</message>
                </requireJavaVersion>
                <versionOsgiRule implementation="org.eclipse.jetty.toolchain.enforcer.rules.RequireOsgiCompatibleVersionRule" />
              </rules>
            </configuration>
          </execution>
        </executions>
        <dependencies>
           <dependency>
             <groupId>org.eclipse.jetty.toolchain</groupId>
             <artifactId>jetty-build-support</artifactId>
             <version>1.1</version>
           </dependency>
        </dependencies>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
          <source>1.8</source>
          <target>1.8</target>
        </configuration>
      </plugin>
      <!-- Build helper maven plugin sets the parsedVersion.osgiVersion property -->
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>build-helper-maven-plugin</artifactId>
        <executions>
          <execution>
            <id>set-osgi-version</id>
            <phase>validate</phase>
            <goals>
              <goal>parse-version</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.apache.felix</groupId>
        <artifactId>maven-bundle-plugin</artifactId>
        <extensions>true</extensions>
        <executions>
          <execution>
            <goals>
              <goal>manifest</goal>
            </goals>
            <configuration>
              <instructions>
                <_versionpolicy>[$(version;==;$(@)),$(version;+;$(@)))</_versionpolicy>
                <Bundle-RequiredExecutionEnvironment>JavaSE-1.8</Bundle-RequiredExecutionEnvironment>
                <Bundle-DocURL>${bundle-doc-url}</Bundle-DocURL>
                <Bundle-Vendor>Eclipse Jetty Project</Bundle-Vendor>
                <Bundle-Name>${bundle-name}</Bundle-Name>
                <Bundle-SymbolicName>${bundle-symbolic-name}</Bundle-SymbolicName>
                <Bundle-Copyright>Copyright (c) 2008-2016 Mort Bay Consulting Pty. Ltd.</Bundle-Copyright>
                <Export-Package>
                  org.eclipse.jetty.alpn.*;version="${parsedVersion.majorVersion}.${parsedVersion.minorVersion}.${parsedVersion.incrementalVersion}"
                </Export-Package>
                <Import-Package>*</Import-Package>
                <Bundle-Description>Application Layer Protocol Negotiation API</Bundle-Description>
              </instructions>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <!-- Required for OSGI -->
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <configuration>
          <archive>
            <manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile>
          </archive>
        </configuration>
      </plugin>
    </plugins>
  </build>

</project>
