nev*_*ves 9 java compression ant code-signing pack
必须为webstart应用程序签署我的JAR文件.将它们打包以最小化下载时间会很不错.我正在尝试配置Ant任务以在部署应用程序期间自动执行此任务.由于pack进程重新组织jar内部结构使签名无效,因此Pack200文档建议采用3个步骤:
Ant有一个默认的signjar任务,Sun发布了一个Pack200 ant任务.
问题是Sun pack200任务一次只能在一个文件上运行,重新包装操作必须指定一个输出文件.
我相信它应该是一个相当常见的操作,但我的蚂蚁文件变得过于复杂,并且有太多的临时文件.是时候乞求社区的智慧了:
是否有一种简单或至少是标准的方式来打包和签署我的所有JAR文件?
nev*_*ves 10
这是我自己的解决方案.我已经放弃了prebuild ant 目标,并决定直接运行pack200可执行文件.
这种方法有一些优点:
以下是重新打包和内联签名的宏代码:
<macrodef name="repack-and-sign">
<attribute name ="rootdir"/>
<sequential>
<echo message="Repacking libs in @{rootdir}"/>
<apply executable="pack200" parallel="false">
<arg value="--repack"/>
<arg value="--segment-limit=-1"/>
<fileset dir="@{rootdir}" includes="**/*.jar" />
</apply>
<echo message="Signing libs in @{rootdir}"/>
<signjar
alias="${keystore.alias}" keystore="${keystore.file}" storepass="${keystore.password}"
lazy="true">
<path>
<fileset dir="@{rootdir}" includes="**/*.jar" />
</path>
</signjar>
</sequential>
</macrodef>
Run Code Online (Sandbox Code Playgroud)
以下是如何打包:
<apply executable="pack200" parallel="false" dest="${dir.tomcat.jar}">
<arg value="--modification-time=latest"/>
<arg value="--deflate-hint=true"/>
<arg value="--segment-limit=-1"/>
<targetfile/>
<srcfile/>
<fileset dir="${dir.tomcat.jar}" includes="**/*.jar" />
<mapper type="glob" from="*" to="*.pack.gz" />
</apply>
Run Code Online (Sandbox Code Playgroud)
编辑为那些不太了解蚂蚁的人提供更多信息:
上面的任务在你的标签之前.在你的标签内首先调用这样的宏,这样它首先重新包装并签署每个文件:
<repack-and-sign rootdir="${dir.tomcat.jar}" />
Run Code Online (Sandbox Code Playgroud)
然后使用上面的标记.这将为每个文件进行最终打包.
| 归档时间: |
|
| 查看次数: |
7726 次 |
| 最近记录: |