Java Webstart(图书馆)签约

时间:2013-02-22 17:42:14

标签: java ant jar java-web-start jar-signing

我对我们当前的构建过程有点担心。它闻起来有“错误的方式”,并使我们的客户有更多的额外下载。

我们有一个通过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。图书馆在技术上并没有改变,但是辞职使它们看起来很新。

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

1 个答案:

答案 0 :(得分:2)

请参阅signjar task - lazy attribute ..

  

标志以控制是否存在签名文件意味着JAR已签名。仅在目标JAR与源JAR

匹配时使用