使用Ant要解决的几个问题


 

1.  如何将源码及资源文件打包为jar文件

项目目录结构示例:


1项目目录结构

1.1 打包class文件为jar

task: 初始化 -> 编译 -> 打包

1.1.1 build.properties

#编译保存的目录
build.dir=${basedir}\\build
#源代码目录
src.dir=${basedir}\\src
#打包的目录
dist.dir=${basedir}\\dist
#非src下配置文件目录
config.dir=${basedir}\\config


1.1.2 build_jar.xml

<?xml version="1.0" encoding="UTF-8"?>
<project name="myProject" default="dist">
   <description>
      simple example build file
   </description>
  
   <!-- 引入文件中的配置项 -->
   <property file="build.properties"/>
 
   <target name="init">
      <!-- 创建时间戳-->
      <tstamp/>
      <!-- 创建构建目录用于编译 -->
      <mkdir dir="${build.dir}"/>
   </target>
  
   <target name="compile" depends="init" description="complie the source">
      <!-- 编译java代码从${src}到${build} -->
      <javac srcdir="${src.dir}" destdir="${build.dir}">
         <compilerarg line="-encoding UTF-8"/> 
      </javac>
   </target>
  
   <target name="dist" depends="compile" description="generate the distribution">
      <!-- 创建打包目录 -->
      <mkdir dir="${dist.dir}/lib"/>
     
      <!-- 将编译的class打包成MyProject-${DSTAMP}.jar文件 -->
      <jar destfile="${dist.dir}/lib/MyProject-${DSTAMP}.jar">
         <!-- 编译的class文件目录 -->
         <fileset dir="${build.dir}"></fileset>
      </jar>
   </target>
  
  
   <target name="clean" description="clean up">
      <!-- 删除${build}和${dist} 目录 -->
      <delete dir="${build.dir}"/>
      <delete dir="${dist.dir}"/>
   </target>
  
</project>


 

1.2 打包的时候包含资源文件

task:  初始化->编译-> 打包

a)     编译源代码后,拷贝非java文件到build目录中

b)     打包为jar过程中,将其它资源文件也一并打包

1.2.1拷贝非java文件到build目录中

<target name="compile" depends="init" description="complie the source">
   <!-- 编译java代码从${src}到${build} -->
   <javac srcdir="${src.dir}" destdir="${build.dir}">
      <compilerarg line="-encoding UTF-8"/> 
   </javac>
     
   <!-- 将src下的非java文件拷贝到build目录 -->
   <copy todir="${build.dir}" >
      <fileset dir="${src.dir}">
            <exclude name="**/*.java"/>
      </fileset>
   </copy>
     
</target>


1.2.2将其它资源文件也一并打包

<target name="dist" depends="compile" description="generate the distribution">
   <!-- 创建打包目录 -->
   <mkdir dir="${dist.dir}/lib"/>
     
   <!-- 将编译的class打包成MyProject-${DSTAMP}.jar文件 -->
   <jar destfile="${dist.dir}/lib/MyProject-${DSTAMP}.jar">
      <!-- 编译的class文件目录 -->
      <fileset dir="${build.dir}"></fileset>
      <!-- 其它资源文件目录 -->
      <fileset dir="${config.dir}"></fileset>
   </jar>
</target>


 

 

2.  如何实现tomcatweb app的部署

项目目录结构:


2 web项目目录结构

2.1 打包成war进行归档

task: 初始化 ->编译 -> 打成war

编译源代码后,拷贝非java文件到build目录中

打包为war过程中,将其它资源文件和jar也一并打包,按照web应用的目录层次结构进行拷贝打包

web应用最基本的目录层次结构:

appname

       WEB-INF

              classes

              lib

              web.xml

根据项目的目录结构,我们的打包规则是:

1 project nameappname

2 web/config目录下的配置文件放置在WEB-INF/classes目录下(除了web.xml)

3 libsjar放置在WEB-INF/lib目录下

4 web/config/web.xml放置在WEB-INF

5 pages目录下的内容放置在appname目录下

 

2.1.1build.properties

#编译保存的目录
build.dir=${basedir}\\build
#源代码目录
src.dir=${basedir}\\src
#war存放目录
war.dir=${basedir}\\war
#libs存放目录
lib.dir=${basedir}\\libs
#非src下配置文件目录
config.dir=${basedir}\\web\\config
#web文件存放目录
web.dir=${basedir}\\web
#项目名称,web应用访问的名称
project.name=antweb
#tomcat目录
tomcat.dir=K:\\apache-tomcat-7.0.63-windows-x64-2\\apache-tomcat-7.0.63
#webapps目录
webapps.dir=${tomcat.dir}\\webapps


 

2.1.2 build_web.xml

<?xml version="1.0" encoding="UTF-8"?>
<project name="${project.name}" default="war-deploy">
   <description>
      web deploy build file
   </description>
  
   <!-- 引入文件中的配置项 -->
   <property file="build.properties"/>
 
   <target name="init">
      <!-- 创建时间戳-->
      <tstamp/>
      <!-- 创建构建目录用于编译 -->
      <mkdir dir="${build.dir}"/>
   </target>
  
   <target name="compile" depends="init" description="complie the source">
      <!-- 编译java代码从${src}到${build} -->
      <javac srcdir="${src.dir}" destdir="${build.dir}">
         <compilerarg line="-encoding UTF-8"/> 
      </javac>
     
      <!-- 将src下的非java文件拷贝到build目录 -->
      <copy todir="${build.dir}" >
         <fileset dir="${src.dir}">
            <exclude name="**/*.java"/>
          </fileset>
      </copy>
     
      <!-- 拷贝配置文件到build目录 -->
      <copy todir="${build.dir}">
         <fileset dir="${config.dir}">
            <exclude name="**/web.xml"/>
         </fileset> 
      </copy>
     
   </target>
  
   <target name="war" depends="compile" description="generate the distribution">
      <!-- 创建打包目录 -->
      <mkdir dir="${war.dir}/archive"/>
     
      <!-- 打包成${project.name}.war文件 -->
      <war destfile="${war.dir}/archive/${project.name}.war"
         webxml="${config.dir}/web.xml">
         <lib dir="${lib.dir}"/>
         <classes dir="${build.dir}"/>
         <zipfileset dir="${web.dir}/pages">
         </zipfileset>
      </war>
   </target>
  
 
   <target name="clean" description="clean up">
      <!-- 删除${build}和${dist} 目录 -->
      <delete dir="${build.dir}"/>
      <delete dir="${war.dir}"/>
      <delete dir="${webapps.dir}/${project.name}"/>
   </target>
  
</project>


2.2 拷贝web应用需要的文件到tomcat webapps目录下

<target name="war-deploy" depends="compile" description="generate the distribution">
      <!-- 创建应用目录 -->
      <mkdir dir="${webapps.dir}/${project.name}"/>
      <mkdir dir="${webapps.dir}/${project.name}/WEB-INF"/>
      <mkdir dir="${webapps.dir}/${project.name}/WEB-INF/classes"/>
      <mkdir dir="${webapps.dir}/${project.name}/WEB-INF/lib"/>
     
      <!-- 拷贝class和配置文件到WEB-INF/classes目录 -->
      <copy todir="${webapps.dir}/${project.name}/WEB-INF/classes">
         <fileset dir="${build.dir}"/>
      </copy>
     
      <!-- 拷贝libs到WEB-INF/lib目录 -->
      <copy todir="${webapps.dir}/${project.name}/WEB-INF/lib">
         <fileset dir="${lib.dir}"/>
      </copy>
     
      <!-- 拷贝web.xml到WEB-INF目录 -->
      <copy todir="${webapps.dir}/${project.name}/WEB-INF">
         <fileset file="${config.dir}/web.xml"/>
      </copy>
     
      <!-- 拷贝页面到应用程序根目录 -->
      <copy todir="${webapps.dir}/${project.name}">
         <fileset dir="${web.dir}/pages"></fileset>
      </copy>
     
   </target>


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

来了就走下去

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值