zoukankan      html  css  js  c++  java
  • Ant学习---第三节:使用Ant实现一个最小的项目编译

    1、编译 .java 文件,生成 .jar 包,代码如下:

    <?xml version="1.0" encoding="UTF-8"?>
    <project  default="jar">
        <!-- fileset数据类型定义了一组文件 dir表示fileset 的基目录 -->
        <fileset id="src.path" dir="src">
            <!-- include 是用逗号分隔的,需要包含的文件模式列表 -->
            <include name="**/*.*"/>
            <!-- excludes 是用逗号分隔的需要派出的文件模式列表 -->
            <exclude name="**/Test*"/>
        </fileset>
        <target name="init">
            <delete dir="build"/>
            <!-- mkdir标签用于创建一个目录,它有一个属性dir用来指定所创建的目录名 -->
            <mkdir dir="build"/>
            <mkdir dir="build/src"/>
            <mkdir dir="build/classes"/>
            <mkdir dir="build/dist"/>
        </target>
        <!-- depends表示依赖的目标 -->
        <target name="copySrc" depends="init">
            <!-- todir 表示目标目录 -->
            <copy todir="build/src">
                <!-- 通过 refid 可以引用外部标签 -->
                <fileset refid="src.path"></fileset>
            </copy>
        </target>
        
        <target name="compile" depends="copySrc">
            <!-- 编译 -->
            <javac destdir="build/classes" srcdir="src"/>
        </target>
        
        <target name="jar" depends="compile">
            <!-- 打包 -->
            <!-- destfile表示JAR文件名 basedir表示被归档的文件名 -->
            <jar destfile="build/classes/hello.jar" basedir="build/src"/>
        </target>
    </project>

    2、在生成的 .jar 文件中的 MANIFEST.MF 文件中添加属性,代码如下:

    <?xml version="1.0" encoding="UTF-8"?>
    <project  default="jar">
        <!-- fileset数据类型定义了一组文件 dir表示fileset 的基目录 -->
        <fileset id="src.path" dir="src">
            <!-- include 是用逗号分隔的,需要包含的文件模式列表 -->
            <include name="**/*.*"/>
            <!-- excludes 是用逗号分隔的需要派出的文件模式列表 -->
            <exclude name="**/Test*"/>
        </fileset>
        <target name="init">
            <delete dir="build"/>
            <!-- mkdir标签用于创建一个目录,它有一个属性dir用来指定所创建的目录名 -->
            <mkdir dir="build"/>
            <mkdir dir="build/src"/>
            <mkdir dir="build/classes"/>
            <mkdir dir="build/dist"/>
        </target>
        <!-- depends表示依赖的目标 -->
        <target name="copySrc" depends="init">
            <!-- todir 表示目标目录 -->
            <copy todir="build/src">
                <!-- 通过 refid 可以引用外部标签 -->
                <fileset refid="src.path"></fileset>
            </copy>
        </target>
        
        <target name="compile" depends="copySrc">
            <!-- 编译 -->
            <javac destdir="build/classes" srcdir="src"/>
        </target>
        
        <target name="jar" depends="compile">
            <!-- 打包 -->
            <!-- destfile表示JAR文件名 basedir表示被归档的文件名 -->
            <jar destfile="build/classes/hello.jar" basedir="build/src">
                <!-- manifest标签往META-INF/MANIFEST.MF文件中添加属性 -->
                <manifest>
                    <!-- 如果 jar 可以运行,需要在META-INF/MANIFEST.MF文件中添加Mina-class -->
                    <attribute name="Mina-class" value="com.learn.ant.HelloWorld"></attribute>
                    <attribute name="BuildBy" value="hwl"></attribute>
                </manifest>
            </jar>
        </target>
    </project>

    3、执行 .jar 文件,代码如下:

    <?xml version="1.0" encoding="UTF-8"?>
    <project  default="execute">
        <!-- fileset数据类型定义了一组文件 dir表示fileset 的基目录 -->
        <fileset id="src.path" dir="src">
            <!-- include 是用逗号分隔的,需要包含的文件模式列表 -->
            <include name="**/*.*"/>
            <!-- excludes 是用逗号分隔的需要派出的文件模式列表 -->
            <exclude name="**/Test*"/>
        </fileset>
        <target name="init">
            <delete dir="build"/>
            <!-- mkdir标签用于创建一个目录,它有一个属性dir用来指定所创建的目录名 -->
            <mkdir dir="build"/>
            <mkdir dir="build/src"/>
            <mkdir dir="build/classes"/>
            <mkdir dir="build/dist"/>
        </target>
        <!-- depends表示依赖的目标 -->
        <target name="copySrc" depends="init">
            <!-- todir 表示目标目录 -->
            <copy todir="build/src">
                <!-- 通过 refid 可以引用外部标签 -->
                <fileset refid="src.path"></fileset>
            </copy>
        </target>
        
        <target name="compile" depends="copySrc">
            <!-- 编译 -->
            <javac destdir="build/classes" srcdir="src">
                <compilerarg line="-encoding UTF-8"/>
            </javac>
        </target>
        
        <target name="jar" depends="compile">
            <!-- 打包 -->
            <!-- destfile表示JAR文件名 basedir表示被归档的文件名 -->
            <jar destfile="build/dist/hello.jar" basedir="build/classes">
                <!-- manifest标签往META-INF/MANIFEST.MF文件中添加属性 -->
                <manifest>
                    <!-- 如果 jar 可以运行,需要在META-INF/MANIFEST.MF文件中添加Mina-class -->
                    <attribute name="Main-class" value="com.learn.ant.HelloWorld"></attribute>
                    <attribute name="BuildBy" value="hwl"></attribute>
                </manifest>
            </jar>
        </target>
        
        <target name="execute" depends="jar">
            <!-- 编译 -->
            <echo>基于类路径的classname来完成执行</echo>
            <java classname="com.learn.ant.HelloWorld" classpath="build/classes">
                <!-- 参数 -->
                <arg value="张三"/>
                <arg value="李四"/>
                <arg value="王五"/>
            </java>
            
            <echo>基于jar文件完成执行</echo>
            <!-- fork="true" 表示基于jdk的环境类执行 -->
            <java jar="build/dist/hello.jar" fork="true">
                <!-- 参数 -->
                <arg value="张三"/>
                <arg value="李四"/>
                <arg value="王五"/>
            </java>
        </target>
    </project>
  • 相关阅读:
    HDU 3572 Task Schedule(拆点+最大流dinic)
    POJ 1236 Network of Schools(Tarjan缩点)
    HDU 3605 Escape(状压+最大流)
    HDU 1166 敌兵布阵(分块)
    Leetcode 223 Rectangle Area
    Leetcode 219 Contains Duplicate II STL
    Leetcode 36 Valid Sudoku
    Leetcode 88 Merge Sorted Array STL
    Leetcode 160 Intersection of Two Linked Lists 单向链表
    Leetcode 111 Minimum Depth of Binary Tree 二叉树
  • 原文地址:https://www.cnblogs.com/hwlsniper/p/4100156.html
Copyright © 2011-2022 走看看