• java的mac自动化-自动运行java程序


    本文旨在帮助读者介绍,如果一个测试工程师拿到了mac本,该如何在本地自动运行java代码

    首先如图所示写下如下一段代码

    package zlr;

    import org.junit.Test;
    public class zlrshiyan {
    @Test
    public void test123() throws Exception{
    System.out.print (123);
    }
    }
    所在文件的路径是/Users/zlr/IdeaProjects/zlr/src/zlr,如下图,本地代码也可以正常运行

    这时我们想到了和之前编写的windows一样,mac是否可以像windows一样使用ant来自动执行呢?
    1本地执行java程序代码化
    mac作为一款比windows更加贴近linux的操作系统,其定时任务当然是可以执行的,本文来简单示范一下mac的定时任务
    首先第一步要做的事是使用ant来执行上文的java程序,使用的ant是下文的ant代码

    <?xml version="1.0" encoding="UTF-8"?>
    <project basedir="." default="junit and report" name="TestAuto">

    <!--日期-->
    <tstamp prefix="mydate">
    <format property="day" pattern="yyyy-MM-dd"/>
    <format property="time" pattern="HH:mm:ss"/>
    <format property="dt" pattern="yyyy-MM-dd HH:mm:ss.SSS"/>
    <format property="dt1" pattern="yyyyMMdd" offset="-1" unit="day" />
    <format property="dt2" pattern="yyyyMMdd" offset="-3" unit="day" />
    <format property="dt3" pattern="yyyyMMdd" offset="0" unit="day" />
    <format property="dt4" pattern="yyyyMMddHHmmss" />
    </tstamp>

    <!--参数定义-->
    <property name="appname" value="TestAuto"/>
    <property name="build.dir" value="/Users/zlr/Desktop/autoTest" />
    <property name="build.class.dir" value="${build.dir}/target/production/zlr/" />
    <property name="build.lib.dir" value="${build.dir}/lib" />
    <property name="build.report.dir" value="${build.dir}/report/${appname}_jenkins" />
    <property name="build.report.name" value="jenkins" />
    <property name="build.report.ip" value="10.10.81.108" />
    <property name="build.report.remote" value="E:/apache-ant-1.9.4/bin/apache-tomcat-6.0.30/webapps/report" />


    <target name="junit and report" depends=""
    description="run test and send report">
    <!-- 先删除原有report文件夹 -->
    <delete dir="${build.report.dir}" />
    <!-- 再创建新report文件夹 -->
    <mkdir dir="${build.report.dir}" />

    <junit printsummary="on" fork="true" showoutput="true">
    <sysproperty key="file.encoding" value="GBK" />
    <formatter type="xml" usefile="true" />
    <classpath>
    <fileset dir="${build.lib.dir}" includes="*" />
    <pathelement path="${build.class.dir}" />
    </classpath>
    <batchtest todir="${build.report.dir}">
    <fileset dir="${build.class.dir}">
    <include name="zlr/zlrshiyan.class"/>
    </fileset>
    </batchtest>
    </junit>

    <!-- 报告输出路径 -->
    <junitreport todir="${build.report.dir}">
    <fileset dir="${build.report.dir}">
    <include name="TEST-*.xml" />
    </fileset>
    <report format="frames" todir="${build.report.dir}" />
    </junitreport>

    </target>

    </project>

    上文的ant要点和之前介绍的windows可以说很相近,所以不再赘述了,有兴趣和疑问的同学可以去浏览http://www.cnblogs.com/xuezhezlr/p/7725301.html

    这里要介绍的是mac一个特点,就是java的安装

    如果使用正常的java安装,会出现一个框然后自动安装到系统的硬盘中,不过有个问题是不能轻易去访问那个路径,所以对它进行操作很困难

    而ant调试过程中可以看到,全程没有导入java的环境变量,只是依靠本地的java变量来实现的mac所以,对本机的java变量的控制变得异常重要,所以https://support.apple.com/kb/DL1572?locale=en_US&viewlocale=en_US这是我强烈推荐的java安装地址,建议使用这个进行安装

    与windows比较大的区别是,windows使用.bat文件来执行ant命令,而mac则是使用.sh文件来执行ant,这也是mac笔记本比较类似linux的地方

    下面是本地执行结果

    2使用crontab来定时执行代码
    在手动执行后自然我们想到了自动执行代码,由于mac在内核上与linux很相近,所以这里介绍的是在linux上比较盛行的crontab来定时执行java代码
    输入crontab -e,然后在出现的地方输入我们的下面一行文字并保存

    00 21 * * * source /Users/zlr/.bash_profile && /Users/zlr/Desktop/autoTest/runAnt.sh

    保存记住,要使用wq!来做,这里讲一下这个语句

    00 21 * * *这几位是表示时间的,意思是每个满足条件的时间点执行后面那一行shell语句

    第1列表示分钟1~59 每分钟用*或者 */1表示 
    第2列表示小时1~23(0表示0点) 
    第3列表示日期1~31 
    第4列表示月份1~12 
    第5列标识号星期0~6(0表示星期天)

    而这里的*是指这一种检索条件可以忽略,比如上文中只有前两列是不是*,那么意思就是每天的晚上9点执行,http://blog.csdn.net/h514476785j/article/details/52512354这里有比较详细的解释

    但是java还一个特点就是环境变量,因此后面的语句是source /Users/zlr/.bash_profile && /Users/zlr/Desktop/autoTest/runAnt.sh

    这句话的意思是,先执行source /Users/zlr/.bash_profile加载环境变量,在执行/Users/zlr/Desktop/autoTest/runAnt.sh来执行ant命令,中间用&&符号来链接,另一种方式是在runant中写多条shell语句来执行

    上文就是mac的简单自动化了,各位加油,我研究一下jenkis如果有成果就发出来



  • 相关阅读:
    Linux IO模型漫谈(3) 阻塞式IO实现
    Linux IO模型漫谈(4) 非阻塞IO
    Linux IO模型漫谈(6) 信号驱动IO模型
    Go语言_反射篇
    Linux IO模型漫谈(5) IO复用模型之select
    Go语言_函数学习篇
    Go语言_接口篇
    nginx源码学习Unix Unix域协议
    Java GC
    Heritrix 3.1.0 源码解析(三十四)
  • 原文地址:https://www.cnblogs.com/xuezhezlr/p/8506249.html
Copyright © 2020-2023  润新知