Java Webstart (Library) 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" />
    <!-- ... -->

到目前为止还不错。我想,现在使用由不同证书签名的jar会有问题,或者这可能只是在使用自签名证书签名的情况下。无论哪种方式,找到的解决方案都是所有jar都必须由同一证书签名。

随后,我们将所有的jar,我们自己的jar以及库复制到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(这是很多(。从技术上讲,图书馆不会改变,但辞职让它们看起来很新。

我们这样做对吗?有更好的方法吗?我们能以某种方式改变我们的构建过程,让人们可以缓存库jar吗?

请参阅signjar任务-lazy属性。。

标志来控制签名文件的存在是否意味着对JAR进行了签名。只有当目标JAR与源JAR 匹配时才使用此选项

最新更新