您的位置:首页 > 其它

使用Ant要解决的几个问题

2016-07-24 23:10 232 查看
 

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.  如何实现tomcat下web
app的部署

项目目录结构:



图2 web项目目录结构

2.1 打包成war进行归档

task: 初始化 ->编译 ->
打成war
编译源代码后,拷贝非java文件到build目录中
打包为war过程中,将其它资源文件和jar也一并打包,按照web应用的目录层次结构进行拷贝打包
web应用最基本的目录层次结构:
appname
       WEB-INF
              classes
              lib
              web.xml
根据项目的目录结构,我们的打包规则是:
1 project name为appname
2 web/config目录下的配置文件放置在WEB-INF/classes目录下(除了web.xml)
3 libs的jar放置在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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Ant war 部署 jar