java早期项目管理工具ant的使用打jar包与打war包

  • Post author:
  • Post category:java


ant是一个早期的项目管理工具,是使用java语言编写的一个工具,它的运行需要一个xml文件,而这个文件,在java项目中我们一般把它命名为build.xml,就像make命令需要的文件我们一般把它命名为MakeFile一样。ant可以用来编译,测试,部署你的java项目,但是我一般用它来打包,所谓打包,就是把项目打成jar包或者war包,其他的倒是很少用,不过,在工作中,ant也就在打包方面才可能使用到。下面的build.xml用于把项目打成jar包:

<?xml version="1.0" encoding="UTF-8"?>   
<project  default="jar" name="ftzmisBatch" basedir=".">

	<property name="srcdir" location="src"></property>
	<property name="libdir" location="lib"></property>
	<property name="build.dir" location="build"></property>
	<property name="build.classes" location="${build.dir}/classes"></property>
	<property name="build.dist" location="${build.dir}/dist"></property>
	<property environment="env"></property>
	<path id="libpath">
			<fileset dir="${libdir}" includes="*.jar"></fileset>
	</path>
	
	
	
	<target name="clean">
	  <delete dir="${build.dir}"/>
	</target>
	
	<target name="init" depends="clean">
		<mkdir dir="${build.dir}"/>
		<mkdir dir="${build.classes}"/>
		<mkdir dir="${build.dist}"/>
	</target>
	
	<target name="prepare" depends="init">
		<copy  todir="${build.classes}">
			<fileset  dir="${srcdir}" >
				  <include name="**/*.xml"/>
				  <include name="**/*.properties"/>
			</fileset>
		</copy>
	</target>
	
	<target name="compile" depends="prepare" >
		<javac srcdir="${srcdir}" destdir="${build.classes}" classpathref="libpath" includeantruntime="false">
		</javac>
	</target>
	
	<target name="unzipjars" depends="compile">
			<unzip  dest="${build.classes}" overwrite="false" >  
				<fileset dir="${libdir}">
					<exclude name="spring-beans-3.1.2.RELEASE.jar"/>
				</fileset>
				<patternset>
					<exclude name="META-INF/**/*"/>
				</patternset>
		    </unzip>
		   <unzip  dest="${build.classes}" src="${libdir}/spring-beans-3.1.2.RELEASE.jar" overwrite="false"></unzip>
	</target>
	
	<target name="jar" depends="unzipjars">
		<jar destfile="${build.dist}/${ant.project.name}.jar"   basedir="${build.classes}">
			<manifest>
				<attribute name="Main-Class" value="com.synesoft.antimoney.batch.FctAccBalCDBatch"/>
				<attribute name="Build-By" value="${env.USERNAME}"/>
				<attribute name="Class-Path" value="."/>
			</manifest>
		</jar>
	</target>
	
</project>

使用的时候右击build.xml,run as就可以了,如下图:

image.png

释疑:

其实一开始看到这个build.xml文件,也是一头雾水,这是他妹的哪跟哪啊,一点也理不出头绪来,还好,都过来了,我也不能很确切的记得当初的迷茫点在哪里了,在这里,我就找几个还能记得的地方说说吧。

project:default属性用于指定默认执行的目标(target),在eclipse的run as里面你选择”ant build…”也可以指定只运行某个target目标,但是运行a目标,就意味着a目标所以的依赖项都会被依次执行,这点跟maven的生命周期有点像。basedir=”.”,表示下面所有的路径的基准点都是build.xml所在目录。

target的名字name是你自己随便起的,并没有强制你一定要叫compile,init,随便叫,只是易于理解罢了。

前边说了使用ant编写build.xml文件来打包java项目为jar包,并简要介绍了ant是个什么东西,以及编写好build.xml文件之后又该如何运行它。这次教程呢,跟上次也差不了多少,只是本次给出的案例是打包war包的,供参考:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<project  default="createwar" name="surveypark">
	
	<property name="base.dir" value="${basedir}"></property>
	 <property name="debug" value="on" />
	 <property name="debug.level" value="lines,vars,source" />
	<property environment="envir"></property>
	
	<target name="clean">
		<echo >${envir.TOMCAT_HOME}</echo>
	  <delete dir="${base.dir}/build"/>
	</target>
	
	<target name="init" depends="clean">
		<mkdir dir="${base.dir}/build/dist"/>
		<mkdir dir="${base.dir}/build/web"/>
		<mkdir dir="${base.dir}/build/web/WEB-INF/classes"/>
	</target>
	
	
	<target name="compile" depends="init" >
		<javac srcdir="src" destdir="${base.dir}/build/web/WEB-INF/classes" debug="${debug}" 
		debuglevel="${debug.level}">
			<classpath refid="alljars" />
		</javac>
	</target>
	<!--执行java类
	<target name="execute" depends="compile" >
		<java classpath="." classname="hello"></java>
	</target>
	-->
	
	<path id="alljars">
		<path refid="libjars"></path>
		<path refid="tomcatjars"></path>
	</path>
	<path id="libjars">
	    <fileset dir="${base.dir}/web/WEB-INF/lib" includes="*.jar"></fileset>
	</path>
	<path id="tomcatjars" description="加入tomcat的jar包,应该动态获取tomcat的路径,不知道怎么做">
		<fileset dir="../../Program Files/apache-tomcat-6.0.41/lib" includes="*.jar"></fileset>
	</path>
	
	<target name="prepare" depends="compile">
		<copy id="copyweb" todir="${base.dir}/build/web">
				<fileset dir="${base.dir}/web">
				  <exclude name="upload/**"/>
				  <exclude name="WEB-INF/classes/**"/>
				</fileset>
			</copy>
		<copy id="copyconfig" todir="${base.dir}/build/web/WEB-INF/classes">
			<fileset dir="${base.dir}/config">
			   <include name="**.*"/>
			</fileset>
		</copy>
	</target>
	
	<target name="createwar" depends="prepare">
		<war webxml="${base.dir}/build/web/WEB-INF/web.xml"  warfile="${base.dir}/build/dist/surveypark.war">
			<classes dir="${base.dir}/build/web/WEB-INF/classes"></classes>
			<lib dir="${base.dir}/build/web/WEB-INF/lib"></lib>
			<fileset dir="${base.dir}/build/web">
				<exclude name="${base.dir}/build/web/WEB-INF/classes/cn/**"/>
				<exclude name="${base.dir}/build/web/WEB-INF/classes/org/**"/>
				<exclude name="${base.dir}/build/web/WEB-INF/lib/**"/>
				<exclude name="${base.dir}/build/web/WEB-INF/web.xml"/>
			</fileset>
		</war>
	</target>
</project>



版权声明:本文为xiaozhuangyumaotao原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。