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 装饰器模拟京东登陆
要求: 1.三个页面:主页面(home).书店(book).金融页面(finance)2.有两种登陆方式:主页面和书店页面使用京东账户登陆,金融页面使用微信账户登录2.输入:1 ,进入主页面,以此类推 ...
- 【01】魔芋使用MDN的一点点经验
[01]魔芋使用MDN的一点点经验 1,MDN地址: https://developer.mozilla.org/en-US/(下图) 2,建议看英文原文.因为中文翻译落后,并且有些翻译并 ...
- 大数据学习——sqoop入门
下载地址 https://pan.baidu.com/s/1qWDl29L9I_KVU54c0ioNfQ fvfh 3.1 概述 sqoop是apache旗下一款“Hadoop和关系数据库服务器之间传 ...
- 大数据学习——安装zooleeper
1 alt+p,上传zookeeper-3.4.5.tar.gz 2 解压安装包 ,安装在apps目录下 tar -zxvf zookeeper-3.4.5.tar.gz -C apps 3 删除zo ...
- Jmeter用于接口测试中,关联如何实现
Jmeter用于接口测试时,后一个接口经常需要用到前一次接口返回的结果,应该如何获取前一次请求的结果值,应用于后一个接口呢,拿一个登录的例子来说明如何获取. 1.打开jmeter, 使用的3.3的版本 ...
- zoj 2109 FatMouse' Trade
FatMouse' Trade Time Limit: 2 Seconds Memory Limit: 65536 KB FatMouse prepared M pounds of cat ...
- kubernetes集群新增node
kubernetes集群要新增node,首先要配置ssh免密登陆 root@ht:/etc/ansible# ssh-copy-id 172.18.196.6 /usr/bin/ssh-copy-id ...
- 使用cURL和用户名和密码?
问题描述 我想访问一个需要用户名/密码的URL.我想尝试用 curl 来访问它.现在我正在做一些事情: curl http://api.somesite.com/test/blah?something ...
- Mongodb主、副、仲裁节点集群安装
mongodb 的集群方式主要分为三种Replica Set / Sharding / Master-Slaver ,这里只说明最简单的集群搭建方式(生产环境),如果有多个节点可以此类推或者查看官方文 ...
- 快速让你明白Objective-C的语法(和Java、C++对比)
很多想开发iOS,或者正在开发iOS的程序员以前都做过Java或者C++,当第一次看到Objective-C的代码时都会头疼,Objective-C的代码在语法上和Java, C++有着很大的区别,有 ...