evenisse 2003/02/21 07:20:47
Modified: src/plugins-build/jnlp plugin.jelly plugin.properties
Added: src/plugins-build/jnlp/src/main/org/apache/maven/jnlp
UpdateManifest.java
src/plugins-build/jnlp/src/plugin-resources jnlp.manifest
Log:
Correction of java web start bug defines here :
o http://forum.java.sun.com/thread.jsp?thread=275890&forum=38&message=1336773
o http://developer.java.sun.com/developer/bugParade/bugs/4739089.html
Revision Changes Path
1.2 +78 -11 jakarta-turbine-maven/src/plugins-build/jnlp/plugin.jelly
Index: plugin.jelly
===================================================================
RCS file: /home/cvs/jakarta-turbine-maven/src/plugins-build/jnlp/plugin.jelly,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- plugin.jelly 24 Jan 2003 03:45:36 -0000 1.1
+++ plugin.jelly 21 Feb 2003 15:20:46 -0000 1.2
@@ -1,8 +1,19 @@
<?xml version="1.0"?>
-<project xmlns:j="jelly:core"
- xmlns:u="jelly:util">
-
+<project
+ xmlns:j="jelly:core"
+ xmlns:u="jelly:util"
+ xmlns:define="jelly:define"
+ xmlns:jarfile="jarfile">
+
+ <define:taglib uri="jarfile">
+ <define:jellybean
+ name="updateManifest"
+ className="org.apache.maven.jnlp.UpdateManifest"
+ method="process"
+ />
+ </define:taglib>
+
<!-- ================================================================== -->
<!-- Generate JNLP files and signs jars if necessary -->
<!-- ================================================================== -->
@@ -17,6 +28,9 @@
<mkdir dir="${maven.jnlp.dir}"/>
<echo>Creating ${maven.jnlp.dir}/${pom.artifactId}.jnlp ...</echo>
+ <!-- ================== -->
+ <!-- Generate JNLP file -->
+ <!-- ================== -->
<j:file name="${maven.jnlp.dir}/${pom.artifactId}.jnlp" prettyPrint="true"
xmlns="dummy">
<jnlp spec="${maven.jnlp.spec}"
@@ -108,24 +122,59 @@
</j:choose>
</jnlp>
</j:file>
-
+
+ <!-- =========================== -->
+ <!-- Copy jars in jnlp directory -->
+ <!-- =========================== -->
<available file="${maven.jnlp.signjar.store}"
property="maven.jnlp.store.exists"/>
- <j:if test="${maven.jnlp.store.exists}">
+ <j:choose>
+ <j:when test="${maven.jnlp.store.exists}">
+ <!-- ================ -->
+ <!-- Updates Manifest -->
+ <!-- ================ -->
+ <mkdir dir="${maven.jnlp.tmpdir}"/>
+
+ <jarfile:updateManifest
+ inputJar="${maven.build.dir}/${maven.final.name}.jar"
+ manifest="${plugin.resources}/jnlp.manifest"
+ outputDir="${maven.jnlp.tmpdir}"
+ />
+
+ <j:forEach var="dep" items="${pom.dependencies}">
+ <j:if test="${dep.getProperty('jnlp.jar')=='true'}">
+ <jarfile:updateManifest
+
inputJar="${maven.repo.local}/${dep.artifactDirectory}/jars/${dep.artifact}"
+ manifest="${plugin.resources}/jnlp.manifest"
+ outputDir="${maven.jnlp.tmpdir}"
+ />
+ </j:if>
+ <j:if test="${dep.getProperty('jnlp.native.jar')=='true'}">
+ <jarfile:updateManifest
+
inputJar="${maven.repo.local}/${dep.artifactDirectory}/jars/${dep.artifact}"
+ manifest="${plugin.resources}/jnlp.manifest"
+ outputDir="${maven.jnlp.tmpdir}"
+ />
+ </j:if>
+ </j:forEach>
+
+ <!-- ========= -->
+ <!-- Sign jars -->
+ <!-- ========= -->
<echo>Found a store...signing jars</echo>
<echo>Signing jar files ...</echo>
<signjar
- jar="${maven.build.dir}/${maven.final.name}.jar"
+ jar="${maven.jnlp.tmpdir}/${maven.final.name}.jar"
signedjar="${maven.jnlp.dir}/${maven.final.name}.jar"
alias="${maven.jnlp.signjar.alias}"
storepass="${maven.jnlp.signjar.storepass}"
keystore="${maven.jnlp.signjar.store}"/>
- <j:forEach var="lib" items="${pom.dependencies}">
+ <j:forEach var="lib" items="${pom.dependencies}">
<j:if test="${lib.getProperty('jnlp.jar')=='true'}">
<signjar
-
jar="${maven.repo.local}/${lib.artifactDirectory}/jars/${lib.artifact}"
+ jar="${maven.jnlp.tmpdir}/${lib.artifact}"
signedjar="${maven.jnlp.dir}/${lib.artifact}"
alias="${maven.jnlp.signjar.alias}"
storepass="${maven.jnlp.signjar.storepass}"
@@ -133,14 +182,32 @@
</j:if>
<j:if test="${lib.getProperty('jnlp.native.jar')=='true'}">
<signjar
-
jar="${maven.repo.local}/${lib.artifactDirectory}/jars/${lib.artifact}"
+ jar="${maven.jnlp.tmpdir}/${lib.artifact}"
signedjar="${maven.jnlp.dir}/${lib.artifact}"
alias="${maven.jnlp.signjar.alias}"
storepass="${maven.jnlp.signjar.storepass}"
keystore="${maven.jnlp.signjar.store}"/>
</j:if>
- </j:forEach>
- </j:if>
+ </j:forEach>
+ </j:when>
+ <j:otherwise>
+ <copy todir="${maven.jnlp.dir}" flatten="true">
+ <fileset dir="${maven.repo.local}">
+ <j:forEach var="dep" items="${pom.dependencies}">
+ <j:if test="${dep.getProperty('jnlp.jar')=='true'}">
+ <include
name="${dep.artifactDirectory}/jars/${dep.artifact}"/>
+ </j:if>
+ <j:if test="${dep.getProperty('jnlp.native.jar')=='true'}">
+ <include
name="${dep.artifactDirectory}/jars/${dep.artifact}"/>
+ </j:if>
+ </j:forEach>
+ </fileset>
+ <fileset dir="${maven.build.dir}">
+ <include name="${maven.final.name}.jar"/>
+ </fileset>
+ </copy>
+ </j:otherwise>
+ </j:choose>
</goal>
<!-- ================================================================== -->
1.3 +1 -0 jakarta-turbine-maven/src/plugins-build/jnlp/plugin.properties
Index: plugin.properties
===================================================================
RCS file: /home/cvs/jakarta-turbine-maven/src/plugins-build/jnlp/plugin.properties,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- plugin.properties 6 Feb 2003 16:59:54 -0000 1.2
+++ plugin.properties 21 Feb 2003 15:20:46 -0000 1.3
@@ -2,6 +2,7 @@
# P L U G I N P R O P E R T I E S
# -------------------------------------------------------------------
maven.jnlp.dir=${maven.build.dir}/jnlp
+maven.jnlp.tmpdir=${maven.build.dir}/jnlp_temp
maven.jnlp.spec=1.0+
maven.jnlp.http.codebase=${pom.url}
1.1
jakarta-turbine-maven/src/plugins-build/jnlp/src/main/org/apache/maven/jnlp/UpdateManifest.java
Index: UpdateManifest.java
===================================================================
package org.apache.maven.jnlp;
/* ====================================================================
* The Apache Software License, Version 1.1
*
* Copyright (c) 2002 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution,
* if any, must include the following acknowledgment:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowledgment may appear in the software itself,
* if and wherever such third-party acknowledgments normally appear.
*
* 4. The names "Apache" and "Apache Software Foundation" and
* "Apache Maven" must not be used to endorse or promote products
* derived from this software without prior written permission. For
* written permission, please contact [EMAIL PROTECTED]
*
* 5. Products derived from this software may not be called "Apache",
* "Apache Maven", nor may "Apache" appear in their name, without
* prior written permission of the Apache Software Foundation.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*
* ====================================================================
*/
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.util.Enumeration;
import java.util.jar.JarEntry;
import java.util.jar.JarFile;
import java.util.jar.JarOutputStream;
/**
* Updates manifest for correcting java webstart bug
*
* @author <a href="mailto:[EMAIL PROTECTED]">Emmanuel Venisse</a>
* @version $Id: UpdateManifest.java,v 1.1 2003/02/21 15:20:46 evenisse Exp $
*/
public class UpdateManifest
{
private File inputJar;
private File manifest;
private File outputDir;
public void process() throws Exception
{
System.out.println("Update Manifest in " + inputJar.getName());
JarFile jarFile = new JarFile(inputJar);
Enumeration enum = jarFile.entries();
File outputJar = new File(outputDir, inputJar.getName());
FileOutputStream fos = new FileOutputStream(outputJar);
JarOutputStream jos = new JarOutputStream(fos);
while (enum.hasMoreElements()) {
process(jarFile, jos, (JarEntry)enum.nextElement());
}
jos.close();
jarFile.close();
outputJar.setLastModified(inputJar.lastModified());
}
private void process(JarFile jarFile, JarOutputStream jos, JarEntry entry)
throws Exception
{
InputStream is = jarFile.getInputStream(entry);
JarEntry je = entry;
if (entry.getName().equalsIgnoreCase("META-INF/MANIFEST.MF"))
{
je = new JarEntry("META-INF/MANIFEST.MF");
is = new FileInputStream(manifest);
}
jos.putNextEntry(je);
byte[] buffer = new byte[2048];
int read = 0;
while((read = is.read(buffer)) > 0)
{
jos.write(buffer, 0, read);
}
jos.closeEntry();
}
public void setInputJar(File input)
{
this.inputJar = input;
}
public File getInputJar()
{
return inputJar;
}
public void setManifest(File manifest)
{
this.manifest = manifest;
}
public File getManifest()
{
return manifest;
}
public void setOutputDir(File outputDir)
{
this.outputDir = outputDir;
}
public File getOutputDir()
{
return outputDir;
}
}
1.1
jakarta-turbine-maven/src/plugins-build/jnlp/src/plugin-resources/jnlp.manifest
Index: jnlp.manifest
===================================================================
Manifest-Version: 1.0
Created-By: Apache Jakarta Maven
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]