通过ant来打jar,war包

--北京。。

今天在研究ant,下面先贴出用ant的junit来实现对代码的编译并测试

先贴出测试项目的结构目录:

编译之前需要把项目所使用的jar包放在lib里面

1、使用ant实现junit  test测试

<?xml version="1.0"?>
<project name="testPoi" default="doc">

<!-- properies -->
<property name="src.dir" value="src" />
<property name="report.dir" value="report" />
<property name="classes.dir" value="classes" />
<property name="lib.dir" value="lib" />
<property name="dist.dir" value="dist" />
<property name="doc.dirA" value="doc"/>

<!-- 定义classpath -->
<path id="master-classpath">
<fileset file="${lib.dir}/*.jar" />
<pathelement path="${classes.dir}"/>
</path>

<!-- 初始化任务 -->
<target name="init">
</target>

<!-- 编译 -->
<target name="compile" depends="init" description="compile the source files">
<mkdir dir="${classes.dir}"/>
<javac srcdir="${src.dir}" destdir="${classes.dir}" target="1.6" includeantruntime="on">
<classpath refid="master-classpath"/>
</javac>
</target>

<!-- 测试 -->
<target name="test" depends="compile" description="run junit test">
<mkdir dir="${report.dir}"/>
<junit printsummary="on" haltonfailure="false"  failureproperty="tests.failed" showoutput="true">
<classpath refid="master-classpath" />
<formatter type="plain"/>
<batchtest todir="${report.dir}">
<fileset dir="${classes.dir}">
<include name="**/*Test.*"/>
</fileset>
</batchtest>
</junit>
<fail if="tests.failed">
***********************************************************
**** One or more tests failed! Check the output ... ****
***********************************************************
</fail>
</target>

<!-- 打包成jar -->
<target name="pack" depends="test" description="make .jar file">
<mkdir dir="${dist.dir}" />
<jar destfile="${dist.dir}/testPoi.jar" basedir="${classes.dir}">
<exclude name="**/*Test.*" />
<exclude name="**/Test*.*" />
</jar>
</target>

<!-- 输出api文档 -->
<target name="doc" depends="pack" description="create api doc">
<mkdir dir="${doc.dir}" />
<javadoc destdir="${doc.dir}"
author="true"
version="true"
use="true"
windowtitle="Test API">
<packageset dir="${src.dir}" defaultexcludes="yes">
<include name="example/**" />
</packageset>
<doctitle><![CDATA[<h1>Hello, test</h1>]]></doctitle>
<bottom><![CDATA[<i>All Rights Reserved.</i>]]></bottom>
<tag name="todo" scope="all" description="To do:" />
</javadoc>
</target>
</project>

2、ant将代码打成jar

贴出build.xml的配置

<project name="textPoi" default="deploy-textPoi" basedir=".">

	<target name="deploy-textPoi" depends="init,clean,get-lib,copymapper,compile,jar">
	</target>

	<description>
		deploy-testPoi build.xml
    </description>
	<property file="${basedir}\build.properties" />
	<property name="lib" location="lib" />
	<property name="src" location="src" />
	<property name="bin" location="bin" />
	<property name="runjar" location="runjar" />
	<!--<property name="conf" location="config" />-->
	<property name="resource" location="resource" />
	<property name="Lib-FDAS" value="../testPoi/lib" />

	<!--<property name="FXpayServiceBin" value="../FXpayServiceBin" />-->

	<path id="classpath">
		<fileset dir="${lib}">
			<include name="**/*.jar" />
		</fileset>
	</path>

	<target name="init">
		<tstamp />
	</target>

	<target name="clean" description="clean up">
		<delete dir="${bin}" />
		<delete dir="${runjar}" />
		<mkdir dir="${bin}" />
		<mkdir dir="${runjar}" />
	</target>

	<target name="get-lib" description="get java library">
		<copy todir="${runjar}/lib">
			<fileset dir="${lib}">
				<include name="*.*" />
			</fileset>
		</copy>
	</target>

	<target name="copymapper" description="copy mapper文件">
		<mkdir dir="${bin}/${mapper.path}" />
		<copy todir="${bin}/${mapper.path}">
			<fileset dir="${src}/${mapper.path}">
				<include name="**/*.xml" />
			</fileset>
		</copy>
	</target>

	<target name="compile" description="compile the source ">
		<javac srcdir="${src}" destdir="${bin}" encoding="UTF-8" debug="true" executable="${JAVA_HOME}/bin/javac" includeantruntime="false" source="1.6" target="1.6">
			<classpath refid="classpath" />
			<compilerarg value="-Xlint:unchecked -Xlint:deprecation" />
			<exclude name="**/*.svn" />
		</javac>
	</target>

	<target name="jar" description="jar">
		<pathconvert property="mf.classpath" pathsep=" ">
			<mapper>
				<chainedmapper>
					<flattenmapper />
					<globmapper from="*.jar" to="./lib/*.jar" />
				</chainedmapper>
			</mapper>
			<path refid="classpath" />
		</pathconvert>
		<jar destfile="${runjar}/${build.jar}" basedir="${bin}">
			<!--<fileset dir="${conf}" includes="*.*" />-->
			<!--<fileset dir="${resource}" includes="*.*" />-->
			<manifest>
				<attribute name="Main-class" value="./*" />
				<attribute name="Class-Path" value="${mf.classpath}" />
			</manifest>
		</jar>

	</target>

</project>

中间涉及到一个配置文件build.properties

mapper.path=equals
model.path=model
build.jar=testPoi-1.0.0.jar
#build.common.jar=hbservice-common-1.0.0.jar
common-src=${mapper.path}/** ${model.path}/**

3、使用ant来实现打war包(打war包的主要是对web工程进行打包,让war放在tomcat下直接能使用)

在生成war的过程中一直出现

这个原因待到快解决的时候终于想明白了,lib包里面一定要把项目所需要的jar拷进去,在编译的时候需要用到lib里面的jar来进行jar包依赖。

因为没有这个jar,所以一直出现这问题。

因为是web项目,现将项目的结构图贴上

下面贴出完整的build.xml

<?xml version="1.0" ?>
<project name="hbcall" default="war">

	<path id="compile.classpath">
		<fileset dir="WebRoot/WEB-INF/lib">
			<include name="*.jar"/>
		</fileset>
	</path>

	<target name="init">
		<mkdir dir="build/classes"/>
		<mkdir dir="dist" />
	</target>

	<!--<target name="compile" depends="init" >
		<javac destdir="build/classes" debug="true" srcdir="src">
			<classpath refid="compile.classpath"/>
		</javac>
	</target>-->
	<target name="copymapper" description="copy mapper文件">
			<mkdir dir="build/config" />
			<copy todir="build/config">
				<fileset dir="config">
					<include name="**/*.xml" />
				</fileset>
			</copy>
	</target>

	<target name="compile" depends="init" description="compile the source files">
	<javac srcdir="src" destdir="build/classes" target="1.6" includeantruntime="on">
	<classpath refid="compile.classpath"/>
	</javac>
	</target>

	<target name="war" depends="compile">
		<war destfile="dist/AntExample.war" webxml="WebRoot/WEB-INF/web.xml">
			<fileset dir="WebRoot"/>
			<lib dir="WebRoot/WEB-INF/lib"/>
			<classes dir="build/classes"/>
		</war>
	</target>

	<!--<target name="clean">
		<delete dir="dist" />
		<delete dir="build" />
	</target>-->

</project>

即能成功生成出war包,放在tomcat的webapps下面,重启tomcat能够正确的编译出项目的整个编译代码。

美中不足的,build.xml没有配置copy配置文件,需要手动将配置文件给copy到相应位置。

ok~整个ant基本情况就是这样。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-12 13:11:19

通过ant来打jar,war包的相关文章

Maven配置jar(war)包自动打包上传Maven服务器的配置

创建jar(war)包工程 创建一个maven工程 在工程中穿件一个测试类 配置pom.xml <distributionManagement> <repository> <id>nexus-releases</id> <url>http://127.0.0.1:8081/nexus/content/repositories/releases/</url> </repository> <snapshotReposit

Maven项目打包成war包并启动war包运行

1 项目打包 1.1 右键点击所需要打包的项目,点击如图所示 Maven clean,这里 Maven 会清除掉之前对这个项目所有的打包信息. 1.2进行完 Maven clean 操作后,在eclipse的控制台会出现以下的信息. 1.3然后我们重新右键所需打包的项目,点击如图所示 maven build... 1.4 在弹出的界面中,进行如下图的操作. “Goals”输入框中输入 -X package,同时勾选下方 Update Snapshots 和 Skip Tests 选项框 1.5

利用Ant脚本生成war包的详细步骤

使用ant脚本前的准备 1.下载一个ant安装包.如:apache-ant-1.8.4-bin.zip.解压到E盘. 2.配置环境变量.新增ANT_HOME:E:\apache-ant-1.8.4:PATH增加:E:\apache-ant-1.8.4\bin. 3.检查ant是否配置完成.运行->cmd输入:ant -version.查看是否打印ant的版本号. 打包的实质 生成jar包的实质 1.编译工程src文件夹下的java文件,生成相应的class文件. 2.将所有的class文件集合成

关于war包 jar包 ear包 及打包方法

关于war包 jar包 ear包 及打包方法 war包:是做好一个web应用后,通常是网站打成包部署到容器中 jar包:通常是开发的时候要引用的通用类,打成包便于存放管理. ear包:企业级应用 通常是EJB打成ear包 各种包的打法: 转: 兄弟,对java着迷吗,或者是为了自己的生计,不论怎样都欢迎你进入精彩java世界,welcome!可能你刚刚对每个人说:Hello World!也或者……ok!这已经足够了.那就让我们开始吧,开始这个魔幻世界的旅程: jar文件听说过吗,没有?或者陌生!

Apache Ant学习总结(二):使用Ant自动编译JavaWeb项目并打成war包发布到Tomcat中

前言:如题所示,有时我们可能经常需要把JavaWeb项目进行编译,然后打包成war包并发布到Tomacat中进行测试.如果每次都人工进行操作的话,无疑是很麻烦的.这时我们可以通过编写一个自动化的Ant脚本,每次需要发布项目时只需要点击一下就可以完成了,非常方便 测试项目的项目结构如下: Ant脚本build_war.xml: <?xml version="1.0" encoding="UTF-8"?> <project name="ant

ant 打包war包

项目结构 <?xml version="1.0" encoding="UTF-8" ?> <project name="xxxx" default="build" basedir="."> <!--<property name="tomcat.lib" value="/opt/apache-tomcat-8.0.45/lib" /&

如何打war包和jar包

1.jar包的导出 答:右键项目,export—jarfile  生成. 2.war包的导入 答:方法一:右键项目,export—WAR file 生成. 方法二:[ant文件]—[deploy-bea.xml]—[修改 <property name="global.lib.dir">里的tomcat地址,和生产后的文件夹位置定义]—[run as]—[Ant build]—在指定文件夹下找到war包即可.

java打War包,war包和jar包的区别

以最终客户的角度来看,JAR文件就是一种封装,他们不需要知道jar文件中有多少个.class文件,每个文件中的功能与作用,同样可以得到他们希望的结果.除jar以外对于J2EE来说还有war和ear.区别见下表:   JAR WAR EAR 英文 Java Archive file Web Archive file Enterprise Archive file 包含内容 class.properties文件,是文件封装的最小单元:包含Java类的普通库.资源(resources).辅助文件(au

java打包jar,war,ear包的作用、区别

java的打包jar,war,ear包的作用,区别,打包方式. a) 作用与区别 i.    jar: 通常是开发时要引用通用(JAVA)类,打成包便于存放管理 ii.   war: 是做好一个(web)应用后,通常是网站,打成包部署到容器中 iii.  ear: 企业级应用,实际上EAR包中包含WAR包和几个企业级项目的配置文件而已,一般服务器选择WebSphere等,都会使用EAR包.通常是EJB打成ear包. b) 打包方式 i.       所有的包都是用jar打的,只不过目标文件的扩展