<?xml version="1.0"?>
<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.wicket</groupId>
    <artifactId>wicket-parent</artifactId>
    <version>1.5-RC1</version>
    <relativePath>../pom.xml</relativePath>
  </parent>
  <artifactId>wicket</artifactId>
  <name>Wicket</name>
  <description>
	A module that creates a .jar from the classes in wicket, wicket-util and wicket-request modules.
	This way all users - Maven and non-Maven ones can depend only on the artifact produced by this module without
	bothering that Wicket core depends on other modules.
  </description>
  <dependencies>
    <dependency>
      <groupId>org.apache.wicket</groupId>
      <artifactId>wicket-core</artifactId>
      <version>${project.parent.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.wicket</groupId>
      <artifactId>wicket-util</artifactId>
      <version>${project.parent.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.wicket</groupId>
      <artifactId>wicket-request</artifactId>
      <version>${project.parent.version}</version>
    </dependency>
  </dependencies>
  <build>
    <plugins>
	<!--
		How it works:
		I) In 'prepare-package' phase do:
			1) unpack the dependencies in target/classes so it looks like
				all files (*.class, *.properties, ...) belong to this project
			2) re-generate META-INF/MANIGEST.MF so that it contains all OSGi
				headers for all packages

		II) In 'package' phase maven-jar-plugin collects all that in the
			final artifact
	-->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-dependency-plugin</artifactId>
        <version>2.1</version>
        <executions>
          <execution>
            <id>unpack-dependencies</id>
            <phase>prepare-package</phase>
            <goals>
              <goal>unpack-dependencies</goal>
            </goals>
            <configuration>
              <outputDirectory>${project.build.outputDirectory}</outputDirectory>
              <includes>**/*</includes>
              <includeGroupIds>org.apache.wicket</includeGroupIds>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.apache.felix</groupId>
        <artifactId>maven-bundle-plugin</artifactId>
        <version>2.1.0</version>
        <executions>
          <execution>
            <id>bundle-manifest</id>
            <phase>prepare-package</phase>
            <goals>
              <goal>manifest</goal>
            </goals>
            <configuration>
              <instructions>
                <Import-Package>org.apache.wicket*</Import-Package>
                <DynamicImport-Package>*</DynamicImport-Package>
                <_nouses>true</_nouses>
              </instructions>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
</project>
