| Profilo di he迷FotoBlogElenchi | Guida |
迷
|
23 giugno (zz)用ANT打包Struts2项目并发布到tomcat里zz from http://changkunyang.javaeye.com/blog/376582
花了一天时间研究ANT,做了一个简单的demo,本着分享快乐的初衷,现在将部分代码贴出来,希望给有需要的朋友一些帮助,也给自己备个份。
<?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应用目录了。 22 marzo 使用Lucene对SQL server数据库建立索引的日志(2)继续使用Lucene对SQL server数据库建立索引的日志(1) ========================== 2009-3-20 20:49:17 205720 2009-3-21 9:07:40 begin 200000-220000 2009-3-21 10:21:53 begin 220000-240000 2009-3-21 11:01:53 begin 240000-280000 2009-3-21 13:19:08 begin 280000-300000 2009-3-21 14:01:45 begin 300000-340000 2009-3-21 16:04:10 begin 340000-400000 2009-3-21 19:13:26 begin 340000-360000 2009-3-21 19:42:23 begin 360000-380000 2009-3-21 20:46:44 begin 380000-387000 2009-3-21 21:26:35 400000 1.58GB 2009-3-21 22:26:07 begin 410000-420000 2009-3-21 23:19:26 begin 420000-435161 20 marzo 使用Lucene对SQL server数据库建立索引的日志(1)操作系统:Microsoft Windows Server 2003 R2 Enterprise Edition Service Pack 2 LOGMAX id:435075 2009-3-19 ?:??:?? begin 64911-120000 2009-3-20 9:27:20 begin 120001-140000 2009-3-20 10:33:44 begin 140000-160000 2009-3-20 15:32:46 begin 160000-200000 2009-3-20 15:35:40 begin 140000-160000 140000file.size()=529,750KB 2009-3-20 16:21:30 begin 160000-200000 2009-3-20 20:09:34 begin 200000-240000 绝望的项目(2)还是英文严谨做一个装修,需要选某种颜色的材料。 需求人士通常在没看到任何成果之前会给项目组很大的自由.但是当他能够用眼睛看到东西的时候,所有他没明确指出的东西最好都做好修改的准备. |
|||
|
|