`
changkunyang
  • 浏览: 30932 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

用ANT打包Struts2项目并发布到tomcat里

阅读更多
   花了一天时间研究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应用目录了。
4
0
分享到:
评论

相关推荐

    Struts2官方例子1(Ant版的)

    Struts2是一个强大的Java web...通过这个例子,可以学习到如何配置Struts2框架,编写Action,以及如何利用Ant进行项目的构建和管理。这对于初学者来说是一个很好的起点,有助于深入理解MVC架构和Struts2的核心概念。

    struts教程,tomcat,配置到实例

    Struts教程:从基础到高级配置到实例 ...通过这个从基础到高级的Struts教程,你将能够熟练地创建、配置和运行Struts应用,并了解其在Tomcat上的部署过程。不断实践和深入学习,你将在Java Web开发领域变得更加专业。

    struts2入门教程

    8. **部署与运行**:最后,使用Ant构建工具打包项目,然后部署到Tomcat或其他Servlet容器上,通过浏览器访问应用,验证Struts2是否正常工作。 通过这个入门教程,你将学习到如何搭建Struts2环境,编写Action,配置...

    JDK1.4 运行struts2

    3. **构建工具**:由于JDK1.4时期,Maven还未广泛使用,你可能需要使用Ant作为构建工具来编译和打包Struts2应用。确保Ant的版本也与JDK1.4兼容。 4. **依赖管理**:Struts2的运行需要一系列库文件,这些文件通常...

    Ant StrutsSample.rar

    4. **部署**:最后,Ant可以将WAR文件部署到Tomcat或其他Web服务器,完成整个发布流程。 在实际项目中,Ant与Struts的结合使用可以提高开发效率,简化项目管理。通过对StrutsSample的分析,我们可以更深入地理解这...

    ant 小例子ant 小例子

    Ant是Apache软件基金会Jakarta项目的一个子项目,它是一个基于Java的构建工具,用来替代Java应用程序的构建过程中手工执行Java编译、测试、部署等步骤。Ant使用XML来描述构建过程,这使得构建脚本独立于开发环境,...

    liferay 基于struts2+hibernate+spring

    - 使用Ant将项目打包并发布到Tomcat。 2. **整合Spring与Hibernate**: - 在`WEB-INF`目录下添加`ApplicationContext.xml`配置Spring,包括数据源(Datasource)、SessionFactory(Hibernate配置)和...

    搭建struts2简单环境

    Struts2项目通常使用Maven,但Ant也是可行的选择。在这里,我们推荐使用Maven,因为它具有更广泛的社区支持和更强大的依赖管理功能。 3. **IDE**: 为了方便开发,你可以选择一款Java IDE,如Eclipse、IntelliJ IDEA...

    struts2+spring整合的一个例子

    - **构建配置**:Spring_Struts2_Ant表明使用Ant进行项目构建,Ant是Java项目常用的构建工具,通过build.xml文件定义构建过程,包括编译、打包、部署等步骤。 - **任务定义**:Ant任务可能包括编译源码、生成JAR或...

    Struts教程

    4. **Ant的使用**:演示如何执行Ant的任务来完成项目的编译和打包。 #### 十七、结论 在本教程的最后部分,我们将对整个学习过程进行总结,并对Struts框架的学习提出进一步的方向和建议。 #### 十八、技术背景 本...

    Struts2官方例子3--Action的编写

    使用Ant构建工具,我们可以创建一个build.xml文件来编译和运行项目。Ant的`&lt;target&gt;`标签定义了不同的构建任务,如编译源代码、打包和部署等。 ```xml ${build.dir}/classes"/&gt; ${build.dir}/dist"/&gt; $...

    SSH2项目整合

    Ant或Maven作为构建工具,负责项目的编译、打包和部署,其中Ant是SSH2项目中常见的选择,它的build.xml文件定义了构建过程。 整合步骤大致包括: 1. 配置Struts2:在Web-INF目录下创建struts.xml,定义Action和结果...

    struts doc说明文档

    2. **创建Maven或Ant项目** - 设置项目结构,包括src/main/java(存放Java代码)、src/main/resources(存放配置文件)等。 3. **配置Struts** - 编写struts.xml,定义Action和结果页面。 4. **编写Action类** - ...

    struts2.3.20环境搭建详解借鉴.pdf

    在这个过程中,我们将手动添加所需的Struts 2库,并使用Ant构建工具来创建和部署应用。 首先,你需要从Apache Struts官方网站下载Struts 2的发行版。选择当前的General Availability版本,然后下载“Essential ...

    Struts tutorial

    以Tomcat为例,确保将Struts.jar复制到应用的lib目录,并保留struts目录下的其他文件。安装完成后,可以通过创建简单的JSP页面来验证环境是否正确设置。 #### 三、第一个实验:简单的JSP页面 为了验证Struts环境...

    Struts简单登录入门

    将项目打包成WAR文件,部署到Tomcat服务器。通过浏览器访问`http://localhost:8080/StrutsLoginDemo/login.action`,就可以看到登录界面。 在实际应用中,Struts还可以结合其他技术,如Hibernate进行持久化操作,...

    Struts 1.2+Hibernate3.3+Spring3.0整合详细步骤+源码

    9. **测试与部署**:编写JUnit测试用例验证整合是否成功,然后将项目打包成WAR文件,部署到Tomcat服务器上运行。 **源码解析** 文档"Struts 2.1+Hibernate3.3+Spring3.0整合详细步骤.doc"可能包含了上述步骤的详细...

    struts tutorial.pdf

    Ant是一款强大的自动化构建工具,可以用于项目的编译、打包和部署等工作。 ##### 11.1 Ant的安装 - **安装指南**: 提供详细的安装步骤,确保Ant能够在开发环境中正常运行。 ##### 11.2 什么是Ant - **Ant概述**: ...

    ant使用手册

    在配置好环境并创建了`build.xml`之后,只需在命令行中输入`ant`即可执行默认目标(在本例中是`dist`),这将执行所有相关的编译和打包操作。若要指定其他目标,可以使用`ant [target]`的形式,例如`ant init`仅执行...

Global site tag (gtag.js) - Google Analytics