Ant 打包 问题
Ant 打包问题及解决归纳总结:
1.build.xml注意设置basedir:
<project name="s2si" default="dist" basedir=".">
--->>这里basedir="."意思是基础目录是与build.xml同级目录,比如说src或 s2si,后续新建目录都是在此基础上进行,为了方便打包,可以根据自己需要放置 build.xml,比如我就放在了工程s2si根目录下.
2.build.xml注意设置<war>命令中的basedir:
<war destfile="${build.dir}/${ant.project.name}.war" basedir="${build.dir}" webxml="${build.web.dir}/web.xml"/>
打包是将编译好的class文件和相关配置文件集体打包,所以应该选择 "${build.dir}",开始自己犯错basedir="${basedir}",直接导致打出的war包下 面很乱,即使打包过程没出错,但部署到tomcat上就会报一大堆问题.
3.打包时需要注意编码和jdk版本:
<javac destdir="${build.web.class.dir}" source="1.6" target="1.6" debug="on"
deprecation="false" optimize="false" failonerror="true" srcdir="${src.dir}" >
<compilerarg line="-encoding UTF-8"/>
<classpath refid="project.classpath" ></classpath>
</javac>
--->>字符编码要和web项目编码一致,jdk版本要和本地安装版本一致.如果不致,myeclipse中运行build.xml打包编译不过,本地手工ant打包会报如下错:
eclipse 出现警告: [options] 未与 -source 1.6 一起设置引导类路径.
4.build.xml拷贝页面文件和配置文件时注意excludes使用:
<copy todir="${build.web.class.dir}">
<!-- 复制源代码目录中所有的非java文件 -->
<fileset dir="${src.dir}" excludes="**/*.java">
</fileset>
</copy>
<copy todir="${build.dir}">
<!-- WebRoot目录中所有的非java文件 -->
<fileset dir="${webRoot.dir}" excludes="**/*.class" >
</fileset>
</copy>
--->>说明:
${src.dir}=s2si/src
${webRoot.dir}=s2si/WebRoot
这里需要注意的是要排除指定目录中某些规则的文件必须用:excludes="**/*.java"或excludes="**/*.class",**/*.*这是ant里的规则,不是指两级目录后的规则筛选.
--->> classpath备忘:
<classpath refid="project.classpath" ></classpath>
这里用classpath标签,指定路径时用classpathref还是用path还是用refid有不同的情况,这里用的是refid,注意根据自己情况而定.
---->> ant打包核心build.xml内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<project name="s2si" default="dist" basedir=".">
<property name="build.dir" value="build" description="输出目录"/>
<property name="build.web.dir" value="${build.dir}/WEB-INF" description="web配置输出目录"/>
<property name="build.web.class.dir" value="${build.web.dir}/classes" description="web类输出目录"/>
<property name="build.web.lib.dir" value="${build.web.dir}/lib" description="web引用jar输出目录"/>
<property name="src.dir" value="src" description="源代码目录"/>
<property name="webRoot.dir" value="${basedir}/WebRoot" />
<property name="lib.dir" value="${webRoot.dir}/WEB-INF/lib" />
<property name="encoding" value="utf-8" description="文件编码"/>
<path id="project.classpath">
<fileset dir="${lib.dir}">
<include name="*.jar" />
</fileset>
<pathelement path="${basedir}/WebRoot/WEB-INF/lib"/>
</path>
<target name="init">
<delete dir="${build.dir}"/>
<mkdir dir="${build.dir}"/>
<mkdir dir="${build.web.dir}"/>
<mkdir dir="${build.web.lib.dir}"/>
<mkdir dir="${build.web.class.dir}"/>
</target>
<target name="compile" depends="init">
<javac destdir="${build.web.class.dir}" source="1.6" target="1.6" debug="on"
deprecation="false" optimize="false" failonerror="true" srcdir="${src.dir}" >
<compilerarg line="-encoding UTF-8"/>
<classpath refid="project.classpath" ></classpath>
</javac>
<copy todir="${build.web.class.dir}">
<!-- 复制源代码目录中所有的非java文件 -->
<fileset dir="${src.dir}" excludes="**/*.java">
</fileset>
</copy>
<copy todir="${build.dir}">
<!-- WebRoot目录中所有的非java文件 -->
<fileset dir="${webRoot.dir}" excludes="**/*.class" >
</fileset>
</copy>
</target>
<target name="main" depends="init,compile" />
<target name="dist" depends="main" description="将工程打成war包">
<war destfile="${build.dir}/${ant.project.name}.war" basedir="${build.dir}" webxml="${build.web.dir}/web.xml"/>
</target>
</project>
Ant 打包 问题的更多相关文章
- 不会用ant打包、部署项目的工程师,不是一个好程序员(测试)
副标题:利用ant脚本 自动构建svn增量/全量 系统程序升级包 首先请允许我这样说,作为开发或测试,你一定要具备这种本领.你可以手动打包.部署你的工程,但这不是最好的方法.最好的方式就是全自动化的方 ...
- cocos2d-x使用ant打包
1. 下载apache-ant-1.9.3,然后添加环境变量ANT_HOME = D:\dev_envir\apache-ant-1.9.3(你自己的ant根目录),再在path中添加路径:%ANT_ ...
- 使用ANT打包Android应用
大家好,今天来分享一下如何使用ANT打包Android应用. 通常我们习惯用eclipse来开发Android程序,它会自动帮我们打包当前的应用程序.如果在Navigator视图下,我们可以看到以下几 ...
- cocos2d-x 2.1.4 使用create_project.py脚本创建项目+ant打包项目
1.创建项目:执行create_project.py脚本,进入Doc界面输入下面的命令: cd D:\cocos2d-x-2.1.4\cocos2d-x-2.1.4\tools\project-cre ...
- ANT打包 小实例
ANT打包 package src; public class Hello { /** * @param args */ public static void main(String[] a ...
- ant打包命令
学习ant打包命令.发布到以上tomcat还未做集成部署,无法添加到jenkins中. http://blog.csdn.net/telnetor/article/details/7015935 ht ...
- Android Ant打包笔记
本文文档的下载地址(Word版):http://download.csdn.net/detail/yangwei19680827/7250711 Android Ant 打包 网上找了ant打包的资料 ...
- Ant打包可运行的Jar包(加入第三方jar包)
本章介绍使用ant打包可运行的Jar包. 打包jar包最大的问题在于如何加入第三方jar包使得jar文件可以直接运行.以下用一个实例程序进行说明. 程序结构: 关键代码: package com.al ...
- MyEclipse使用Ant打包项目
本章主要介绍如何使用ant打包发布项目. ant 是一个将软件编译.测试.部署等步骤联系在一起加以自动化的一个工具,大多用于Java环境中的软件开发.在实际软件开发中,有很多地方可以用到ant. 优点 ...
- [原]Android打包之Ant打包
Android自动打包流程详细图: 使用Ant打包会简单很多,只要使用以下两个命令就可以搞定: android update project -p . --target android-18 ant ...
随机推荐
- Django 多个字段关联同一外键
# -*- coding: utf-8 -*- """ Tencent is pleased to support the open source community b ...
- CentOS 6.5 x64 安装jdk8
1.去官网下载Linux版本的jdk8,我下载的是下面这个 2.下载xftp和xshell来操纵服务器,可以搜索一下下载安装即可,安装完成后,打开xshell,新建链接为你的云服务器的IP地址和密码, ...
- Android API Guides 安卓API指导----第一部分:Introduction(介绍)
第一部分: Introduction(介绍) 目录包含:APP Fundamentals (应用程序基础) Device Compatibility(设备兼容性) System Perm ...
- python基础——5(元组、字典、集合)
上节复习: # 数字类型 # int:py3|py2 long:py2 # float: 3.14 # complex(5, 4) => 5 + 4j num = 12345678901234 ...
- Oracle数据库之初步接触
每个Oracle数据库都是数据的集合,这些数据包含在一个或多个文件中.数据库有物理和逻辑两种结构.在开发应用程序的过程中,会创建诸如表和索引这样的结构,这些结构用于数据行的存储和查询.可以为对象的名称 ...
- Python中的*arg和**kwarg
一个简单的函数 首先我们可以定一个简单的函数, 函数内部只考虑required_arg这一个形参(位置参数) def exmaple(required_arg): print required_arg ...
- spring的IOC底层原理
我们调用一个类的方法,首先是User user=new User(),对象调用这个方法,user.add(),这种方法有一个缺陷就是代码的耦合度太高,比如你的servlet调用User类里的方法,需 ...
- Jmeter接口测试-正则表达式提取器-提取token
在使用Jmeter过程中会有这样的场景, A接口执行后返回json字符串, 这个json中有B接口需要的某一个参数, 那如何来实现呢? 第一步:添加正则表达式 方法非常简单, 这就是我们今天要讲的正则 ...
- Flask 架构 --xunfeng实例研究
文件结构 │ Config.py # 配置文件 │ README.md # 说明文档 │ Run.bat # Windows启动服务 │ Run.py # webserver │ Run.sh # L ...
- Android渲染器Shader:环状放射渐变渲染器RadialGradient(三)
Android渲染器Shader:环状放射渐变渲染器RadialGradient(三) Android RadialGradient渲染器提供一种环状.发散.放射形状的渐变渲染器. 写一个例子: ...