• 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>
  • 相关阅读:
    scrapy框架
    003-更改pip的源让下载安装更加快捷
    日志,序列反序列和正则表达式
    菜鸟的IT生活4
    IT菜鸟的3(for循环+分支语句)
    IT菜鸟的第2天(输入输出,数据类型,运算符的使用)
    IT菜鸟的第一天
    第二课笔记
    第一节课预习笔记
    第一节课作业
  • 原文地址:https://www.cnblogs.com/hwlsniper/p/4100156.html
Copyright © 2020-2023  润新知