Apache Sling Launchpad API

This module contains the API exposed by the Launchpad to bundles within the embedded framework.
It is not intended to be installed as a bundle into an OSGi framework; merely used as a dependency
for bundles where access to the Launchpad environment is necessary.

Getting Started
===============

This component uses a Maven 2 (http://maven.apache.org/) build
environment. It requires a Java 5 JDK (or higher) and Maven (http://maven.apache.org/)
2.0.7 or later. We recommend to use the latest Maven version.

If you have Maven 2 installed, you can compile and
package the jar using the following command:

    mvn package

See the Maven 2 documentation for other build features.

The latest source code for this component is available in the
Subversion (http://subversion.tigris.org/) source repository of
the Apache Software Foundation. If you have Subversion installed,
you can checkout the latest source using the following command:

    svn checkout http://svn.apache.org/repos/asf/sling/trunk/launchpad/api

See the Subversion documentation for other source control features.

