ANT 简介(三)在ecplise中编译和运行

版权声明:转载请申明出处,谢谢 https://blog.csdn.net/qq_35495763/article/details/88213098

Update Time :2019-3-5 Author:要你命三千又三千 type:学习笔记

问题:如何使用ant编译一个 java项目

背景:Eclipse 附带预先绑定的 Ant 插件

  1. 新建项目
    在这里插入图片描述
package example;
public class Hello {
    public static void main(String[] args) {
        System.out.println("我的项目是ant运行的");
    }
}
  1. 建立build.xml文件,编写ant代码
<?xml version="1.0" encoding="UTF-8"?> 
 <project name="project" default="default"> 
    <target name="default" depends="depends" description="description"> 
        <javac srcdir="src" destdir="bin" includes="org/**"  includeantruntime="true"></javac> <!--编译源代码-->
         <jar basedir="bin" destfile="dist/ant_project.jar"></jar>  <!--创建jar文件-->
    </target> 
    <target name="depends">  
    </target> 
 </project>

运行 项目
(1)eclipse-右键项目-properties-Builders-Add buids(选择 ant builder):
在这里插入图片描述
在这里插入图片描述
(2)Buildfile-点击选择项目下的build.xml文件,生成路径为:${workspace_loc:/ant_project/build.xml}
在这里插入图片描述
在这里插入图片描述
Base directory-点击选择项目名字,生成路径为:

${workspace_loc:/ant_project}

(3)当前页面切换到classPath下,add jar(junit.jar,这个jar之前先放在ant_project下面)
(4)去掉java builder勾选,选择ant builder(可以去掉,也可以不去掉)
在这里插入图片描述
点击build.xml右键—run as —-ant build 开始运行ant命令,构建ant项目以及打包工作
在这里插入图片描述
在这里插入图片描述

补充编译并且运行项目build.xml配置

<?xml version="1.0" encoding="UTF-8" ?>
<!-- ant的所有内容必须包含在这个里边,name是你给它取的名字,basedir故名思意就是工作的根目录 .代表当前目录。default代表默认要做的事情。  -->
<project name="Hello" default="run" basedir=".">
    <property name="mySrc" value="src"/>
    <property name="myClassDirName" value="classes"/>
    <property name="myBuildJarName" value="helloant.jar"/>

    <!-- [javac] E:\04-scala_eclipse\01-work\Hello\src\com\phei\netty\protocol\http\xml\TestOrder.java:22: 错误: 程序包org.jibx.runtime不存在
        [javac] import org.jibx.runtime.BindingDirectory;
    -->
    <property name="lib.home" value="${basedir}\lib"/>  
    <path id="project.classpath">
        <fileset dir="${lib.home}" includes="***.jar" />
    </path>
    <!-- 
    第一步:初始化
        把你想做的每一件事情写成一个target ,它有一个名字,depends是它所依赖的target,在执行这个target 
        例如这里的compile之前ant会先检查init是否曾经被执行过,如果执行过则直接直接执行compile,如果没有则会先执行它依赖的target例如这里的init,
        然后在执行这个target如我们的计划  
    -->
    <target name="init">
        <!-- 为了不用拷贝,我们可以在最开始定义好目标文件夹,这样ant直接把结果就放在目标文件夹中了 新建文件夹:   -->
       <mkdir dir="${basedir}/bulid"/>
       <mkdir dir="${basedir}/${myClassDirName}"/>
    </target>
    <!-- 
    第2步:编译
    -->
    <target name="compile" depends="init">
        <!-- 
            includeantruntime="false"、
            解决:
            [javac] E:\04-scala_eclipse\01-work\Hello\build.xml:46: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds
        -->
       <javac srcdir="${mySrc}" destdir="${myClassDirName}" includeantruntime="false"  nowarn="on" source="1.8" target="1.8" deprecation="true" debug="true" encoding="UTF-8" classpathref="project.classpath" >
            <compilerarg line="-Xlint:unchecked" />
       </javac>
    </target>
    <!-- 
    第3步:做jar包
    -->
    <target name="build" depends="compile">
        <!--
            Could not find com.phei.netty.protocol.http.xml.Test. Make sure you have it in your classpath
            主要是解决:
                /Hello/classes 目录的,编译后的.class文件存放位置
         -->
       <jar jarfile="${myBuildJarName}" basedir="${myClassDirName}"/>
       <!-- 创建生成的jar包存放位置 /Hello/bulid/helloant.jar -->
       <jar destfile="${basedir}/bulid/${myBuildJarName}" ></jar>
    </target>
    <!-- 
    第4步:运行
    -->
    <target name="run" depends="clean,build">
       <java classname="com.phei.netty.protocol.http.xml.Test" classpath="${myBuildJarName}" classpathref="project.classpath"/>  
    </target>
    <!-- 重新运行  -->
    <target name="rerun" depends="run">
       <ant target="clean" />
       <ant target="run" />
    </target>
    <!-- 每次运行前清空,以前运行的东西,比如生成的jar包,编译的.class文件-->
    <target name="clean">
       <delete dir="${myClassDirName}" />
       <delete file="${myBuildJarName}" />
    </target>
</project>

猜你喜欢

转载自blog.csdn.net/qq_35495763/article/details/88213098
今日推荐