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. python 模块学习(二)

    一.日志模块(logging ) 日志是一种追踪软件运行时所发生事件的方法 1.简单的日志编写(文件输出) import logging # 日志模块 # 日志配置,把日志内容存到文件中 loggin ...

  2. 【02】GitHub 工具 Octotree

    #推荐一个 GitHub 工具 Octotree Chrome extension 它可以让你在看任何仓库时,获得一个左边的树状图.

  3. coraldraw快捷键

        显示导航窗口(Navigator window) [N] 运行 Visual Basic 应用程序的编辑器 [Alt]+[F11]  保存当前的图形 [Ctrl]+[S]  打开编辑文本对话框 ...

  4. Oracle dataguard failover 实战

    Oracle dataguard  failover 实战 操作步骤 备库: SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINIS ...

  5. hdu 2831

    #include<stdio.h> #include<stdlib.h> struct node{ int x,y,j,num; }a[110]; int cmp(const ...

  6. ES6__class 的继承等相关知识案例

    /** * class 的继承等相关知识 */ // extends. static. super const canvas = document.querySelector('#canvas'); ...

  7. 《TCP/IP详解卷1:协议》——第3章 IP:网际协议(转载)

    1.引言 IP是TCP/IP协议族中最核心的协议.所有的TCP.UDP.ICMP及IGMP数据都以IP数据报格式传输.IP提供不可靠. 无连接的数据报传送服务. (1)不可靠 它不能保证IP数据报能成 ...

  8. dpr——设备像素比(device pixel ratio)

    设备像素比 = 物理像素 / 逻辑像素 1.物理像素 显示器上最小的物理显示单元(像素颗粒),在操作系统的调度下,每一个设备像素都有自己的颜色值和亮度值. 例如:手机大小固定,物理像素越高,画面越清晰 ...

  9. CommonTabLayout+ViewPager快速完成APP首页搭建

    款APP开始的时候往往少不了多页面的切换,这就涉及到viewpager的使用,以前往往用Google自带的效果去实现,比较麻烦不说,后面做出来的效果还不如人意. 下面就利用CommonTabLayou ...

  10. [React] Extend styles with styled-components in React

    In this lesson, you will learn how to extend styles from one styled-component to another in a React ...