Index: src/test/java/org/codehaus/mojo/webstart/generator/GeneratorTest.java
===================================================================
--- src/test/java/org/codehaus/mojo/webstart/generator/GeneratorTest.java	(revision 6924)
+++ src/test/java/org/codehaus/mojo/webstart/generator/GeneratorTest.java	(working copy)
@@ -78,21 +78,22 @@
                 return artifact == artifact1;
             }
         };
+        NativeLibResourcesGenerator nlrg = new NativeLibResourcesGenerator(mojo);
         
-        assertEquals("", Generator.getDependenciesText(mojo));
+        assertEquals("", Generator.getDependenciesText(mojo, nlrg));
 
         artifacts.add(artifact1);
         artifacts.add(artifact2);
 
         assertEquals("\n<jar href=\"artifact1-1.0.jar\" main=\"true\"/>"
                    + "\n<jar href=\"artifact2-1.5.jar\"/>\n",
-                Generator.getDependenciesText(mojo));
+                Generator.getDependenciesText(mojo, nlrg));
 
         mojo.setOutputJarVersions(true);
         
         assertEquals("\n<jar href=\"artifact1-1.0.jar\" version=\"1.0\" main=\"true\"/>"
                      + "\n<jar href=\"artifact2-1.5.jar\" version=\"1.5\"/>\n",
-                     Generator.getDependenciesText(mojo));
+                     Generator.getDependenciesText(mojo, nlrg));
 
         
     }
@@ -121,21 +122,22 @@
                 return "lib";
             }
         };
+        NativeLibResourcesGenerator nlrg = new NativeLibResourcesGenerator(mojo);
         
-        assertEquals("", Generator.getDependenciesText(mojo));
+        assertEquals("", Generator.getDependenciesText(mojo, nlrg));
 
         artifacts.add(artifact1);
         artifacts.add(artifact2);
 
         assertEquals("\n<jar href=\"lib/artifact1-1.0.jar\" main=\"true\"/>"
                    + "\n<jar href=\"lib/artifact2-1.5.jar\"/>\n",
-                Generator.getDependenciesText(mojo));
+                Generator.getDependenciesText(mojo, nlrg));
 
         mojo.setOutputJarVersions(true);
         
         assertEquals("\n<jar href=\"lib/artifact1-1.0.jar\" version=\"1.0\" main=\"true\"/>"
                      + "\n<jar href=\"lib/artifact2-1.5.jar\" version=\"1.5\"/>\n",
-                     Generator.getDependenciesText(mojo));
+                     Generator.getDependenciesText(mojo, nlrg));
 
         
     }
Index: src/main/java/org/codehaus/mojo/webstart/generator/Generator.java
===================================================================
--- src/main/java/org/codehaus/mojo/webstart/generator/Generator.java	(revision 6924)
+++ src/main/java/org/codehaus/mojo/webstart/generator/Generator.java	(working copy)
@@ -17,7 +17,6 @@
  */
 
 import java.io.File;
-import java.net.URL;
 import java.util.List;
 
 import org.apache.maven.artifact.Artifact;
@@ -29,11 +28,13 @@
  *
  * @author ngc
  * @author <a href="jerome@coffeebreaks.org">Jerome Lacoste</a>
+ * @author David Bernard
  */
 public class Generator extends AbstractGenerator
 {
 
     private AbstractJnlpMojo config;
+    private NativeLibResourcesGenerator nativeLibGen;
 
     /**
      * @param task
@@ -54,7 +55,7 @@
         super(mavenProject, resourceLoaderPath, defaultTemplateResourceName, outputFile, inputFileTemplatePath, mainClass, webstartJarURL );
         
         this.config = task;
-
+        nativeLibGen = new NativeLibResourcesGenerator(config);
     }
 
     /**
@@ -62,10 +63,13 @@
      */
     protected String getDependenciesText()
     {
-        return getDependenciesText( config );
+        return getDependenciesText(config, nativeLibGen);
     }
 
-    static String getDependenciesText( AbstractJnlpMojo config )
+    /**
+     * {@inheritDoc}
+     */
+    public static String getDependenciesText(AbstractJnlpMojo config, NativeLibResourcesGenerator nativeLibGen)
     {
         String dependenciesText = "";
         List artifacts = config.getPackagedJnlpArtifacts();
@@ -82,6 +86,9 @@
 
             for (int i = 0; i < artifacts.size(); i++) {
                 Artifact artifact = (Artifact)artifacts.get(i);
+                if (nativeLibGen.isNativeJar(artifact)) {
+                    continue;
+                }
                 buffer.append("<jar href=\"");
                 if (jarLibPath != null) {
                     buffer.append(jarLibPath).append("/");
@@ -104,4 +111,12 @@
         return dependenciesText;
     }
     
+    /**
+     * {@inheritDoc}
+     */
+    protected String getNativeLibDependenciesText()
+    {
+        return nativeLibGen.getNativeDependenciesText();
 }
+
+}
Index: src/main/java/org/codehaus/mojo/webstart/generator/AbstractGenerator.java
===================================================================
--- src/main/java/org/codehaus/mojo/webstart/generator/AbstractGenerator.java	(revision 6924)
+++ src/main/java/org/codehaus/mojo/webstart/generator/AbstractGenerator.java	(working copy)
@@ -17,7 +17,6 @@
 
 import java.io.File;
 import java.io.FileWriter;
-import java.net.URL;
 import java.text.DateFormat;
 import java.text.SimpleDateFormat;
 import java.util.Date;
@@ -37,7 +36,7 @@
  *
  * @author Kevin Stembridge
  * @since 30 Aug 2007
- * @version $Revision:$
+ * @version $Revision$
  *
  */
 public abstract class AbstractGenerator {
@@ -203,6 +202,15 @@
     protected abstract String getDependenciesText( );
     
     /**
+     * Subclasses could (optional) implement this method to return the text that should
+     * replace the $nativeLibs placeholder in the JNLP template.
+     * @return The native libs dependencies text, never null (empty string by default).
+     */
+    protected String getNativeLibDependenciesText() {
+        return "";
+    }
+
+    /**
      * Creates a Velocity context and populates it with replacement values
      * for our pre-defined placeholders.
      * 
@@ -212,6 +220,7 @@
         VelocityContext context = new VelocityContext();
 
         context.put( "dependencies", getDependenciesText( ) );
+        context.put( "nativeLibs", getNativeLibDependenciesText());
 
         // Note: properties that contain dots will not be properly parsed by Velocity. Should we replace dots with underscores ?        
         addPropertiesToContext( System.getProperties(), context );
Index: src/main/java/org/codehaus/mojo/webstart/AbstractBaseJnlpMojo.java
===================================================================
--- src/main/java/org/codehaus/mojo/webstart/AbstractBaseJnlpMojo.java	(revision 6924)
+++ src/main/java/org/codehaus/mojo/webstart/AbstractBaseJnlpMojo.java	(working copy)
@@ -1024,7 +1024,7 @@
     /**
      * Log as info when verbose or info is enabled, as debug otherwise.
      */
-    protected void verboseLog( String msg )
+    public void verboseLog( String msg )
     {
         infoOrDebug( isVerbose() || getLog().isInfoEnabled(), msg );
     }
Index: src/main/java/org/codehaus/mojo/webstart/AbstractJnlpMojo.java
===================================================================
--- src/main/java/org/codehaus/mojo/webstart/AbstractJnlpMojo.java	(revision 6924)
+++ src/main/java/org/codehaus/mojo/webstart/AbstractJnlpMojo.java	(working copy)
@@ -691,5 +691,12 @@
         this.outputJarVersions = outputJarVersions;
     }
     
+    public List getNativeLibs() {
+        if ((jnlp == null) || (jnlp.getNativeLibs() == null)){
+            return new ArrayList(0);
 }
+        return jnlp.getNativeLibs();
+    }
 
+}
+
Index: src/main/java/org/codehaus/mojo/webstart/JnlpConfig.java
===================================================================
--- src/main/java/org/codehaus/mojo/webstart/JnlpConfig.java	(revision 6924)
+++ src/main/java/org/codehaus/mojo/webstart/JnlpConfig.java	(working copy)
@@ -17,6 +17,7 @@
  */
 
 import java.io.File;
+import java.util.List;
 
 /**
  * Bean to host part of the JnlpMojo configuration.
@@ -55,6 +56,8 @@
      */
     private File resources;
 
+    private List nativeLibs;
+
     public void setInputTemplateResourcePath( String inputTemplateResourcePath )
     {
         this.inputTemplateResourcePath = inputTemplateResourcePath;
@@ -176,4 +179,14 @@
     {
         return mainClass;
     }
+
+    public List getNativeLibs()
+    {
+        return nativeLibs;
 }
+
+    public void setNativeLibs(List nativeLibs)
+    {
+        this.nativeLibs = nativeLibs;
+    }
+}

