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 git-svn-id: https://svn.apache.org/repos/asf/maven/maven-1/plugins/trunk@112964 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
c62c5c2576
commit
47bcefd504
@ -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>
|
||||
|
||||
<!-- ================================================================== -->
|
||||
|
||||
@ -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}
|
||||
|
||||
145
jnlp/src/main/org/apache/maven/jnlp/UpdateManifest.java
Normal file
145
jnlp/src/main/org/apache/maven/jnlp/UpdateManifest.java
Normal file
@ -0,0 +1,145 @@
|
||||
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 apache@apache.org.
|
||||
*
|
||||
* 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:evenisse@ifrance.com">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;
|
||||
}
|
||||
}
|
||||
3
jnlp/src/plugin-resources/jnlp.manifest
Normal file
3
jnlp/src/plugin-resources/jnlp.manifest
Normal file
@ -0,0 +1,3 @@
|
||||
Manifest-Version: 1.0
|
||||
Created-By: Apache Jakarta Maven
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user