• 浅析Java中Ant的使用


    

    Ant是一种基于Java的打包工具,Ant脚本采用XML格式编写,默认的文件名为build.xml

    Ant中常用的节点元素

    Project

    Project是项目工程的顶级节点,一个build.xml文件可以包含多个project元素节点。

    Project主要属性包括:

    Nameproject节点名称

    Default:默认执行的target元素节点名称

    Basedir:项目根节点,一般为“.”。

    Property

      Property用于定义公共常量,包含于project元素内部,以键值对形式出现。

    Property主要属性包括:

      Name:常量名称

      Value:常量值

      Location:作用同Value,用于定义文件路径值,可以统一处理不同系统间路径符不一致问题。

      取值方法:${name}

    Target

      Target用于定义任务,包含于project元素内部,与property同级。同一个project下可包含多个target节点。

      Target主要属性:

      Name:节点名称

      Depends:可选,指定target的依赖关系。

    Mkdir

      Mkdir用于创建路径

      Mkdir主要属性

      Dir:将要被创建的路径

    Delete用于删除路径,属性同上。

    Copy

      Copy用于复制文件

      Copy主要属性:

      File:源文件

      Todir:复制的目标路径

      Tofile:复制的目标文件

      子节点:FileSet

    Move用于移动文件,主要属性同上。

    Fileset

      Fileset文件集合,配合includeexclude使用。

      Fileset主要属性:

      Dir:指定源文件路径

      

    Include:用于描述fileset包含哪些文件

    Exclude:用于描述fileset不包含哪些文件

    Javac

      Javac用于编译Java源文件。

      Javac主要属性:

      Srcdir:标明源文件位置

      Destdir:编译后文件存放位置

      Encoding:指定编码格式

      Classpath:指定lib位置

      Debug:是否输出调试信息

    Javadoc

      

    Jar

      Jar用于将指定文件或文件夹下内容进行打包

      Jar主要属性

      Jarfile:指定生产jar文件路径及名称

      Basedir:指定源文件位置

      Jar子节点manifest

      Manifest用于指定最后生成jar包中manifest.mf文件中内容

      常用属性:

      <property name=”Main-Class”value=xxxx.xxx.xxx.Xxxx/>

      用于指定jar包的主方法

    下面提供一个简单,但基本功能较全的build.xml文档。

    <?xml version="1.0" encoding="utf-8"?>
    <project name="AntProject" basedir="." default="zip">
    
    	<!-- 定义时间戳 -->
    	<tstamp></tstamp>
    	
    	<property name="classes" location="./build/classes"/>
    	<property name="jarpath" location="./build/jar"/>
    	<property name="warpath" location="./build/war"/>
    	<property name="zippath" location="./build/zip"/>
    	<property name="javadoc" location="./build/javadoc"/>
    	<property name="windowtitile" value="Ant Project Title"/>
    	<property name="jarfile" location="${jarpath}/AntProject_${DSTAMP}.jar"/>
    	<property name="warfile" location="${warpath}/AntProject_${DSTAMP}.war"/>
    	<property name="zipfile" location="${zippath}/AntProject_${DSTAMP}.zip"/>
    
    	<target name="init">
    		<mkdir dir="${classes}"/>
    		<mkdir dir="${jarpath}"/>
    		<mkdir dir="${warpath}"/>
    		<mkdir dir="${zippath}"/>
    		<mkdir dir="${javadoc}"/>
    	</target>
    	
    	<!--
    	如果有额外的jar包,可以再这里指定,再下面的classpath处进行引用
    	<path id="classpath">
    		<pathelement path="your jar jar file path"/>
    	</path>
    	-->
    	
    	<!-- 编译java源文件 -->
    	<target name="compile" depends="init">
    		<javac srcdir="./src" destdir="${classes}" includeantruntime="false">
    			<!--
    				<classpath refid="classpath"/>
    			-->
    		</javac>
    	</target>
    	
    	<!-- 生成javadoc文档 -->
    	<target name="javadoc" depends="init">
    		<javadoc sourcepath="./src" destdir="${javadoc}" encoding="utf-8" charset="gb2312" windowtitle="${windowtitile}">
    			<!--
    				<classpath refid="classpath"/>
    			-->
    		</javadoc>
    	</target>
    	
    	<!-- 打成jar包 -->
    	<target name="jar" depends="compile">
    		<jar destfile="${jarfile}" basedir="${classes}">
    			<!-- Manifest.mf内容 设置主方法,生成jar包可以直接双击运行 -->
    			<manifest>
    				<attribute name="Main-Class" value="com.ant.MainClass"/>
    			</manifest>
    		</jar>
    	</target>
    	
    	<!-- 打成war包     这里不是一个web工程,找不到WEB-INFO/web.xml文件,添加属性needxmlfile=false即可 -->
    	<target name="war" depends="compile">
    		<war destfile="${warfile}" basedir="${classes}" needxmlfile="false"></war>
    	</target>
    	
    	<!-- 将整个工程打成一个zip压缩包 -->
    	<target name="zip" depends="javadoc,jar,war">
    		<zip destfile="${zipfile}" basedir="."></zip>
    	</target>
    </project>

    项目结构:

    build之前项目结构

    MainClass.java内容

    package com.ant;
    
    import javax.swing.JFrame;
    
    /**
     * 
     * 用于测试Ant的使用
     * 
     * @version 1.0
     * @author Tony.Sun
     * 
     */
    public class MainClass {
    
    	/**
    	 * 构造函数,初始化窗口
    	 * 
    	 * @see MainClass#instanceFrame()
    	 */
    	public MainClass(){
    		instanceFrame();
    	}
    	
    	/**
    	 * 定义一个500*400、title为“MainFrame”的窗口
    	 */
    	private void instanceFrame()
    	{
    		JFrame jf = new JFrame("MainFrame");
    		jf.setSize(500, 400);
    		jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		jf.setVisible(true);
    	}
    
    	/**
    	 * main方法
    	 * @param args
    	 */
    	public static void main(String[] args) {
    		
    		new MainClass();
    		
    	}
    }
    


    使用Ant进行build,输出如下

    Buildfile: C:Users	ony.sunworkspaceAntProjectuild.xml
    init:
        [mkdir] Created dir: C:Users	ony.sunworkspaceAntProjectuildclasses
        [mkdir] Created dir: C:Users	ony.sunworkspaceAntProjectuildjar
        [mkdir] Created dir: C:Users	ony.sunworkspaceAntProjectuildwar
        [mkdir] Created dir: C:Users	ony.sunworkspaceAntProjectuildzip
        [mkdir] Created dir: C:Users	ony.sunworkspaceAntProjectuildjavadoc
    javadoc:
      [javadoc] Generating Javadoc
      [javadoc] Javadoc execution
      [javadoc] Loading source files for package com.ant...
      [javadoc] Constructing Javadoc information...
      [javadoc] Standard Doclet version 1.7.0_25
      [javadoc] Building tree for all the packages and classes...
      [javadoc] Building index for all the packages and classes...
      [javadoc] Building index for all classes...
    compile:
        [javac] Compiling 1 source file to C:Users	ony.sunworkspaceAntProjectuildclasses
    jar:
          [jar] Building jar: C:Users	ony.sunworkspaceAntProjectuildjarAntProject_20140529.jar
    war:
          [war] Building war: C:Users	ony.sunworkspaceAntProjectuildwarAntProject_20140529.war
    zip:
          [zip] Building zip: C:Users	ony.sunworkspaceAntProjectuildzipAntProject_20140529.zip
    BUILD SUCCESSFUL
    Total time: 2 seconds
    


    build之后目录结构

    build之后目录结构


    
  • 相关阅读:
    最新Linux系统Ubuntu16.04搭建HUSTOJ(LAMP环境)
    deepin下codeblocks更改调试终端
    UVA
    POJ3436 ACM Computer Factory【EK算法】
    HDU4738 Caocao's Bridges【强连通】
    HDU4685 Prince and Princess【强连通】
    HDU4635 Strongly connected【强连通】
    POJ3177 Redundant Paths【双连通分量】
    HDU1233 还是畅通工程【最小生成树】
    3D正方体
  • 原文地址:https://www.cnblogs.com/ssp2110/p/3797668.html
Copyright © 2020-2023  润新知