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>
  • 相关阅读:
    mysql修改数据表名
    HDU 5742 It's All In The Mind (贪心)
    HDU 5752 Sqrt Bo (数论)
    HDU 5753 Permutation Bo (推导 or 打表找规律)
    HDU 5762 Teacher Bo (暴力)
    HDU 5754 Life Winner Bo (博弈)
    CodeForces 455C Civilization (并查集+树的直径)
    CodeForces 455B A Lot of Games (博弈论)
    CodeForces 455A Boredom (DP)
    HDU 4861 Couple doubi (数论 or 打表找规律)
  • 原文地址:https://www.cnblogs.com/hwlsniper/p/4100156.html
Copyright © 2011-2022 走看看