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 ...
随机推荐
- python中的函数的分类
函数的种类 传参的基本要求 默认参数 *args 关键字参数 **kwargs 普通函数 带参数 默认参数 def text(a,b=2) print("haha") print( ...
- 教你轻松在React Native中集成统计(umeng)的功能(最新版)
关于在react-native中快速集成umeng统计,网上的文章或者教程基本来自----贾鹏辉老师的文章http://www.devio.org/2017/09/03/React-Native-In ...
- Activiti数据表
--1:资源库流程规则表SELECT * FROM JEESITE.act_re_deployment --部署信息表SELECT * FROM JEESITE.act_re_model --流程设计 ...
- asp网页无法打开
环境:Window 2003.IIS6.Framework1.1 .VS2003 一个WebForm项目里面包含一些asp网页 运行后发现asp页面无法访问 提示:无法找到该页 解决方案: 1. [ ...
- Java学习关于集合框架的基础接口--Collection接口
集合框架(Collection Framework)是Java最强大的子系统之一,位于java.util 包中.集合框架是一个复杂的接口与和类层次,提供了管理对象组的最新技术.Java集合框架标准 ...
- jQuery+ajax城市联动
分享一下自己最近写的城市联动.技术使用ajax+jQuery实现. 首先请看前台的javascript代码. 以下是连个实现异步加载的方法. <script type="text/ja ...
- hihoCoder#1086 Browser Caching
原题地址 list+map可以轻松搞定,如果不借助STL实现起来还是挺麻烦的 代码: #include <iostream> #include <string> #includ ...
- 认识Linux文件系统的架构
本文主要研究一下storm的OpaquePartitionedTridentSpoutExecutor TridentTopology.newStream storm-core-1.2.2-sourc ...
- [POJ2352] Stars(树状数组)
传送门 先按照下标x排序,然后依次把y加入树状数组,边加入边统计即可. 注意下标re从零开始,需+1s ——代码 # include <iostream> # include <cs ...
- HDU 2629 Identity Card
简单题 给出身份证号 判断住址 和出生年月 熟练字符串的操作 主要是string::substr(s, l)//s:起始位置 l长度 #include <iostream> #includ ...