花了一天时间研究ANT,做了一个简单的demo,本着分享快乐的初衷,现在将部分代码贴出来,希望给有需要的朋友一些帮助,也给自己备个份。
笔者无意在这里讨论ANT的详细信息,所以这里我们假设你至少已经知道ANT是什么、有什么用。
笔者使用的IDE是Eclipse+myEclipse,所以这里都将以该环境做介绍。
1、工程目录图:
在工程的根目录下我们建了一个build.xml文件。之所以把此文件放在根目录下,是为了便于打包时找到路径,建议你也放在该目录下。文件内容如下:
<?xml version="1.0" encoding="UTF-8" ?>
<project name="struts2_demo" default="deploy" basedir="." >
<description>用ANT将struts2_demo发布成WAR</description>
<!-- 定义发布需要用到的属性 -->
<!-- WEB容器需要用到的属性 -->
<property name="tomcat.home" value="D:/devolepment/apache-tomcat-6.0.18"></property>
<property name="webapps.home" value="D:/devolepment/apache-tomcat-6.0.18/webapps"></property>
<!-- 定义打包需要涉及的本地工程目录 属性 -->
<property name="app.home" value="."></property>
<property name="app.name" value="struts2_demo"></property>
<property name="javadoc.pkg" value="help"></property>
<property name="src.home" value="${app.home}/src"></property>
<property name="web.home" value="${app.home}/WebRoot"></property>
<property name="lib.home" value="${web.home}/WEB-INF/lib"></property>
<property name="classes.home" value="${web.home}/WEB-INF/classes"></property>
<property name="doc.home" value="${app.home}/doc"></property>
<!-- 定义构建WEB应用的良好的文件目录 属性 -->
<property name="build.home" value="${app.home}/build"></property>
<property name="build.classes" value="${build.home}/WEB-INF/classes"></property>
<property name="build.lib" value="${build.home}/WEB-INF/lib"></property>
<!-- 定义发布目录 最后工程将WAR文件COPY在该目录下,发布的时候只要将此文件拷贝到${webapps.home}指定的目录下 -->
<property name="deploy.home" value="${app.home}/deploy"></property>
<!-- 应用需要用到的类库支持文件 包括工程本身lib目录下的所有.jar和web容器中lib目录下的所有.jar文件 -->
<path id="compile.classpath">
<pathelement location="${classes.home}" />
<fileset dir="${lib.home}">
<include name="*.jar" />
<include name="*.zip" />
</fileset>
<fileset dir="${tomcat.home}/lib">
<include name="*.jar"/>
</fileset>
<pathelement location="${tomcat.home}/classes"/>
</path>
<!-- 删除历史发布痕迹 -->
<target name="clean_all">
<delete dir="${build.home}"></delete>
<delete dir="${classes.home}"></delete>
<delete dir="${deploy.home}"></delete>
<delete dir="${webapps.home}/${app.name}" failonerror="false"></delete>
<delete dir="${webapps.home}/${app.name}.war"></delete>
<delete dir="${doc.home}"></delete>
</target>
<!-- 创建新的发布所涉及的路径 它取决于clean_all这个target,也就是说如果要执行它,首先得等clean_all执行完毕 -->
<target name="prepare" depends="clean_all">
<echo message="Tomacat Home=${tomcat.home}"></echo>
<echo message="webapps Home=${webapps.home}"></echo>
<mkdir dir="${classes.home}"/>
<mkdir dir="${deploy.home}"/>
<mkdir dir="${doc.home}"/>
<mkdir dir="${doc.home}/api"/>
<mkdir dir="${build.home}"/>
<mkdir dir="${build.home}/WEB-INF"/>
<mkdir dir="${build.home}/WEB-INF/classes"/>
<mkdir dir="${build.home}/WEB-INF/lib"/>
</target>
<!-- 编译工程目录【${src.home}】下的所有java文件,并将编译好的class文件放在【${classes.home}】下面。编译的时候需要类库的支持 -->
<target name="compile" depends="prepare">
<javac srcdir="${src.home}" destdir="${classes.home}" debug="yes">
<classpath refid="compile.classpath"></classpath>
</javac>
</target>
<!-- 构建良好的WEB application结构。将工程目录下的对应的文件COPY构建目录下 -->
<target name="build" depends="compile">
<copy todir="${build.home}">
<fileset dir="${web.home}"></fileset>
</copy>
<copy todir="${build.classes}">
<fileset dir="${classes.home}"></fileset>
</copy>
<copy todir="${build.classes}">
<!-- 打包工程目录下的所有资源文件。如果存在不同后缀名的资源文件则在include里面引入 -->
<fileset dir="${src.home}">
<include name="**/*.properties" />
<include name="**/*.xml" />
</fileset>
</copy>
<copy todir="${build.lib}">
<fileset dir="${lib.home}"></fileset>
</copy>
<!-- 打包BUILD目录下的文件成为一个WAR文件 -->
<jar jarfile="${deploy.home}/${app.name}.war"
basedir="${build.home}">
</jar>
</target>
<!-- 发布,直接将${deploy.home}/${app.name}.war拷贝至web容器下的发布目录 -->
<target name="deploy" depends="build">
<copy todir="${webapps.home}" file="${deploy.home}/${app.name}.war"></copy>
</target>
<!-- 生成发布文档 -->
<target name="javaDoc" depends="compile">
<javadoc source="${src.home}"
destdir="${doc.home}/api"
packagenames="%{javadoc.pkg}.*">
</javadoc>
</target>
</project>
2、根据【<project name="struts2_demo" default="deploy" basedir="." >】,我们知道如果运行这个build文件,它会从“deploy”这个target 开始执行。那么怎么执行?在eclipse里在该文件上右键单击。会出现如下图所示的操作:
直接点击运行即可。
3、那么,我们怎么知道运行成功与否?看控制台,运行后,控制台会输出如下信息:
Buildfile: D:\devolepment\eclipse\workspace\struts2_demo\build.xml
clean_all:
[delete] Deleting directory D:\devolepment\eclipse\workspace\struts2_demo\WebRoot\WEB-INF\classes
prepare:
[echo] Tomacat Home=D:/devolepment/apache-tomcat-6.0.18
[echo] webapps Home=D:/devolepment/apache-tomcat-6.0.18/webapps
[mkdir] Created dir: D:\devolepment\eclipse\workspace\struts2_demo\WebRoot\WEB-INF\classes
[mkdir] Created dir: D:\devolepment\eclipse\workspace\struts2_demo\deploy
[mkdir] Created dir: D:\devolepment\eclipse\workspace\struts2_demo\doc
[mkdir] Created dir: D:\devolepment\eclipse\workspace\struts2_demo\doc\api
[mkdir] Created dir: D:\devolepment\eclipse\workspace\struts2_demo\build
[mkdir] Created dir: D:\devolepment\eclipse\workspace\struts2_demo\build\WEB-INF
[mkdir] Created dir: D:\devolepment\eclipse\workspace\struts2_demo\build\WEB-INF\classes
[mkdir] Created dir: D:\devolepment\eclipse\workspace\struts2_demo\build\WEB-INF\lib
compile:
[javac] Compiling 21 source files to D:\devolepment\eclipse\workspace\struts2_demo\WebRoot\WEB-INF\classes
[javac] 注意:D:\devolepment\eclipse\workspace\struts2_demo\src\com\yck\demo\util\database\ConnectionManage.java 使用了未经检查或不安全的操作。
[javac] 注意:要了解详细信息,请使用 -Xlint:unchecked 重新编译。
build:
[copy] Copying 125 files to D:\devolepment\eclipse\workspace\struts2_demo\build
[copy] Copied 50 empty directories to 2 empty directories under D:\devolepment\eclipse\workspace\struts2_demo\build
[copy] Copying 2 files to D:\devolepment\eclipse\workspace\struts2_demo\build\WEB-INF\classes
[jar] Building jar: D:\devolepment\eclipse\workspace\struts2_demo\deploy\struts2_demo.war
deploy:
[copy] Copying 1 file to D:\devolepment\apache-tomcat-6.0.18\webapps
BUILD SUCCESSFUL
如果你看见了“BUILD SUCCESSFUL”,说明项目已经发布成功。
4、此时,你刷新项目,会发现项目下对了几个文件夹。
打开这些文件夹,会看见如下信息:
5、这个时候,你在回过头去看看build.xml文件的一些配置,有没有恍然大悟?至少更明白为什么build.xml文件里的各属性为什么要那么配置,对吧。
6、关于配置的一些信息已经在build.xml里面做了注释,使用不再赘述。其实如果只想用ANT打包发布你的项目,上面的这些信息已经能应付简单的工作了。说到低,就是要将你的项目文件重新组织成一个良好的WEB应用目录,然后将这个目录打包并拷贝到WEB容器的发布目录下去,如果你留心,就会发现,我们打包后在项目文件里,多出来了一些这样的文件:
不错,上图所示的其实已经是一个普通的WEB应用目录了。
分享到:
相关推荐
使用ant打包android,使用ant打包android
mac下是用ant对android App的多渠道打包工具。
java ant技术发布web项目,跨平台的操作。简单 易用
java项目ant打包脚本,包括环境变量设置,打包脚本等信息,共有三个文件 ant.bat、build.xml、setEnv.cmd
ant 打包
使用Ant构建web项目 从编译到测试 生成测试报告 打包 邮件发送 远程下载tomcat 部署运行一条龙服务之ant脚本
SSH2集成+ant打包,一个让人一目了然的实例!
一个普通java程序用ant打包的列子,完整的,里面采用的是eclipse自带的编译插件进行的打包,需要结合eclipse中的插件一起使用
Struts2官方例子1(Ant版的),Basic_Struts2_Ant,主要是搭建Struts2的基本环境,包括需要的jar,web.xml Struts.xml的配置
1)利用Ant将Web项目自动打包成war文件 2)远程发布到Tomcat服务器
Ant多渠道 多项目引用 打包Android项目
ant脚本,讲本地代码copy到远程linux服务器的tomcat目录下,并重启tomcat,需要下载jsch.jar包放到本地ant-home的lib目录下
ant打包详细教程
MyEclipse导入Tomcat源码.wps文档说明 apache-tomcat-6.0.37-src.zip源码
ant打包项目的build.xml配置
非maven项目中的ANT打包可执行JAR包脚本,包括配置文件、第三方jar打包
Ant打包和Hibernate文件生成实例,Ant打包和Hibernate文件生成实例
使用Ant编译打包
ant打包时编码 GBK 的不可映射字符 原因:这个主要是因为我们在写代码的时候加入了一些中文注释,而导致编译时候出现的问题。 解决方式:要处理这个问题,仅仅只需要在 build.xml文件中的调用javac的所有地方加入...
Ant是Apache的一个开源项目。它是一个跨平台的工具,主要用于项目项目的自动编译和打包和测试等。包括集成ant和使用ant的实例。