<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">
  <parent>
    <groupId>org.eclipse.jetty</groupId>
    <artifactId>jetty-project</artifactId>
    <version>8.0.0.M1</version>
  </parent>
  <modelVersion>4.0.0</modelVersion>
  <groupId>org.eclipse.jetty</groupId>
  <artifactId>test-jetty-webapp</artifactId>
  <name>Test :: Jetty Test Webapp</name>
  <packaging>war</packaging>
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <executions>
          <execution>
            <id>test</id>
            <phase>test</phase>
          </execution>
        </executions>
        <configuration>
          <excludes>
            <exclude>**/WebAppTest.java</exclude>
          </excludes>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-assembly-plugin</artifactId>
        <executions>
          <execution>
            <phase>package</phase>
            <goals>
              <goal>single</goal>
            </goals>
            <configuration>
              <descriptors>
                <descriptor>config.xml</descriptor>
                <descriptor>src/main/assembly/web-bundle.xml</descriptor>
              </descriptors>
	      <archive>
		<manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile>
	      </archive>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <!-- also make this webapp an osgi bundle -->
      <plugin>
        <artifactId>maven-war-plugin</artifactId>
        <configuration>
          <archive>
            <manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile>
          </archive>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.felix</groupId>
        <artifactId>maven-bundle-plugin</artifactId>
        <version>${felix.bundle.version}</version>
        <extensions>true</extensions>
        <configuration>
	  <supportedProjectTypes>
	    <supportedProjectType>war</supportedProjectType>
	  </supportedProjectTypes>
	</configuration>
        <executions>
          <execution>
            <id>bundle-manifest</id>
            <phase>process-classes</phase>
            <goals>
              <goal>manifest</goal>
            </goals>
            <configuration>
              <instructions>
		<Bundle-SymbolicName>org.eclipse.jetty.test-jetty-webapp</Bundle-SymbolicName>
                <Import-Package>javax.servlet,*</Import-Package>
                <Export-Package>!com.acme*</Export-Package>
                <!-- the test webapp is configured via a jetty xml file
                in order to add the security handler. -->
                <Web-ContextPath>/</Web-ContextPath>
                <!-- in fact the '.' must not be there
                but Felix-BND has a bug:
                http://www.mail-archive.com/users@felix.apache.org/msg04730.html
                https://issues.apache.org/jira/browse/FELIX-1571
                -->
                <Bundle-ClassPath>.,WEB-INF/classes</Bundle-ClassPath>
                <Bundle-RequiredExecutionEnvironment>J2SE-1.5</Bundle-RequiredExecutionEnvironment>
              </instructions>
            </configuration>
           </execution>
        </executions>
      </plugin>
      
<!--
      <plugin>
        <groupId>org.mortbay.jetty</groupId>
        <artifactId>jetty-maven-plugin</artifactId>
        <version>7.1.1-SNAPSHOT</version>
        <configuration>
          <stopPort>8087</stopPort>
          <stopKey>foo</stopKey>
          <scanIntervalSeconds>1</scanIntervalSeconds>
          <systemProperties>
            <systemProperty>
              <name>fooprop</name>
              <value>222</value>
            </systemProperty>
          </systemProperties>
          <webAppConfig>
            <contextPath>/test</contextPath>
            <tempDirectory>${project.build.directory}/work</tempDirectory>
            <sessionHandler implementation="org.eclipse.jetty.server.session.SessionHandler">
              <sessionManager implementation="org.eclipse.jetty.server.session.HashSessionManager">
                <storeDirectory>${basedir}/target/sessions</storeDirectory>
              </sessionManager>
            </sessionHandler>
          </webAppConfig>
          <loginServices>
            <loginService implementation="org.eclipse.jetty.security.HashLoginService">
              <name>Test Realm</name>
              <config>src/main/config/etc/realm.properties</config>
            </loginService>
          </loginServices>
        </configuration>
      </plugin>
-->
      <!-- uncomment to precompile jsps -->
      <!--
      <plugin>
          <groupId>org.eclipse.jetty</groupId>
          <artifactId>jetty-jspc-maven-plugin</artifactId>
          <version>${project.version}</version>
          <executions>
            <execution>
              <id>jspc</id>
              <goals>
                <goal>jspc</goal>
              </goals>
              <configuration>
                 <includes>**/*.foo</includes>
                 <excludes>**/*.fff</excludes>
              </configuration>
            </execution>
          </executions>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-war-plugin</artifactId>
          <configuration>
            <webXml>${basedir}/target/web.xml</webXml>
          </configuration>
        </plugin>
        -->
    </plugins>
  </build>
  <dependencies>
    <dependency>
      <groupId>org.eclipse.jetty</groupId>
      <artifactId>jetty-servlets</artifactId>
      <version>${project.version}</version>
    </dependency>
      <dependency>
         <groupId>${servlet.spec.groupId}</groupId>
         <artifactId>${servlet.spec.artifactId}</artifactId>
         <scope>provided</scope>
       </dependency>
    <dependency>
      <groupId>org.eclipse.jetty</groupId>
      <artifactId>jetty-websocket</artifactId>
      <version>${project.version}</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.eclipse.jetty</groupId>
      <artifactId>jetty-webapp</artifactId>
      <version>${project.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.eclipse.jetty</groupId>
      <artifactId>test-jetty-servlet</artifactId>
      <version>${project.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.eclipse.jetty</groupId>
      <artifactId>jetty-jmx</artifactId>
      <version>${project.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.eclipse.jetty</groupId>
      <artifactId>jetty-server</artifactId>
      <version>${project.version}</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>javax.servlet.jsp</groupId>
      <artifactId>jsp-api</artifactId>
      <version>2.1</version>
      <scope>provided</scope>
    </dependency>
  </dependencies>
</project>
