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>
  • 相关阅读:
    C# 文件绝对路径与相对路径的转换
    DevExpress TreeList 禁止节点拖动到其他节点上
    C# 通过KD树进行距离最近点的查找.
    C# 利用键值对取代Switch...Case语句
    C# 利用位运算传递多个参数方法
    Deepin安装node与npm
    python-demo:计算合格率
    SpringDataJpa在一对多、多对多关系映射时出现StackOverflowError
    npm install 问题汇总
    CentOS7 使用firewalld打开关闭防火墙与端口
  • 原文地址:https://www.cnblogs.com/hwlsniper/p/4100156.html
Copyright © 2011-2022 走看看