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>
  • 相关阅读:
    JS实现双击内容变为可编辑状态
    DataTables 1.10.x与1.9.x参数名对照表
    div里 datapicker显示异常的情况之一
    javascript 添加行,删除行,datepicker获取当前日期和上一个月日期并设置格式,笔记
    jQuery 实现添加表格行,删除行,调用日期控件
    c# webbrowser控件内核版本强制修改
    【.net】获取网页CDM的下载链接的地址
    MySQL 密码增强插件
    跟我一起学extjs5(42--单个模块的数据新增方式)
    给 Android 开发人员的 RxJava 具体解释
  • 原文地址:https://www.cnblogs.com/hwlsniper/p/4100156.html
Copyright © 2011-2022 走看看