Introducing the maven-launchpad-plugin and builder (fka uber) project described in SLING-1197

git-svn-id: https://svn.apache.org/repos/asf/sling/trunk@894656 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/pom.xml b/pom.xml
index b8bdfd5..e85f7be 100644
--- a/pom.xml
+++ b/pom.xml
@@ -7,9 +7,9 @@
     to you under the Apache License, Version 2.0 (the
     "License"); you may not use this file except in compliance
     with the License.  You may obtain a copy of the License at
-    
+
     http://www.apache.org/licenses/LICENSE-2.0
-    
+
     Unless required by applicable law or agreed to in writing,
     software distributed under the License is distributed on an
     "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.apache.sling</groupId>
         <artifactId>sling</artifactId>
-        <version>8</version>
+        <version>9-SNAPSHOT</version>
         <relativePath>../../parent/pom.xml</relativePath>
     </parent>
 
@@ -48,7 +48,7 @@
             Jetty default port (override with -D)
         -->
         <http.port>8888</http.port>
-        
+
         <!-- path suffix for HTTP access to Sling -->
         <http.base.path />
 
@@ -59,28 +59,28 @@
         <test.host>localhost</test.host>
 
         <!--
-            Disable Jetty webapp rescan (override with -D) 
+            Disable Jetty webapp rescan (override with -D)
         -->
         <jetty.scan.interval.seconds>0</jetty.scan.interval.seconds>
 
-        <!-- 
+        <!--
             Sling home directory when starting with jetty:run
         -->
         <jetty.sling.home>target/sling</jetty.sling.home>
 
-        <!-- 
+        <!--
             Defines which tests are for the "integration-testing" phase
         -->
         <integration.test.code.path>
             **/launchpad/webapp/integrationtest
         </integration.test.code.path>
 
-        <!-- 
+        <!--
             Set this to true to stop mvn once the integration test Jetty instance is
             started. Useful to manually test the integration testing webapp.
         -->
         <integration.test.wait>false</integration.test.wait>
-        
+
         <resources.bundles.path>${project.build.directory}/launchpad-bundles/resources/bundles</resources.bundles.path>
     </properties>
 
@@ -136,7 +136,7 @@
                             <name>sling.home</name>
                             <value>${jetty.sling.home}</value>
                         </systemProperty>
-                        
+
                     </systemProperties>
 
                     <connectors>
@@ -146,7 +146,7 @@
                         </connector>
                     </connectors>
 
-                    <!-- 
+                    <!--
                         Use target/... as the webapp source, as we unpack stuff there from the
                         Sling launcher modules
                     -->
@@ -157,84 +157,42 @@
             </plugin>
 
             <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-dependency-plugin</artifactId>
+                <groupId>org.apache.sling</groupId>
+                <artifactId>maven-launchpad-plugin</artifactId>
                 <executions>
                     <execution>
-                        <!-- Unpack the sling-app launcher for inclusion in the web app -->
-                        <id>unpack-dependencies</id>
+                        <id>prepare-package</id>
                         <goals>
-                            <goal>unpack-dependencies</goal>
+                            <goal>prepare-package</goal>
                         </goals>
                         <configuration>
-                            <includeArtifactIds>
-                                org.apache.sling.launchpad.bundles
-                            </includeArtifactIds>
-                            <includes>
-                                resources/**
-                            </includes>
-                            <excludeTransitive>true</excludeTransitive>
-                            <outputDirectory>
-                                ${project.build.directory}/launchpad-bundles
-                            </outputDirectory>
-                            <overWriteReleases>false</overWriteReleases>
-                            <overWriteSnapshots>
-                                true
-                            </overWriteSnapshots>
-                        </configuration>
-                    </execution>
-                    <!-- Launcher Jar -->                    
-                    <execution>
-                        <id>copy-launcher-jar</id>
-                        <goals>
-                            <goal>copy</goal>
-                        </goals>
-                        <configuration>
-                            <artifactItems>
-                                <artifactItem>
-                                    <groupId>org.apache.sling</groupId>
-                                    <artifactId>org.apache.sling.launchpad.base</artifactId>
-                                    <!-- WARNING this pom contains two references to launchpad.base, keep them in sync! -->
-                                    <version>2.1.1-SNAPSHOT</version>
-                                </artifactItem>
-                            </artifactItems>
-                            <stripVersion>true</stripVersion>
-                            <excludeTransitive>true</excludeTransitive>
-                            <outputDirectory>
-                                ${project.build.directory}/launchpad-bundles/resources
-                            </outputDirectory>
-                        </configuration>
-                    </execution>
+                            <defaultBundleList>
+                                <version>6-SNAPSHOT</version>
+                            </defaultBundleList>
 
-                    <execution>
-                        <!-- 
-                        	Copy additional bundles that must be initially installed to
-                            WEB-INF/resources/bundles/N where N = desired
-                            start level 
-                        -->
-                        <id>copy-bundles-dependencies</id>
-                        <goals>
-                            <goal>copy-dependencies</goal>
-                        </goals>
-                        <configuration>
-                            <outputDirectory>
-                                ${resources.bundles.path}/0
-                            </outputDirectory>
-                            <excludeTransitive>true</excludeTransitive>
-                            <includeArtifactIds>
-                                org.apache.sling.launchpad.test-services,org.apache.sling.launchpad.test-services-war
-                            </includeArtifactIds>
-                            <includeScope>
-                                provided
-                            </includeScope>
+                            <additionalBundles>
+                                <additionalBundle>
+                                    <groupId>org.apache.sling</groupId>
+                                    <artifactId>org.apache.sling.launchpad.test-services</artifactId>
+                                    <version>2.0.7-SNAPSHOT</version>
+                                    <startLevel>0</startLevel>
+                                </additionalBundle>
+                                <additionalBundle>
+                                    <groupId>org.apache.sling</groupId>
+                                    <artifactId>org.apache.sling.launchpad.test-services-war</artifactId>
+                                    <version>2.0.7-SNAPSHOT</version>
+                                    <type>war</type>
+                                    <startLevel>0</startLevel>
+                                </additionalBundle>
+                            </additionalBundles>
                         </configuration>
                     </execution>
                 </executions>
             </plugin>
 
-            <!-- 
-              Include sling-app launcher classes and resources, but no Sling 
-              bundles (we want to specify our own versions) 
+            <!--
+              Include sling-app launcher classes and resources, but no Sling
+              bundles (we want to specify our own versions)
             -->
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
@@ -267,12 +225,12 @@
                 <artifactId>maven-surefire-plugin</artifactId>
                 <configuration>
                     <systemProperties>
-                        <!-- 
+                        <!--
                             WARNING: make sure these URLs are consistent with the
                             cargo-maven2-plugin settings: AFAIK Maven does not
                             expand variables in the <value> element.
                             And WARNING: these properties are duplicated somewhere in this
-                            POM with slightly different values...there must be a better way. 
+                            POM with slightly different values...there must be a better way.
                         -->
                         <property>
                             <name>launchpad.http.server.url</name>
@@ -339,12 +297,12 @@
                                         </include>
                                     </includes>
                                     <systemProperties>
-                                        <!-- 
+                                        <!--
                                             WARNING: make sure these URLs are consistent with the
                                             cargo-maven2-plugin settings: AFAIK Maven does not
                                             expand variables in the <value> element.
                                             And WARNING: these properties are duplicated somewhere in this
-                                            POM with slightly different values...there must be a better way. 
+                                            POM with slightly different values...there must be a better way.
                                         -->
                                         <property>
                                             <name>
@@ -362,7 +320,7 @@
                                                 http://${test.host}:${http.port}/${project.build.finalName}/${webdav.workspace.path}
                                             </value>
                                         </property>
-                                        
+
                                     </systemProperties>
                                 </configuration>
                             </execution>
@@ -404,7 +362,7 @@
                                     <cargo.servlet.port>
                                         ${http.port}
                                     </cargo.servlet.port>
-                                    <!-- 
+                                    <!--
                                         <cargo.jvmargs>-Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,address=30333,server=y,suspend=y</cargo.jvmargs>
                                     -->
                                 </properties>
@@ -441,31 +399,21 @@
                         </configuration>
                     </plugin>
                 </plugins>
-            </build>    
-        </profile>        
+            </build>
+        </profile>
     </profiles>
 
     <dependencies>
-    
+
         <!--  The basic Sling WebApp -->
         <dependency>
             <groupId>org.apache.sling</groupId>
             <artifactId>org.apache.sling.launchpad.base</artifactId>
-            <!-- WARNING this pom contains two references to launchpad.base, keep them in sync! -->
             <version>2.1.1-SNAPSHOT</version>
             <classifier>webapp</classifier>
             <type>war</type>
             <scope>runtime</scope>
         </dependency>
-        
-        <!-- The basic Sling Bundles -->
-        <dependency>
-            <groupId>org.apache.sling</groupId>
-            <artifactId>org.apache.sling.launchpad.bundles</artifactId>
-            <version>6-SNAPSHOT</version>
-            <scope>provided</scope>
-            <optional>true</optional>
-        </dependency>
 
         <!-- JCR Install - needs to be in a profile -->
         <dependency>
@@ -494,19 +442,6 @@
             <scope>test</scope>
         </dependency>
         <dependency>
-            <groupId>org.apache.sling</groupId>
-            <artifactId>org.apache.sling.launchpad.test-services</artifactId>
-            <version>2.0.7-SNAPSHOT</version>
-            <scope>provided</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.sling</groupId>
-            <artifactId>org.apache.sling.launchpad.test-services-war</artifactId>
-            <version>2.0.7-SNAPSHOT</version>
-            <type>war</type>
-            <scope>provided</scope>
-        </dependency>
-        <dependency>
             <groupId>org.slf4j</groupId>
             <artifactId>jcl-over-slf4j</artifactId>
             <version>1.5.2</version>