使用Ant批量编译Java代码,并将Class文件存放至指定目录

第一章 探究起因

在做企业服务平台项目自动化测试时,笔者发现:同样的代码,在我本机运行就可以成功,但上传到我的云服务器上运行,日志里就会报出一个在上个月出现过的一个错误。总感觉云服务器上跑着的是一份旧的,有问题的代码,但是查看文件的时候明明src目录下的java文件都是最新的,所以这个问题困扰了我很久,怎么也解决不掉。
后来前两天和师傅闲聊,他提到一句“Jenkins里使用java命令运行代码时候,跑的不是java代码,而是编译好之后的class字节码文件”。我滴天,这么关键的点我怎么给忘了呀,多亏师傅一句话提点,才有了这几天产出的Ant批量编译探究总结。
我是将src目录下的代码以及testng.xml文件上传到自己的GitHub私有库中托管,然后在想要运行时,云服务器端自动从Git上pull一份代码来执行,也就是云服务器端实际上下载到的文件就只有java源代码。所以我所需要做的事情包括:

  1. 告诉Ant我的java文件需要依赖的代码在哪个目录下。
  2. 批量编译src目录下的所有java文件。
  3. 将编译后的class文件存放到指定的目录。
  4. 然后在写一个bat批处理脚本执行ant命令。

那么在开始之前我们就需要先安装一下Ant了。

第二章 安装Ant

直接到官网下载安装就行,这就无需多说了。
安装好之后,新建系统环境变量ANT_HOME,并在PATH中添加ANT_HOME目录下的bin目录和lib目录。
接下来测试一下配置:开始–>运行–>cmd打开命令行–>输入ant -version,回车。
如果看到Ant版本信息,那么恭喜你已经完成Ant配置。

第三章 编写build.xml文件

要运行Ant,需要保证你的运行目录中包含一个build.xml文件。毕竟是从0到1,写这个文件可真的是废了我一番功夫,过程就不提了,我直接把成果粘在这里好了,里面有我自己配的注释,很好懂:

<?xml version="1.0" encoding="UTF-8"?>
<!-- 定义一个工程,默认任务为compile。basedir就是工程的存放路径 -->
<project name="qualinkTestProd" default="compile" basedir="C:\Dasym\CodeSpace\qualinkTestProd">

    <!-- 指定依赖包路径,这里需要指定工程的路径 -->
    <property name="compilePath" value="C:\Dasym\CodeSpace\qualinkTestProd"/>

    <!-- 定义路径,编译java文件时用到的jar包。 -->
    <path id="project.lib">
        <fileset dir="${basedir}\lib">
            <include name="**/*.jar"/>
        </fileset>
    </path>

    <!-- 清空原有的class文件,创建新的存放路径。 -->
    <target name="clean">
        <delete dir="${compilePath}\bin" />
        <mkdir dir="${compilePath}\bin" />
    </target>

    <!-- 定义任务,编译src文件夹中的java文件,编译后的class文件放到目标文件夹中(使用destdir指定存放目录)-->
    <target name="compile" depends="clean">
        <javac srcdir="${basedir}\src\qualinkTestProd" destdir="${compilePath}\bin" debug="true" includeantruntime="false" encoding="UTF-8" >
            <classpath refid="project.lib">
            </classpath>
        </javac>
    </target>
</project>

这里我再加个备注吧:
工程存放路径:C:\Dasym\CodeSpace\qualinkTestProd
class文件存放路径:C:\Dasym\CodeSpace\qualinkTestProd\bin
java文件存放路径:C:\Dasym\CodeSpace\qualinkTestProd\src
依赖jar包存放路径:C:\Dasym\CodeSpace\qualinkTestProd\lib

第四章 持续构建

我的build.xml文件是存放在C:\Dasym\CodeSpace\qualinkTestProd这个目录下的,所以此时直接使用cmd,cd到C:\Dasym\CodeSpace\qualinkTestProd目录,然后敲入ant,回车,就可以看到代码被成功编译,并且放入了
C:\Dasym\CodeSpace\qualinkTestProd\bin这个目录下。
但这样未免太麻烦,我们可以在Jenkins的中直接写入批处理命令,在自动构建时直接使用ant命令进行编译(命令写在Jenkins 的“构建”下面)。

4.1.小插曲【我太难了】

于是我在Jenkins中引用windows批处理脚本,也就是这个Execute Windows bach command:
在这里插入图片描述
在这里边直接写入call ant命令,但执行时候却发现失败了,报错如下图:
在这里插入图片描述
但我将call ant命令写在本地的bat脚本中,运行是完全正常的,为什么在Jenkins中同样使用批处理脚本就运行不起来了呢?
这一步真的痛苦,找了很多解决方案都解决不掉,网上写着各种解决方案,但是多数都是瞎说误导人的。比如下面这个:
https://blog.csdn.net/bbqk9/article/details/6291759
又思考了很多解决方案,最后才灵机一动,“系统找不到指定的路径”,其实也就是没有找到对应的ANT_HOME环境变量,也就是说Jenkins并不知道ANT的环境变量路径是什么。要想告诉它Ant的安装路径,就只能通过安装插件并且在插件配置里写入路径。于是我从插件下手,在Jenkins中安装了对应的Ant插件,进行了相应的配置,才最终完成。

4.2.安装Ant插件

在Jenkins中安装Ant插件,网上有很多教程,大家可以对照着做。这里就不赘述了。

4.3.配置Ant插件

这一步就很重要了,Jenkins-Jenkins管理-全局工具配置-找到Ant
在这里插入图片描述
一定要取消掉Install Automatically前面的对勾,然后在其中填入自己的Ant名称以及ANT的安装路径。(名称可以随意写,最好是自己的ant版本号)
在这里插入图片描述
完成后点击保存即可。

4.4.配置工程

接下来我们打开对应的项目,进入配置,找到“构建”-“增加构建步骤”-“Invoke Ant”
在这里插入图片描述
增加一个Ant命令执行工具。
在这里插入图片描述
在其中选择你的ant版本,并写入你的build.xml文件存放路径。保存。
这样我们再次执行脚本时,Jenkins便可以通过上述配置找到ANT的安装路径,并且找到对应的build.xml文件。执行Jenkins 的自动构建时,便可以自动调用Ant命令,自动编译。脚本执行成功!不会再报错啦!

至此便已完成全部配置,从开始做这个自己给自己布置的小任务,到完成,
再到现在把这些经验一步一步地写下来,真的融合了好一番心血呀。
做完之后看着代码正常运行起来的时候,幸福感油然而生。
最后,感谢师傅的提点~


软件测试工程师一只,也在不断的学习阶段,平时的小经验不定期分享。
博主经验有限,若有不足,欢迎交流,共同改进~
有意可加Q群 908417285 交流学习。
乾坤未定,你我皆是黑马
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

千川Maple

请作者喝杯咖啡吧!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值