在Eclipse的Web项目中java里面使用ant进行数字签名步骤详解

话不多说,我们先建立一个文件build.properties。这个文件是用于配置一些常用的变量的

#public info
module=test
JAVA_HOME=D:/Java/JDK1.6
keystore=Yoinn.store
# 别名
alias=Yoinn
# keystore密码
storepass=password
# 主密码
keypass=password
# 证书文件名
cer.file=NeuLion.cer
# dname info
# dname {CN=1, OU=1, O=1, L=1, ST=1, C=1}
# 名字与姓氏
dname.CN=name
# 组织单位名称
dname.OU=organizationUnitName
# 组织名称
dname.O=organizationName
# 所在的城市或区域名称
dname.L=DL
# 所在的州或省份名称
dname.ST=LN
# 该单位的两字母国家代码
dname.C=CN
# about keytool
keytool=keytool.exe
keytool.home=${JAVA_HOME}/bin
# about jarsigner
jarsigner=jarsigner.exe
jarsigner.home=${JAVA_HOME}/bin

 好了,就这么简单,我们做第二步,制作一个Ant构建文件build.xml

<?xml version="1.0"?>
<!-- Copyright (c) 2004 by Yoinn. All Rights Reserved. -->
<project name="JarSignerBuilder" default="main" basedir=".">
    <!-- set global properties for this build -->
    <property file="build.properties" />
    <property name="libDir" value="WebRootWEB-INFlib" />
    <property name="deploy.dir" value="${basedir}" />
    <!-- ********************************************************* -->
    <!--名字与姓氏-->
    <property name="commonName" value="${dname.CN}" />
    <!-- 组织单位名称 -->
    <property name="organizationUnit" value="${dname.OU}" />
    <!-- 组织名称 -->
    <property name="organizationName" value="${dname.O}" />
    <!-- 所在的城市或区域名称 -->
    <property name="localityName" value="${dname.L}" />
    <!-- 所在的州或省份名称 -->
    <property name="stateName" value="${dname.ST}" />
    <!-- 该单位的两字母国家代码 -->
    <property name="country" value="${dname.C}" />
    <!-- dname {CN=1, OU=1, O=1, L=1, ST=1, C=1} ?-->
    <property name="dname" value="CN=${commonName},OU=${organizationUnit},O=${organizationName},L=${localityName},ST=${stateName},C=${country}" />
    <!-- ********************************************************* -->

    <property name="src.dir" value="src" />
    <property name="build.dir" value="build" />
    <property name="classes.dir" value="${build.dir}/classes" />
    <property name="jar.dir" value="${build.dir}/jar" />
    <property name="jarSignerBuilder" value="${jar.dir}/${ant.project.name}.jar" />

    <property name="main-class" value="ZUpload" />

    <target name="clean">
        <delete dir="${build.dir}" />
    </target>

    <path id="build.classpath">
        <fileset dir="${libDir}">
            <include name="**/*.jar" />
        </fileset>
    </path>

    <target name="compile">
        <mkdir dir="${classes.dir}" />
        <javac srcdir="${src.dir}" destdir="${classes.dir}">
            <classpath refid="build.classpath" />
        </javac>
    </target>

    <target name="jar" depends="compile">
        <mkdir dir="${jar.dir}" />
        <jar destfile="${jarSignerBuilder}" basedir="${classes.dir}">
            <manifest>
                <attribute name="Main-Class" value="${main-class}" />
                <attribute name="Built-By" value="Ken.xu" />
                <attribute name="Company" value="TXKJ" />
            </manifest>

        </jar>
    </target>

    <target name="run" depends="jar">
        <java jar="${jar.dir}/${ant.project.name}.jar" fork="true" />
    </target>

    <target name="clean-build" depends="clean,jar" />

    <target name="main2" depends="clean,run" />
    <!-- 打包Jar2,无用的 -->
    <target name="jar2">
        <jar destfile="${distDir}web.jar" basedir="${buildDir}">
            <manifest>
                <attribute name="Built-By" value="Ken.xu" />
                <attribute name="Company" value="TXKJ" />
            </manifest>
            <zipfileset src="${libDir}/common.jar" />
            <zipfileset src="${libDir}/classes12.jar" />
            <zipfileset src="${libDir}/commons-collections-3.1.jar" />
            <zipfileset src="${libDir}/commons-lang-2.1.jar" />
        </jar>
        <jar destfile="${distDir}/web-src.jar" basedir="${srcDir}" />
    </target>

    <target name="keytool" depends="clean-build">
        <echo message="keytool..." />
        <echo message="dname = { ${dname} }" />
        <exec dir="${deploy.dir}" executable="${keytool.home}/${keytool}" os="${os.name}">
            <arg line="-genkey" />
            <arg line="-dname ${dname}" />
            <arg line="-keystore ${keystore}" />
            <arg line="-alias ${alias}" />
            <arg line="-storepass ${storepass}" />
            <arg line="-keypass ${keypass}" />
        </exec>
        <exec dir="${deploy.dir}" executable="${keytool.home}/${keytool}" os="${os.name}">
            <arg line="-export" />
            <arg line="-keystore ${keystore}" />
            <arg line="-storepass ${storepass}" />
            <arg line="-alias ${alias}" />
            <arg line="-file ${cer.file}" />
        </exec>
        <echo message="keytool...done." />
    </target>

    <target name="jarsigner" depends="keytool">
        <!-- Sign the jar -->
        <echo message="jarsigner..." />
        <exec dir="${deploy.dir}" executable="${jarsigner.home}/${jarsigner}" os="${os.name}">
            <arg line="-keystore ${keystore}" />
            <arg line="-storepass ${storepass}" />
            <arg line="${jarSignerBuilder}" />
            <arg line="${alias}" />
        </exec>
        <echo message="jarsigner...done." />
    </target>

    <target name="main" depends="jarsigner">
        <delete file="${keystore}" />
        <delete file="${cer.file}" />
        <delete dir="${classes.dir}" />
    </target>
</project>

好了,直接执行就可以了。
哦,我的目录结构是这样的

 D:Eclipseworkspace_3.3ZUpload 的目录
build.properties   build.xml          [src]              [WebRoot]
 D:Eclipseworkspace_3.3ZUploadsrc 的目录
 [apache]       ZUpload.java   
 D:Eclipseworkspace_3.3ZUploadsrcapache est 的目录
 MyTest.java   
 D:Eclipseworkspace_3.3ZUploadWebRoot 的目录
 index.jsp     [WEB-INF]      
 D:Eclipseworkspace_3.3ZUploadWebRootWEB-INF 的目录
 [classes] [lib]     web.xml   
 D:Eclipseworkspace_3.3ZUploadWebRootWEB-INFlib 的目录
 ant.jar

您按这个看看就了解了。;)

 
时间: 2024-10-23 13:33:19

在Eclipse的Web项目中java里面使用ant进行数字签名步骤详解的相关文章

CentOS 6.0中编译安装MySQL v5.1.59步骤详解

以下内容基于CentOS 6.0操作系统,MySQL安装版本为v5.1.59,下面我们详细的通过命令形式来说明如何进行编译与安装MySQL. 编译安装mysql cd /usr/local/src tar zxvf mysql-5.1.59.tar.gz cd mysql-5.1.59 ./configure --prefix=/usr/local/mysql&http://www.aliyun.com/zixun/aggregation/37954.html">nbsp;--lo

Win8系统中安装net framework 3.5的步骤详解

方法一,使用Win8原版光盘离线安装.net framework 3.5 1.把原版安装光盘放入电脑记录下光盘盘符(这里假设为G:): 2.按 Win+X,选择"命令提示符(管理员) ": 3.在弹出的窗口中输入"DISM /Online /Enable-Feature /FeatureName:NetFx3 /All /LimitAccess /Source:G:\sources\sxs",回车即可自动安装NET3.5,安装完了关闭窗口即可.(注意上方地址命令中的

Ubuntu 12.04中安装配置Nagios 4.0.5步骤详解

以下是2014-4-17安装记录: == 服务端 == 安装依赖包:(其实不装也能安装成功,就是部分功能会disabled) sudo apt-get install build-essential libssl-dev \ libgd2-xpm-dev libpng12-dev php5-gd libgd2-xpm 用户组: sudo adduser --system --no-create-home --disabled-login --group nagios sudo groupadd

Java Web项目中连接Access数据库的配置方法_JSP编程

老师决定期末考试采用access数据库实现增删改查,我认为现在的我已经没有问题了,但是以前都是在JSP页面中连接access数据库,无论是以下的那种方式都进行了连接的练习,但是现在我想让我的项目中的访问access数据库的java代码,封装到DAO中,在DAO中连接数据库,没有和Servlet API有任何的关系.对于大多数人都会优先选择使用ODBC数据源的方式或者是使用绝对路径的方式连接access数据库,但是我个人认为,这样做不太好,如果采用这样的方式,项目做好后,放到他人的服务器上是无法运

Java Web项目中使用Socket通信多线程、长连接的方法_java

很多时候在javaweb项目中我们需要用到Socket通信来实现功能,在web中使用Socket我们需要建立一个监听程序,在程序启动时,启动socket监听.我们的应用场景是在java项目中,需要外接如一个硬件设备,通过tcp通信,获取设备传上来的数据,并对数据做回应. 先看一下web的监听代码: import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; public class

java web项目中jsp页面表单提交给servlet 然后显示空白页面

问题描述 java web项目中jsp页面表单提交给servlet 然后显示空白页面 经检查 servlet没问题 全查可以用 不知道什么原因 求解答 解决方案 哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈解决了 解决方案二: jsp页面显示空白

源代码- java web 项目中,如何实现显示的页面带关键字搜索功能

问题描述 java web 项目中,如何实现显示的页面带关键字搜索功能 我有一个关键字表 表结构如下 Id ID 关键字 Keywords 链接 Link 优先级 priority 0 默认 1初级 2中级 3高级 匹配次数 mateCount 0全文匹配 1只为第一个出现的关键字匹配 里面的数据格式为 ID Keywords Link priority mateCount 1 龙投网 http://www.lootou.cn 3 0 2 股票入门 http://www.lootou.cn/gu

就像这样子的就可以啦-跪求一份简单文本编辑器插件,能copy在java web项目中就能运行的那一种

问题描述 跪求一份简单文本编辑器插件,能copy在java web项目中就能运行的那一种 解决方案 http://kindeditor.net/demo.php 解决方案二: http://kindeditor.net/demo.php http://ueditor.baidu.com/website/onlinedemo.html http://ckeditor.com/demo

java web项目中应用的服务器推送技术都有哪些?有没有性能问题

问题描述 java web项目中应用的服务器推送技术都有哪些?有没有性能问题 java web项目中应用的服务器推送技术都有哪些?有没有性能问题 解决方案 Web实时推送,选择GoEasy推送服务, 代码简单易懂,几分钟就可以自己写好一个在线聊天demo. 中英文文档齐全.官网:https://goeasy.io 解决方案二: 目前,websocket是个很好的方向. 解决方案三: websocket. http://blog.csdn.net/jiangcs520/article/detail