2013-02-22 78 views
3

我对我们当前的构建过程有点担心。它闻起来“错误的方式”,并导致我们的客户大量额外下载。Java Webstart(库)签署

我们有一个通过Webstart发布的常规Java项目。它使用我们提供的各种库作为.jar文件。我们的JNLP看起来像这样:

<resources> 
    <!-- Application Resources --> 
    <j2se version="1.6+" href="http://java.sun.com/products/autodl/j2se" max-heap-size="512m" java-vm-args="-Xincgc" /> 
    <jar href="OurApp.jar" main="true" /> 
    <jar href="nimrodlf-1.2.jar" main="false" /> 
    <jar href="jackson-core-asl-1.9.10.jar" main="false" /> 
    <jar href="jackson-jaxrs-1.9.10.jar" main="false" /> 
    <!-- ... --> 

到目前为止这么好。现在,使用不同证书签名的罐子存在一个问题,我想,或者只有在使用自签名证书签名时才有问题。无论哪种方式,找到的解决方案是所有的罐子必须由相同的证书签名。

随后,我们我们所有的罐子,我们自己还有图书馆,复制到Webstart的文件夹,并用Ant他们签名,像这样:

<target name="sign_jar" depends="check_publish"> 
    <signjar keystore="ourapp.keystore" alias="jenkins" storepass="private" verbose="true"> 
     <path> 
      <fileset dir="${publish.folder}/" includes="**/*.jar" /> 
     </path> 
    </signjar> 
</target> 

这一切工作正常,虽然这需要很长的时间签署每个罐子。但它也会导致每次客户端重新下载每个库jar时,我们每次发布更改到我们自己的应用程序jar(这是很多)。图书馆在技术上并没有改变,但辞职使他们显得新鲜。

我们正在做对吗?有没有更好的办法 ?我们可以以某种方式改变我们的构建过程,以便人们可以缓存库罐?

+0

谢谢,我将其添加为标记。我们并没有真正有人专注于构建过程,所以在我们的理解中它们都有点模糊;) – Torque 2013-02-22 17:49:26

+0

评论升级为答案。 :) – 2013-02-23 03:24:47

回答

2

signjar task - lazy attribute参见..

标志,用于控制的签名文件的存在是否指JAR签署。只有在目标JAR与源JAR匹配时才会使用此功能。JAR