- 浏览: 289767 次
- 性别:
- 来自: 龙城
最新评论
-
redey:
这垃圾东西,1.6以上JDK不支持
Jocky混淆JAVA代码(保护你的JAVA项目) -
u012907473:
水电费是否是否
js页面缓存的一个解决办法 -
jackson200:
讲解的很详细!
Jocky混淆JAVA代码(保护你的JAVA项目) -
jamesqq79:
下载解压缩后,不知是何文件格式,用PDF阅读器打不开。
Java程序员的推荐阅读书籍之十《Agile Java》 -
meimei727:
<!-- 给页面文件中的js和css引用增加版本号 -- ...
利用ant进行项目发布
虽然现在maven很流行,我也看了下,屡屡浅尝辄止。还是比较喜欢ant,而且对于我当前的工作,ant也够用了,所以对maven的学习也就没了兴趣,仅剩下对新事物的热情。
一个较复杂的工程项目可能包含很多目录,包括源代码文件、资源文件、文档等等一系列的东东,而且在项目发布时,除了考虑自动化、方便性(比如从cvs取最新版本、编译、打包、关闭应用服务器、部署、重新启动服务器等等)以外,还要考虑一些用户级的问题(比如修改了页面js后,怎样保证用户端从服务器端下载最新的js而不是用其本地浏览器缓存的js),另外基于源代码安全性考虑,可能还要进行代码混淆编译等。
<?xml version="1.0" encoding="UTF-8"?> <!-- 功能:cvs更新、编译(同时混淆)、生成注册文件、给页面文件的css和js引用增加版本号、打包、部署、运行tomcat等 作者:huangyuanmu 日期:2008-07-02. --> <project basedir="." default="build" name="wxwtdz"> <!-- property --> <property file="resource/ant.properties" /> <property environment="env" /> <property name="tomcat.path" value="${tomcat.path}" /> <property name="server.mac" value="${server.mac}" /> <property name="cvsroot" value="${cvs.root}" /> <property name="cvs.password" value="${cvs.password}" /> <property name="cvs.module.name" value="xxx项目" /> <property name="websrc.dir" value="web" /> <property name="src.common.dir" value="common" /> <property name="src.shell.dir" value="shell" /> <property name="src.sys.dir" value="sys" /> <property name="src.hjgl.dir" value="hjgl" /> <property name="src.pzgl.dir" value="pzgl" /> <property name="src.sbzs.dir" value="sbzs" /> <property name="src.zhcx.dir" value="zhcx" /> <property name="src.zhdy.dir" value="zhdy" /> <property name="src.zhjb.dir" value="zhjb" /> <property name="src.scheduling.dir" value="scheduling" /> <property name="src.resource.dir" value="resource" /> <property name="src.rpc.dir" value="rpc" /> <property name="customize.dir" value="customize" /> <property name="customize.resource.dir" value="customize/resource" /> <property name="build.dir" value="build" /> <property name="dist.dir" value="dist" /> <property name="deploy.dir" value="${tomcat.path}/webapps" /> <property name="dest.jar" value="wtdz.jar" /> <property name="dest.war" value="wtdz.war" /> <property name="dest.dir" value="wtdz" /> <property name="jdk.source" value="1.5" /> <property name="jdk.target" value="1.5" /> <property name="deploy.web.dir" value="wtdz" /> <property name="training.dir" value="training" /> <property name="training.resource.dir" value="training/resource" /> <property name="training.war" value="wtdzcs.war" /> <!-- patternset --> <patternset id="jar.pattern"> <include name="**/*.jar" /> </patternset> <patternset id="config.pattern"> <include name="**/*.xml" /> <include name="**/*.properties" /> <include name="**/*.prop" /> <include name="**/*.conf" /> <include name="**/*.tld" /> <include name="**/*.ftl" /> <include name="**/*.vm" /> </patternset> <patternset id="build.pattern"> <include name="log" /> <include name="**/*.jar" /> <include name="**/*.class" /> <include name="**/*.vm" /> <include name="**/*.rep" /> <include name="**/*.exe" /> <include name="**/*.log" /> <include name="**/*.bat" /> <include name="**/*.xls" /> <include name="**/*.xml" /> <include name="**/*.properties" /> <include name="**/*.prop" /> <include name="**/*.conf" /> <include name="**/*.tld" /> <include name="**/*.ftl" /> <include name="**/*.jsp" /> <include name="**/*.htm" /> <include name="**/*.html" /> <include name="**/*.js" /> <include name="**/*.css" /> <include name="**/*.swf" /> <include name="**/*.jpg" /> <include name="**/*.gif" /> <include name="**/*.png" /> <include name="**/*.rar" /> <include name="**/*.wmv" /> <include name="**/*.mp3" /> <include name="**/*.3gp" /> <include name="**/*.doc" /> <include name="**/*.htc" /> <exclude name="WEB-INF/**/*" /> <exclude name="**/web.xml" /> </patternset> <patternset id="src.pattern"> <include name="**/*.java" /> <include name="**/*.vm" /> <include name="**/*.rep" /> <include name="**/*.exe" /> <include name="**/*.xml" /> <include name="**/*.xls" /> <include name="**/*.properties" /> <include name="**/*.prop" /> <include name="**/*.conf" /> <include name="**/*.tld" /> <include name="**/*.ftl" /> <include name="**/*.jsp" /> <include name="**/*.htm" /> <include name="**/*.html" /> <include name="**/*.js" /> <include name="**/*.css" /> <include name="**/*.swf" /> <include name="**/*.jpg" /> <include name="**/*.gif" /> <include name="**/*.png" /> <exclude name="**/web.xml" /> </patternset> <!-- path --> <path id="compile.classpath"> <fileset dir="${tomcat.path}/lib"> <patternset refid="jar.pattern" /> </fileset> <fileset dir="${websrc.dir}/WEB-INF/lib"> <patternset refid="jar.pattern" /> </fileset> <fileset dir="${build.dir}/WEB-INF/classes"> <patternset refid="build.pattern" /> </fileset> </path> <!-- taskdef --> <!-- 给页面文件中的js和css引用增加版本号 --> <taskdef name="addVersion" classname="cn.xxx.wtdz.ant.task.AddJsAndCssVersionToVm" classpath="bin/ant-task.jar"> </taskdef> <!-- 利用混淆器进行编译 --> <taskdef resource="jockytasks"> </taskdef> <!-- 生成注册码文件 --> <taskdef name="genRegKey" classname="cn.xxx.wtdz.ant.task.GenRegKey" classpath="bin/ant-task.jar"> </taskdef> <!-- target --> <!-- 删除构建发布文件夹 --> <target name="clean"> <delete dir="${build.dir}" /> <delete dir="${dist.dir}" /> </target> <!-- 创建构建发布文件夹 --> <target name="init" depends="clean"> <mkdir dir="${build.dir}" /> <mkdir dir="${build.dir}/WEB-INF/classes" /> <mkdir dir="${dist.dir}" /> </target> <!-- cvs更新(check out) --> <target name="checkout"> <cvspass cvsroot="${cvs.root}" password="${cvs.password}" passfile="ant-cvs.cvspass" /> <cvs command="-q checkout -d wxwtdz -P" failonerror="true" dest=".." cvsroot="${cvs.root}" package="${cvs.module.name}" passfile="ant-cvs.cvspass" /> </target> <!-- 从源文件夹中拷贝文件到构建文件夹中 --> <target name="copysrc" depends="init"> <copy todir="${build.dir}/src" overwrite="true"> <fileset dir="${src.common.dir}"> </fileset> <fileset dir="${src.shell.dir}"> </fileset> <fileset dir="${src.sys.dir}"> </fileset> <fileset dir="${src.hjgl.dir}"> </fileset> <fileset dir="${src.pzgl.dir}"> </fileset> <fileset dir="${src.sbzs.dir}"> </fileset> <fileset dir="${src.zhcx.dir}"> </fileset> <fileset dir="${src.zhdy.dir}"> </fileset> <fileset dir="${src.zhjb.dir}"> </fileset> <fileset dir="${src.scheduling.dir}"> </fileset> <fileset dir="${src.resource.dir}"> <exclude name="log4j.xml"/> </fileset> <fileset dir="${src.rpc.dir}"> </fileset> <fileset dir="${customize.resource.dir}"> </fileset> </copy> <copy todir="${build.dir}"> <fileset dir="${websrc.dir}"> <exclude name="WEB-INF/classes/**/*" /> </fileset> </copy> <copy todir="${build.dir}" overwrite="true"> <fileset dir="${customize.dir}"> <exclude name="resource/**" /> </fileset> </copy> </target> <!-- 编译、拷贝文件 --> <target name="compile" depends="copysrc"> <jocky jar="bin/jocky.jar" enable="true" level="private"> </jocky> <javac srcdir="${build.dir}/src" destdir="${build.dir}/WEB-INF/classes" debug="true" source="1.5" target="1.5" > <classpath refid="compile.classpath" /> </javac> <copy todir="${build.dir}/WEB-INF/classes" overwrite="true"> <fileset dir="${build.dir}/src"> <patternset refid="config.pattern" /> </fileset> </copy> <delete dir="${build.dir}/src" /> </target> <!-- 给页面文件中的css和js引用增加版本号 --> <target name="addPageVersion" depends="compile"> <addVersion path="${build.dir}" /> </target> <!-- 构建war包 --> <target name="build" depends="addPageVersion"> <!--<target name="build" depends="compile">--> <delete file="${dist.dir}/${dest.war}" /> <mkdir dir="${build.dir}/log" /> <genRegKey path="${dist.dir}" key="${server.mac}"/> <war destfile="${dist.dir}/${dest.war}" webxml="${build.dir}/WEB-INF/web.xml"> <webinf dir="${build.dir}/WEB-INF" /> <fileset dir="${build.dir}"> <patternset refid="build.pattern" /> </fileset> <fileset file="${dist.dir}/key.properties"> </fileset> </war> <delete file="${dist.dir}/key.properties" /> </target> <!-- 构建试用版war包 --> <target name="buildDebug" depends="addPageVersion"> <delete file="${dist.dir}/${dest.war}" /> <mkdir dir="${build.dir}/log" /> <war destfile="${dist.dir}/${dest.war}" webxml="${build.dir}/WEB-INF/web.xml"> <webinf dir="${build.dir}/WEB-INF" /> <fileset dir="${build.dir}"> <patternset refid="build.pattern" /> </fileset> </war> </target> <!-- 部署前先关闭tomcat,并压缩文件 --> <target name="zip" depends="addPageVersion"> <echo message="now stopping tomcat service" /> <exec dir="${tomcat.path}/bin" executable="cmd"> <env key="CATALINA_HOME" path="${tomcat.path}" /> <arg value="/c shutdown.bat" /> </exec> <delete file="${deploy.dir}/${dest.war}" /> <delete file="${deploy.dir}/${dest.dir}" /> <genRegKey path="${build.dir}" key="${server.mac}"/> <zip destfile="${deploy.dir}/${dest.war}"> <fileset dir="${build.dir}"> <include name="**/*" /> </fileset> </zip> </target> <!-- 解压文件,并启动tomcat --> <target name="deploy" depends="zip"> <echo message="deploy web project to ${deploy.dir}..." /> <unzip dest="${deploy.dir}/${deploy.web.dir}" overwrite="true" src="${deploy.dir}/${dest.war}"> </unzip> <echo message="now starting tomcat service" /> <exec dir="${tomcat.path}/bin" executable="java.exe"> <env key="CATALINA_HOME" path="${tomcat.path}" /> <arg line="-jar -Duser.dir=${tomcat.path} ${tomcat.path}/bin/bootstrap.jar start" /> </exec> </target> <!-- 把项目所有class文件打包 --> <target name="archive" depends="compile"> <delete file="${dist.dir}/${dest.jar}" /> <jar destfile="${dist.dir}/${dest.jar}" basedir="${build.dir}/WEB-INF/classes" /> </target> <!-- 导出远程调用接口程序(住房出租票证管理接口) --> <target name="buildrpc" depends="compile"> <delete file="${dist.dir}/wtdz-rpc.jar"> </delete> <mkdir dir="${build.dir}/rpc/src" /> <mkdir dir="${build.dir}/rpc/classes" /> <copy todir="${build.dir}/rpc/src"> <fileset dir="${src.rpc.dir}"> <exclude name="**/impl/*" /> <exclude name="**/aop/*" /> </fileset> </copy> <jocky enable="false"> </jocky> <javac srcdir="${build.dir}/rpc/src" destdir="${build.dir}/rpc/classes" debug="true"> <classpath refid="compile.classpath" /> </javac> <jar destfile="${dist.dir}/wtdz-rpc.jar"> <fileset dir="${build.dir}/rpc/classes" includes="**/*.class" /> <zipfileset src="${websrc.dir}/WEB-INF/lib/hessian-3.1.3.jar"> </zipfileset> </jar> <delete dir="${build.dir}/rpc/src"> </delete> <delete dir="${build.dir}/rpc/classes"> </delete> </target> <!-- 从源文件夹中拷贝文件到构建文件夹中 --> <target name="copysrcTraining" depends="copysrc"> <copy todir="${build.dir}/src" overwrite="true"> <!-- 培训版本:从training文件夹中拷贝文件到构建文件夹中 --> <fileset dir="${training.dir}"> <include name="cn/**"/> </fileset> <fileset dir="${training.resource.dir}"> </fileset> </copy> <copy todir="${build.dir}" overwrite="true"> <fileset dir="${training.dir}"> <include name="images/**"/> </fileset> </copy> </target> <!-- 编译、拷贝文件 --> <target name="compileTraining" depends="copysrcTraining"> <jocky jar="bin/jocky.jar" enable="true" level="private"> </jocky> <javac srcdir="${build.dir}/src" destdir="${build.dir}/WEB-INF/classes" debug="true" source="1.5" target="1.5" > <classpath refid="compile.classpath" /> </javac> <copy todir="${build.dir}/WEB-INF/classes" overwrite="true"> <fileset dir="${build.dir}/src"> <patternset refid="config.pattern" /> </fileset> </copy> <delete dir="${build.dir}/src" /> </target> <!-- 给页面文件中的css和js引用增加版本号 --> <target name="addPageVersionTraining" depends="compileTraining"> <addVersion path="${build.dir}" /> </target> <!-- 构建war包 --> <target name="buildTraining" depends="addPageVersionTraining"> <!--<target name="build" depends="compile">--> <delete file="${dist.dir}/${dest.war}" /> <mkdir dir="${build.dir}/log" /> <genRegKey path="${dist.dir}" key="${server.mac}"/> <war destfile="${dist.dir}/${dest.war}" webxml="${build.dir}/WEB-INF/web.xml"> <webinf dir="${build.dir}/WEB-INF" /> <fileset dir="${build.dir}"> <patternset refid="build.pattern" /> </fileset> <fileset file="${dist.dir}/key.properties"> </fileset> </war> <delete file="${dist.dir}/key.properties" /> </target> <target name="training" depends="buildTraining"> <move file="${dist.dir}/${dest.war}" tofile="${dist.dir}/${training.war}"/> </target> </project>
评论
3 楼
meimei727
2015-04-02
<!-- 给页面文件中的js和css引用增加版本号 -->
<taskdef name="addVersion" classname="cn.xxx.wtdz.ant.task.AddJsAndCssVersionToVm" classpath="bin/ant-task.jar">
</taskdef>
执行的时候会说找不到这个类,还有classpath="bin/ant-task.jar"是什么意思?
<taskdef name="addVersion" classname="cn.xxx.wtdz.ant.task.AddJsAndCssVersionToVm" classpath="bin/ant-task.jar">
</taskdef>
执行的时候会说找不到这个类,还有classpath="bin/ant-task.jar"是什么意思?
2 楼
huangyuanmu
2010-06-03
spp_1987 写道
要是部署前 没有关闭tomcat 会有什么状况出现,
但是我用简单的web程序测试了下,并没有什么错误
但是我用简单的web程序测试了下,并没有什么错误
注意这个target
<target name="zip" depends="addPageVersion">
<echo message="now stopping tomcat service" />
<exec dir="${tomcat.path}/bin" executable="cmd">
<env key="CATALINA_HOME" path="${tomcat.path}" />
<arg value="/c shutdown.bat" />
</exec>
<delete file="${deploy.dir}/${dest.war}" />
<delete file="${deploy.dir}/${dest.dir}" />
<genRegKey path="${build.dir}" key="${server.mac}"/>
<zip destfile="${deploy.dir}/${dest.war}">
<fileset dir="${build.dir}">
<include name="**/*" />
</fileset>
</zip>
</target>
其中有关闭tomcat的步骤。
所以,你的tomcat在运行状态下,是不影响的。
1 楼
spp_1987
2010-05-31
要是部署前 没有关闭tomcat 会有什么状况出现,
但是我用简单的web程序测试了下,并没有什么错误
但是我用简单的web程序测试了下,并没有什么错误
发表评论
-
autochk program not found 蓝屏重启问题解决
2012-04-17 10:54 13840起因: 因为硬盘空间不够,所以把原来的双系统中的ubu ... -
IOS开发一些资源
2012-02-06 16:07 1363从别的地方看到的,多谢作者,现贴在这里备忘。 在线教程 ... -
发现一个好东东,可以让浏览器跟本地桌面交互,哈哈
2011-09-08 17:35 1246http://gears.google.com/ -
nodejs开发运行环境搭建
2011-08-18 15:03 4401一. geddy 开发运行环境搭建 geddy是基 ... -
javascript来势凶猛
2011-08-15 17:22 1215引子 java编程弄了7,8个年头了,也 ... -
Oracle驱动包装
2011-07-06 17:06 2035见附件。 -
javaeye域名变了
2011-04-01 10:31 1280javaeye域名变了,才发现,哈哈,mark下。 -
拥抱敏捷
2011-01-15 17:27 1099前言 有关项目管理和软件开发方 ... -
重温设计模式
2011-01-13 10:27 1164策略模式: 定义了算 ... -
jsoup,html解析的利器
2011-01-07 09:21 1207http://jsoup.org/download -
关于html表格复制到excel
2010-09-09 14:04 5875刚才一个朋友问我这个事情,我拍脑袋想了一下,给他答复不可能,因 ... -
Java 路径 System.getProperty("key")的参数key
2010-09-02 14:37 1289java.version ... -
这种需求,大家看看有没有比较好的解决方案
2010-06-25 09:47 2342在我们的应用中,碰到了如图所示的一种网络结构。 重新描 ... -
java中singleton的几种实现方式
2010-06-24 15:08 1475传统的最简单的方式 这种模式有一个缺点就是不能实现延 ... -
oracle分页查询数据重复问题的解决
2010-06-24 11:00 3428在oracle分页查询中,我们采用类似以下所示的公认的比较高效 ... -
ubuntu10.04中安装使用IE6
2010-06-21 09:55 2597在用ubuntu910的时候,已经装了一遍IE了,但是升级到1 ... -
今天发现的两个有价值的东东
2010-06-17 15:45 1518其一,iRedMail,开源邮件解决方案。 其 ... -
ubuntu 10.04 中安装mysql5.1.4
2010-06-17 15:28 1837自从升级到10.04以后,mysql就不正常,卸载装了n次,均 ... -
升级到ubuntu 10.04,wine中的ie不正常了
2010-06-11 10:01 1707ubuntu上也折腾了半年了,日常工作生活基本没有太多的障碍了 ... -
升级到ubuntu10.04,mysql不能用了
2010-06-11 09:53 18779.10版本用了半年了,10.04发布了,看了10.04的宣传 ...
相关推荐
本篇文章将详细介绍如何在MyEclipse中利用Ant来发布项目。 首先,Ant的工作原理是通过一个名为`build.xml`的配置文件来定义一系列的任务,这些任务可以是编译源代码、创建JAR或WAR包、复制文件等。在描述中提到的...
一个Ant项目通常包含一个build.xml文件,这是Ant执行的所有指令的中心。在这个文件中,我们定义目标(target)和任务(task),比如`compile`、`jar`和`deploy`等。每个目标都是一系列任务的集合,这些任务按照特定...
"ant自动发布工程"是指利用Ant的脚本化特性,实现对Java工程的自动化发布流程,极大地提高了开发效率和减少了手动操作的错误。下面将详细阐述Ant在自动发布工程中的核心知识点。 1. **Ant基本概念** - **构建文件...
**利用Ant脚本进行SVN增量构建** 1. **基本流程** - **获取代码**:首先,Ant脚本会从SVN仓库中检出或更新最新的代码到本地工作目录。 - **增量分析**:通过比较上一次构建与当前版本的差异,找出新增或修改的文件...
本主题将深入探讨如何利用Ant进行多渠道打包和管理多个项目引用,这对于大型复杂项目或者需要针对不同市场发布不同版本的应用至关重要。 首先,Ant是Apache组织开源的一款Java构建工具,它基于XML文件定义构建过程...
Apache Ant 是一个开源的构建工具,广泛用于Java项目构建,由Apache软件基金...通过解压缩此ZIP文件并配置环境变量,用户可以利用Ant执行各种项目构建任务。详细的使用方法和特性可通过提供的readme.txt文件进行查阅。
除了基本的编译任务,Ant还可以与Flex项目中的其他工具集成,比如FlexUnit进行自动化测试,或者与版本控制系统(如Git)配合进行代码管理。在FlexExamples压缩包中,可能包含了各种Flex应用的示例代码,我们可以为每...
下面将详细阐述如何利用Ant构建打包工具,以及如何创建可视化的Java安装程序。 1. **Java环境基础**:首先,确保你已经安装了Java Development Kit (JDK),因为Ant是用Java编写的,需要JDK运行环境。同时,Java应用...
9. **性能优化**:探讨如何利用umi和Electron的特性进行性能优化,如代码分割、静态资源缓存、服务端渲染等。 10. **安全考虑**:理解Electron应用可能面临的安全问题,如防止恶意代码注入、处理文件系统访问权限等...
用户只需按照简单的步骤设置和配置,即可充分利用Ant的自动化功能,提高开发效率。同时,由于其开源和社区支持的性质,Ant还拥有丰富的插件和社区资源,可以帮助开发者解决各种复杂的构建问题。
通过“Ant使用指南”,你可以逐步学习如何设置和运行Ant项目,掌握如何编写和维护构建文件,以及如何利用Ant实现项目的自动化构建和部署。无论是初学者还是经验丰富的开发人员,都能从中获益,提升项目管理效率。
本资源将详细介绍如何使用Ant进行批量多渠道打包Android应用。 首先,你需要在你的项目中集成Ant。这通常意味着在项目根目录下创建一个名为`build.xml`的Ant构建文件。这个文件是Ant的配置中心,它定义了构建过程中...
本文将深入探讨Ant 1.6.5的特点、功能以及如何使用它进行项目构建。 Ant的核心概念是构建文件,通常命名为`build.xml`,它定义了一系列的构建任务,如编译源代码、打包JAR文件、运行测试等。在Ant 1.6.5中,开发者...
标题中的“22_ant_完整操作一个用户管理的小例子_发布web项目和设置数据库”表明这是一个关于使用Apache Ant工具来构建、部署一个包含用户管理功能的Web应用,并配置数据库的教程。Apache Ant是一个Java库和命令行...
本示例将详细介绍如何在Android项目中利用Ant进行自动构建。 首先,我们需要理解Ant的基本概念。Ant是一个基于Java的任务驱动的构建系统,它的核心是build.xml文件,这个文件包含了构建项目的各种任务和规则。在...
在"Ant打包编译部署工具学习笔记2"中,我们可以预期博主分享了关于如何利用Ant进行更复杂的构建操作,例如集成测试、优化和打包。这可能包括如何配置build.xml文件,添加自定义任务,以及如何处理依赖关系。由于没有...
在"ant.rar +Apache+Ant+使用指南(精装本)"中,你将找到如何有效地利用Ant进行项目管理的详细指导。以下是一些关键知识点: 1. **安装与配置**:首先,你需要下载Apache Ant的二进制发行版,解压并设置环境变量`ANT...
此外,它还支持外部工具的集成,比如Maven的pom.xml文件可以通过Maven Ant Tasks进行解析和利用。这增强了Ant的灵活性,使得团队可以更方便地在不同的构建系统之间迁移。 Ant的一个重要优点是其可扩展性。通过编写...