Author: gnodet
Date: Mon Oct 18 12:49:22 2010
New Revision: 1023774

URL: http://svn.apache.org/viewvc?rev=1023774&view=rev
Log:
[KARAF-42] trim down the size of the war by using the plugin classloader to 
load the commands, add osgi metadata to the karaf-doc war

Modified:
    karaf/trunk/documentation/pom.xml
    
karaf/trunk/tooling/cmdhelp-maven-plugin/src/main/java/org/apache/karaf/tooling/cmdhelp/CmdHelpMojo.java

Modified: karaf/trunk/documentation/pom.xml
URL: 
http://svn.apache.org/viewvc/karaf/trunk/documentation/pom.xml?rev=1023774&r1=1023773&r2=1023774&view=diff
==============================================================================
--- karaf/trunk/documentation/pom.xml (original)
+++ karaf/trunk/documentation/pom.xml Mon Oct 18 12:49:22 2010
@@ -86,42 +86,8 @@
        <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-api</artifactId>
-               <version>1.6.0</version>
+               <version>1.5.0</version>
        </dependency>
-       
-       <!-- Commands for help generation -->
-      <dependency>
-          <groupId>org.apache.karaf.shell</groupId>
-          <artifactId>org.apache.karaf.shell.commands</artifactId>
-      </dependency>
-      <dependency>
-          <groupId>org.apache.karaf.shell</groupId>
-          <artifactId>org.apache.karaf.shell.config</artifactId>
-      </dependency>
-      <dependency>
-          <groupId>org.apache.karaf.shell</groupId>
-          <artifactId>org.apache.karaf.shell.dev</artifactId>
-      </dependency>
-      <dependency>
-          <groupId>org.apache.karaf.shell</groupId>
-          <artifactId>org.apache.karaf.shell.log</artifactId>
-      </dependency>
-      <dependency>
-          <groupId>org.apache.karaf.shell</groupId>
-          <artifactId>org.apache.karaf.shell.osgi</artifactId>
-      </dependency>
-      <dependency>
-          <groupId>org.apache.karaf.shell</groupId>
-          <artifactId>org.apache.karaf.shell.packages</artifactId>
-      </dependency>
-      <dependency>
-          <groupId>org.apache.karaf.shell</groupId>
-          <artifactId>org.apache.karaf.shell.ssh</artifactId>
-      </dependency>
-      <dependency>
-          <groupId>org.apache.karaf.shell</groupId>
-          <artifactId>org.apache.karaf.shell.wrapper</artifactId>
-      </dependency>
   </dependencies>
 
   <build>
@@ -161,9 +127,58 @@
                 <configuration>
                     <format>conf</format>
                     
<targetFolder>${project.build.directory}/webapp/commands/</targetFolder>
+                    <classLoader>plugin</classLoader>
                 </configuration>
                        </execution>
                </executions>
+        <dependencies>
+            <!-- Commands for help generation -->
+              <dependency>
+                  <groupId>org.apache.karaf.shell</groupId>
+                  <artifactId>org.apache.karaf.shell.console</artifactId>
+                  <version>${project.version}</version>
+              </dependency>
+              <dependency>
+                  <groupId>org.apache.karaf.shell</groupId>
+                  <artifactId>org.apache.karaf.shell.commands</artifactId>
+                  <version>${project.version}</version>
+              </dependency>
+              <dependency>
+                  <groupId>org.apache.karaf.shell</groupId>
+                  <artifactId>org.apache.karaf.shell.config</artifactId>
+                  <version>${project.version}</version>
+              </dependency>
+              <dependency>
+                  <groupId>org.apache.karaf.shell</groupId>
+                  <artifactId>org.apache.karaf.shell.dev</artifactId>
+                  <version>${project.version}</version>
+              </dependency>
+              <dependency>
+                  <groupId>org.apache.karaf.shell</groupId>
+                  <artifactId>org.apache.karaf.shell.log</artifactId>
+                  <version>${project.version}</version>
+              </dependency>
+              <dependency>
+                  <groupId>org.apache.karaf.shell</groupId>
+                  <artifactId>org.apache.karaf.shell.osgi</artifactId>
+                  <version>${project.version}</version>
+              </dependency>
+              <dependency>
+                  <groupId>org.apache.karaf.shell</groupId>
+                  <artifactId>org.apache.karaf.shell.packages</artifactId>
+                  <version>${project.version}</version>
+              </dependency>
+              <dependency>
+                  <groupId>org.apache.karaf.shell</groupId>
+                  <artifactId>org.apache.karaf.shell.ssh</artifactId>
+                  <version>${project.version}</version>
+              </dependency>
+              <dependency>
+                  <groupId>org.apache.karaf.shell</groupId>
+                  <artifactId>org.apache.karaf.shell.wrapper</artifactId>
+                  <version>${project.version}</version>
+              </dependency>
+        </dependencies>
        </plugin>
       <plugin>
         <groupId>org.fusesource.scalate</groupId>
@@ -177,7 +192,7 @@
             </goals>
                        <configuration>
                                
<warSourceDirectory>${project.build.directory}/webapp</warSourceDirectory>
-                       </configuration>          
+                       </configuration>
                        </execution>
         </executions>
                <dependencies>
@@ -190,13 +205,16 @@
       </plugin>
       <plugin>
         <artifactId>maven-war-plugin</artifactId>
+          <version>2.1</version>
           <configuration>
-              <packagingExcludes>WEB-INF/lib/*.jar</packagingExcludes>
               <webResources>
                   <resource>
                       <directory>${project.build.directory}/webapp/</directory>
                   </resource>
               </webResources>
+              <archive>
+                  
<manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile>
+              </archive>
           </configuration>
       </plugin>
       <plugin>
@@ -226,6 +244,42 @@
               </systemProperties>
           </configuration>
       </plugin>
+        <plugin>
+          <groupId>org.apache.felix</groupId>
+          <artifactId>maven-bundle-plugin</artifactId>
+          <executions>
+            <execution>
+              <id>bundle-manifest</id>
+              <phase>process-classes</phase>
+              <goals>
+                <goal>manifest</goal>
+              </goals>
+            </execution>
+          </executions>
+          <configuration>
+            <supportedProjectTypes>
+              <supportedProjectType>jar</supportedProjectType>
+              <supportedProjectType>bundle</supportedProjectType>
+              <supportedProjectType>war</supportedProjectType>
+            </supportedProjectTypes>
+            <instructions>
+              <Import-Package>
+                  javax.servlet,
+                  javax.servlet.http,
+                  org.osgi.framework,
+                  org.osgi.service.packageadmin,
+                  
org.apache.commons.logging;provider=paxlogging;resolution:=optional,
+                  org.apache.log4j;provider=paxlogging;resolution:=optional,
+                  org.slf4j;provider=paxlogging;resolution:=optional,
+              </Import-Package>
+              <Bundle-ClassPath>.,WEB-INF/classes</Bundle-ClassPath>
+              <Embed-Directory>WEB-INF/lib</Embed-Directory>
+              <Embed-Dependency>*;scope=compile|runtime</Embed-Dependency>
+              <Embed-Transitive>true</Embed-Transitive>
+              <Webapp-Context>karaf-doc</Webapp-Context>
+            </instructions>
+          </configuration>
+        </plugin>
     </plugins>
   </build>
 

Modified: 
karaf/trunk/tooling/cmdhelp-maven-plugin/src/main/java/org/apache/karaf/tooling/cmdhelp/CmdHelpMojo.java
URL: 
http://svn.apache.org/viewvc/karaf/trunk/tooling/cmdhelp-maven-plugin/src/main/java/org/apache/karaf/tooling/cmdhelp/CmdHelpMojo.java?rev=1023774&r1=1023773&r2=1023774&view=diff
==============================================================================
--- 
karaf/trunk/tooling/cmdhelp-maven-plugin/src/main/java/org/apache/karaf/tooling/cmdhelp/CmdHelpMojo.java
 (original)
+++ 
karaf/trunk/tooling/cmdhelp-maven-plugin/src/main/java/org/apache/karaf/tooling/cmdhelp/CmdHelpMojo.java
 Mon Oct 18 12:49:22 2010
@@ -85,6 +85,13 @@ public class CmdHelpMojo extends Abstrac
      */
     protected String format;
 
+    /**
+     * The classloader to use to load the commands
+     *
+     * @parameter default-value="project"
+     */
+    protected String classLoader;
+
     private static final String FORMAT_CONF = "conf";
     private static final String FORMAT_DOCBX = "docbx";
 
@@ -96,15 +103,21 @@ public class CmdHelpMojo extends Abstrac
             if (!targetFolder.exists()) {
                 targetFolder.mkdirs();
             }
-            
-            List<URL> urls = new ArrayList<URL>();
-            for (Object object : project.getCompileClasspathElements()) {
-                String path = (String) object;
-                urls.add(new File(path).toURI().toURL());
-            }
 
-            ClassLoader loader = new URLClassLoader(urls.toArray(new 
URL[urls.size()]), getClass().getClassLoader());
-            ClassFinder finder = new ClassFinder(loader, urls);
+            ClassFinder finder;
+            if ("project".equals(classLoader)) {
+                List<URL> urls = new ArrayList<URL>();
+                for (Object object : project.getCompileClasspathElements()) {
+                    String path = (String) object;
+                    urls.add(new File(path).toURI().toURL());
+                }
+                ClassLoader loader = new URLClassLoader(urls.toArray(new 
URL[urls.size()]), getClass().getClassLoader());
+                finder = new ClassFinder(loader, urls);
+            } else if ("plugin".equals(classLoader)) {
+                finder = new ClassFinder(getClass().getClassLoader());
+            } else {
+                throw new MojoFailureException("classLoader attribute must be 
'project' or 'plugin'");
+            }
             List<Class> classes = finder.findAnnotatedClasses(Command.class);
             if (classes.isEmpty()) {
                 throw new MojoFailureException("No command found");


Reply via email to