java web之Ant的使用

以构建war包为例,如下:

<?xml version="1.0" encoding="UTF-8"?>
<!-- 
1、定义属性baseDir为根路径(此处该属性的值为javaWebExample),供后续编译或者打成war包使用,使用的是当前Ant文件的路径,例如当前文件的路径为javaWebExample/build.xml 
2、设置默认Ant文件的默认执行任务为war(如果该任务名称未定义则会报错)
-->
<project basedir="." default="war" name="javaWebExample">
	<!-- 声明属性供后续使用,开始。。。。 -->
	<!-- 打成的war包的存放路径,该文件直接将war包打到tomcat的webapps下,方便直接启动tomcat使用 -->
	<property name="warDist" value="D:/apache-tomcat-8.0.38/webapps"></property>
	<!-- 定义web内容路径 -->
	<property name="webContentUrl" value="${basedir}/WebContent"></property>
	<!-- 定义WEB-INF的路径 -->
	<property name="webInfUrl" value="${basedir}/WebContent/WEB-INF"></property>
	<!-- 声明属性供后续使用,结束。。。。 -->
		
	<!-- 输出根路径信息 -->
	<echo>${basedir}</echo>
		
	<!-- 定义工程额外添加的jar包路径,一般web工程中第三方包放置在WEB-INF/lib下 -->
	<path id="build.classpath">
		<fileset dir="${webInfUrl}/lib"><include name="**/*.jar"/></fileset>
	</path>
			
    <!-- 定义清空存放class文件的文件夹任务:清空原有的class文件,创建新的build目录用于存放编译之后的class文件 -->  
    <target name="clean">  
        <delete dir="${basedir}/build" />  
        <mkdir dir="${basedir}/build" />  
    </target>  
        	
	<!--定义编译任务:编译任务并且依赖清文件夹任务(clean),创建最新的文件夹用于存放编译后的class文件-->
    <target name="compile" depends="clean" description="Compilation target">
    	<!-- 执行编译:
    	1、如果需要远程调试,则在编译时需要加上debug="true"设置,将调试信息编入代码中,用于调试,
    	否则eclipse中调试时出现uninstal brekpoint错误导致无法调试
    	2、设置要编译的源文件(java)的路径,即设置srcDir属性
    	3、设置存放编译之后的class文件的目录,即设置destDir属性
    	4、设置编译依赖的classpath路径,依赖于之前定义的类路径属性buid.classpath
    	 -->
    	<javac debug="true" destdir="${basedir}/build" srcdir="${basedir}/src" includeantruntime="true">
    		   <classpath refid="build.classpath"></classpath>
    	</javac>
    </target>
	
	<!--定义达成war包的任务:将web应用工程javaWebExample打成war包
		1、定义达成war包的名称,即设置name属性为war(name="war")
		2、定义该任务依赖于编译任务,即设置depends属性(depends="compile")
		3、添加任务的备注(非必须设置),即设置description属性
		4、
	-->
    <target name="war" depends="compile" description="将web app打成war包发布">
       <war destfile="${warDist}/javaWebExample.war" webxml="${webInfUrl}/web.xml">
       		<!-- 将非jar和非class文件拷贝到WebContent路径下 -->
       		<fileset dir="${basedir}/WebContent">
       			<include name="**/**.*" />  
                <exclude name="**/*.jar"/>  
                <exclude name="**/*.class"/> 
       		</fileset >
       		<!-- 将jar文件和对应的class文件拷贝到对应的路径下 -->
       		<lib dir="${basedir}/WebContent/WEB-INF/lib" /> 
       		<classes dir="${basedir}/build" />  
       </war>
    </target>
</project>

 其他用法的示例补充

<?xml version="1.0" encoding="UTF-8"?>
<project default="main" basedir="." name="forYou">
	<property file="${basedir}/src/myProperty.properties"></property>
	<property name="warDist" value="D:/apache-tomcat-8.0.38/webapps"></property>
	<property name="webContentUrl" value="${basedir}/WebContent"></property>
	<property name="webInfUrl" value="${basedir}/WebContent/WEB-INF"></property>
	<fileset id="sourcefiles" includes="**/*.java" dir="src"></fileset>
	<echo>sourcefiles = ${toString:sourcefiles}   wardist = ${toString:warDist}</echo>
	
	<!--默认执行任务 -->
    <target name="main" depends="compile, compress,use-file,printMessage,createFile" description="Main target">
       <echo>Building the .jar file.</echo>
    </target>
	
	<!--判断文件是否存在 -->
	<target name="use-file" depends="check-user-file" if="${file.exists}">
	   <echo>judging by if is successful</echo>
	</target>
	<target name="check-user-file" unless="file.exists">
	    <available property="file.exists" file="${basedir}/src/yaya/Test.java"></available>
	</target>
	<!--判断文件是否存在 -->
	
	<!--读取属性文件信息-->
	<target name="printMessage" unless="${welcom.info}"><echo>welcome to here!</echo></target>
	<!--读取属性文件信息-->
	
	<!--创建文件-->
	<target name="createFile">
		<mkdir dir="${basedir}/src/app"/>
	</target>
	<!--创建文件-->
	
	<!--如果文件存在则删除文件-->
	<target name="check-del-file">
	   <available property="delFile.exists" file = "${basedir}/src/app/example"></available>
	</target>
	<target name="deleteFile" if="${delFile.exists}" depends="check-del-file">
	    <delete dir="${basedir}/src/app"></delete>
		<delete dir="${basedir}/src/app" includes="**/*.java"></delete>
		<delete dir="${basedir}/src/app" includes="**/*.class"></delete>
		<!-- 将文件输出到给定的文件中 -->
		<echo append="true" file="${basedir}/src/myProperty.properties">delete file successful!</echo>
	</target>
	<!--如果文件存在则删除文件-->
	
	<!--文件以及文件夹的拷贝-->
		<target name="copy">
			<copy todir="${basedir}/src/app">
				<!--拷贝文件集-->
				<fileset dir="${basedir}/src/yaya" includes="**/*.java"></fileset>
				<filterset><filter token="DATE" value="${TODAY}"/></filterset>
			</copy>
			<!--copydir src="${basedir}/src/yaya" dest="${basedir}/src/app"></copydir-->
		</target>
	<!--文件以及文件夹的拷贝-->
	
	<!--编译-->
    <target name="compile" description="Compilation target">
    	<javac destdir="${basedir}/src/app" includeantruntime="true">
    		   <src path="${basedir}/src/yaya"></src>
    		   <!--src path="${basedir}/src/yaya/anotation"></src-->
    		   <!--include name="**/*Test.java"/-->
	    	   <!--fileset dir="${basedir}/src/yaya" id="sourcefiles">
	               <include name="**/Test*.java"/>
	           </fileset-->
    	</javac>
    </target>
	<!--编译-->
	
	<!--打jar包-->
    <target name="compress" depends="compile" description="Compression target">
    	<!--将编译之后的class文件打成jar 到src/app目录下-->
       <jar destfile="${basedir}/src/app/app.jar" basedir="${basedir}/src/yaya" includes="**/*.class" />
        <!--将未编译的java文件打成jar 到src目录下-->
       <jar destfile="${basedir}/src/app1.jar">
          <fileset dir="${basedir}/src/yaya">
               <include name="**/*.java"/>
          </fileset>
       </jar>
    </target>
	<!--打jar包-->

</project>

 如果不正确之处,请指正。

猜你喜欢

转载自han916701843.iteye.com/blog/2404308