<project>
  <parent>
    <groupId>org.apache.felix</groupId>
    <artifactId>felix</artifactId>
    <version>0.9.0-incubator-SNAPSHOT</version>
  </parent>
  <modelVersion>4.0.0</modelVersion>
  <name>Servlet 2.1 API</name>
  <description>Servlet 2.1 API</description>
  <artifactId>javax.servlet</artifactId>
  <packaging>bundle</packaging>
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.felix</groupId>
        <artifactId>maven-bundle-plugin</artifactId>
        <extensions>true</extensions>
        <configuration>
          <instructions>
            <Bundle-Copyright>Copyright 1999,2005 The Apache Software Foundation</Bundle-Copyright>
            <Bundle-Category>servlet</Bundle-Category>
            <Export-Package>javax.servlet;specification-version="2.1",javax.servlet.http;specification-version="2.1"</Export-Package>
            <Import-Package>!javax.servlet.*,*</Import-Package>
          </instructions>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>
