webstart 打包批处理
来源:互联网 发布:ubuntu怎么解压tar.Z 编辑:程序博客网 时间:2024/05/22 08:03
为 Web Start 打包需要对包文件进行数字签名,或者是把编写的工程文件都包进一个 jar 里.
打包 -- 测试 -- 改正 -- 打包 -- 测试 这过程反复,让计算机来替代人工操作重复过程是个好主意.
这篇文字举例了如何使用命令行以及命令行输入的重定向来替代重复的操作.具体的工具用法请读者自己找说明.命令行不熟悉,可以参考操作系统上的帮助,文中不对命令行进行解释.
数字签名过程中有密钥生成的输入,可利用命令行的输入重定向来达到自动化的目的.
本文分两种情况来说明如何建立批处理文件来做这样的工作:
1) 把工程中的所有编译后的代码打包进一个 jar (这个 jar 里包含了作为开发包的其他 jar)
2) 对多个 jar 签名
工作环境: Windows 2000 Advanced Server
WinRar 3.5
jsdk 1.5.0_12
在进行说明前先介绍下公用的批处理文件.单独介绍这些独立的批处理文件是因为:单个的批处理文件可以方便地被其他批处理文件调用,从编程的观点来看,这些单独的批处理文件就好比是功能单一的"函数"
设置替换变量的批处理文件: setEnvParam.cmd
set JDK_BIN=d:/jdk15/bin
set PROJECT_LIB_PATH=E:/TimingProj/Aenv/lib
set ORIGINAL_LIB_PATH=./originalLib
set SIGNED_LIB_PATH=./signedLib
set AENV_PACK=F:/AenvBuild/aenv.jar
复制文件的批处理文件:copy.cmd
call setEnvParam.cmd
copy /Y %PROJECT_LIB_PATH%/*.jar %ORIGINAL_LIB_PATH%
copy /Y %AENV_PACK% %ORIGINAL_LIB_PATH%
情况一: 打包成一个 jar
此种情形就是把工程的 class 文件和作为开发工程用的开发包(*.jar)里的 class 文件打包到同一个jar. 过程是:先把所有 *.jar 解压缩,而后再把这些"散装" class 文件连同工程的 class 文件一起包装到最终的 jar
unZip.cmd
set LIB_PATH=E:/TimingProj/Aenv/lib
set IDEA_PACKED_JAR=F:/AenvBuild/Aenv.jar
for %%N in (%LIB_PATH%/*.jar) do %RAR% x -o+ %%N %CLASSES_PATH%
%RAR% x -o+ %IDEA_PACKED_JAR% %CLASSES_PATH%
此处用了 for 命令来对路径下所有的 jar 解压缩,解压缩的工具使用 Winrar.exe 的命令行方式.
之所以用 Winrar ,是我个人喜好,我觉得 winrar 的命令行比 jar 的命令方便且丰富
再把这些"散装" class 组装进一个 jar
zip.cmd
%RAR% a -r -ep1 %DEPLOY_JAR% %CLASSES_PATH%/
到此,打包成一个 jar 方式的文件操作过程完成,至于数字签名,请继续阅读此文
情况二:保持多个 jar
利用先前的 setEnvParam.cmd 和 copy.cmd 来进行文件操作,不赘述了(用 call xx.cmd 来呼叫指定的批处理工作). 接下来,就是对工程的 class 文件打包,而后就是连同 开发包 jar 一起数字签名
工程编译后的类打包不叙述了.直奔主题看数字签名和 for 命令的使用以及重定向输入
sign.cmd
call setEnvParam.cmd
rem 删除旧的密钥
DEL /Q %ORIGINAL_LIB_PATH%/temp.keystore
rem 创建KEY
%JDK_BIN%/keytool -genkey -keystore %ORIGINAL_LIB_PATH%/temp.keystore -alias tempkeystore < KEY_INFO.lst
%JDK_BIN%/keytool -export -keystore %ORIGINAL_LIB_PATH%/temp.keystore -alias tempkeystore -file %ORIGINAL_LIB_PATH%/aenv.cer < KEY_EXPORT.lst
for %%N in (%ORIGINAL_LIB_PATH%/*.jar) do call selfSign.cmd %%N
红色字就是输入重定向:从文本文件里读每行来"回答"命令行的"问题"(命令行等待的输入其实来自于文件输入流),以换行回车作为回答的提交.KEY_INFO.lst 文件里的"行"就是指:回车并且换行,每一行对应于命令行要求用户的输入
橘黄色的 %%N 是作为 selfSign.cmd 的执行的入口参数,也就是命令行参数
selfSign.cmd
%JDK_BIN%/jarsigner -keystore %ORIGINAL_LIB_PATH%/temp.keystore %1 tempkeystore < KEY_EXPORT.lst
使用Ant运行windows的批处理文件
要在Ant内运行一个外部程序,应使用<exec>任务.它允许你执行下列操作:
l 指定程序名和要传入的参数.
l 命名运行目录.
l 使用failonerror标志来控制当应用程序失败时是否停止构建.
l 指定一个最大程序持续时间,时间超过则中止程序.任务在这时被认为是失败,但是至少构建会中止,而不是挂起,这对于自动构建是至关重要的.
l 将输出存到一个文件或特性.
l 指定java调用本地程序时需要预先设定的环境变量.
下面来看一个例子:
批处理文件:
Test.bat
@echo offecho Hello > test.txt
build.xml
<?xml version="1.0"?><project name="batch" default="extract" basedir="."> <target name="extract"> <exec executable ="cmd"> <arg line="/c a.bat"/> </exec> </target></project>
使用executable元素标记指定使用的命令,具体用法可以在命令行下面输入help cmd查看.如果你希望在运行批处理发生错误时中止构建需要设定failonerror="on".加入你的外部程序在某个时刻挂起,也许是在与远程站点对话,而你不希望构建永远被挂起,Ant提供了timeout这个属性,他是一个以毫秒为单位的数字.下面看一下如何使用Ant来运行tomcat.
启动tomcat需要两个环境变量CATALINA_HOME, JAVA_HOME,如果你在环境变量中已经设定,在Ant中就不需要进行处理,如果没有需要使用<env>属性来设定,你也可以使用<env>属性覆盖你以前的环境变量.
<?xml version="1.0"?><project name="batch" default="tomcat-start" basedir="."> <property name="tomcat.dir" value="C:/Tomcat5"></property> <target name="tomcat-start"> <exec dir="${tomcat.dir}/bin" executable="cmd"> <env key="CATALINA_HOME" path="${tomcat.dir}"/> <arg value="/C startup.bat"/> </exec> </target></project>
- webstart 打包批处理
- EclipseRCP WebStart
- 数据库打包批处理
- 文件压缩打包 批处理
- 打包和批处理
- 批处理打包文件例子
- android打包批处理
- cx_Freez打包Python批处理
- 自动打包批处理
- 网吧常用批处理打包下载
- 用批处理打包J2ME程序
- jar项目打包以及批处理
- 批处理TexturePacker指打包图
- 批处理一键打包apk
- 批处理打包 AssetBundle(一)
- 批处理自动打包升级包
- WebStart程序的debug
- kettle 3.2的webstart
- 采用Expat检查XML文档是否格式良好
- CString类转换成char*
- 抵挡DoS远程连接让网络更安全
- 数据绑定以及Container.DataItem的具体分析(转贴)
- ARM编译程序参考
- webstart 打包批处理
- ADS下的分散加载文件应用实例
- [记录]回忆三年的日子
- InstallShield隐藏外部应用程序窗口
- Ajax - 请求参数作为XML发送send(xml)
- 程序执行时写闪存的应用实例
- 最近的生活
- C语言宏定义技巧
- 如何使用InstallShield中的LaunchAppAndWait()