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 打包 问题的更多相关文章

  1. 不会用ant打包、部署项目的工程师,不是一个好程序员(测试)

    副标题:利用ant脚本 自动构建svn增量/全量 系统程序升级包 首先请允许我这样说,作为开发或测试,你一定要具备这种本领.你可以手动打包.部署你的工程,但这不是最好的方法.最好的方式就是全自动化的方 ...

  2. cocos2d-x使用ant打包

    1. 下载apache-ant-1.9.3,然后添加环境变量ANT_HOME = D:\dev_envir\apache-ant-1.9.3(你自己的ant根目录),再在path中添加路径:%ANT_ ...

  3. 使用ANT打包Android应用

    大家好,今天来分享一下如何使用ANT打包Android应用. 通常我们习惯用eclipse来开发Android程序,它会自动帮我们打包当前的应用程序.如果在Navigator视图下,我们可以看到以下几 ...

  4. 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 ...

  5. ANT打包 小实例

    ANT打包 package src; public class Hello { /**   * @param args   */  public static void main(String[] a ...

  6. ant打包命令

    学习ant打包命令.发布到以上tomcat还未做集成部署,无法添加到jenkins中. http://blog.csdn.net/telnetor/article/details/7015935 ht ...

  7. Android Ant打包笔记

    本文文档的下载地址(Word版):http://download.csdn.net/detail/yangwei19680827/7250711 Android Ant 打包 网上找了ant打包的资料 ...

  8. Ant打包可运行的Jar包(加入第三方jar包)

    本章介绍使用ant打包可运行的Jar包. 打包jar包最大的问题在于如何加入第三方jar包使得jar文件可以直接运行.以下用一个实例程序进行说明. 程序结构: 关键代码: package com.al ...

  9. MyEclipse使用Ant打包项目

    本章主要介绍如何使用ant打包发布项目. ant 是一个将软件编译.测试.部署等步骤联系在一起加以自动化的一个工具,大多用于Java环境中的软件开发.在实际软件开发中,有很多地方可以用到ant. 优点 ...

  10. [原]Android打包之Ant打包

    Android自动打包流程详细图: 使用Ant打包会简单很多,只要使用以下两个命令就可以搞定: android update project -p . --target android-18 ant ...

随机推荐

  1. .NET如何进行数据库连接

    在.net中连接sql server数据库,需引入System.Data.SqlClient命名空间: 1,最简单的连接方式: SqlConnection conn = new SqlConnecti ...

  2. notepad++编辑器写python需注意使用utf-8编码

    语言:python3.4 文本编辑器:notepad++ 报错:SyntaxError: (unicode error) 'utf-8' codec can't decode byte 0xb4 in ...

  3. 图论trainning-part-1 D. Going in Cycle!!

    D. Going in Cycle!! Time Limit: 3000ms Memory Limit: 131072KB 64-bit integer IO format: %lld      Ja ...

  4. BNUOJ 1575 Supermarket

    Supermarket Time Limit: 2000ms Memory Limit: 65536KB This problem will be judged on PKU. Original ID ...

  5. hexo干货系列:(总纲)搭建独立博客初衷

    前言 我是一名程序员,以前知识整理都是整理在为知笔记上,博客用的比较少,更别说是使用独立博客,因为不会... 2016年过年在家期间偶然的机会萌发了自己要搭建一个属于自己的独立博客的想法,于是就有了下 ...

  6. bzoj3514 Codechef MARCH14 GERALD07加强版 lct预处理+主席树

    Codechef MARCH14 GERALD07加强版 Time Limit: 60 Sec  Memory Limit: 256 MBSubmit: 1951  Solved: 746[Submi ...

  7. msp430入门编程41

    msp430中C语言的软件工程--状态机建模

  8. hdu - 5007 Post Robot (水题)

    http://acm.hdu.edu.cn/showproblem.php?pid=5007 #include<iostream> #include<stdio.h> #inc ...

  9. CORS:Source.priciple implimentation in Spring

    Cors(Cross-origin Resource Sharing)一种跨域访问技术,基本思想是使用自定义的HTTP头部允许浏览器和服务器相互了解对方,从而决定响应成功与否. CORS与JSONP对 ...

  10. foobar2000使用cue文件播放时出现Unable to open item for playback (Object not found):的问题解决

    如下错误: 一般是找不到APE文件导致的.解决方法如下: 1.打开APE文件,对一下路径修改即可.