脚本军火库:更多 Gradle 下的目录操作

本文介绍了一种在Gradle项目中实现目录快速切换的方法,并提供了简化测试与构建流程的脚本。通过自定义pushtop、gtest及dist等命令,用户能够更高效地进行项目开发。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

先前我们建立了一个 cdtop 函数以方便我们从底层目录跳转到顶层目录,可是问题在于,1. 如何再直接回到底层目录呢?2. 写在 .bashrc 中当然没有太大问题,可毕竟这是关于 gradle 项目的,可不可以把它抽取出来呢?

cdtop 升级版:pushtop
   1: pushtop () {
   2:     working_directory=`pwd`
   3:     cdtop
   4:     top_directory=`pwd`
   5:     if [ $working_directory != $top_directory ]
   6:     then
   7:         cd $working_directory
   8:         pushd $top_directory
   9:     fi
  10: }

使用 pushd 代替 cd 后就可以很方便的使用 popd 跳转回深层目录。考虑到我们的主要目的并不是来回的跳转,而是更好的操作 gradle,所以,使用 pushtop 进一步简化 gradle 的 test 和 dist (我自定义的 distribute 任务)。

加强的 test / dist

在 gradle 中如果测试出错,build 目录下将生成一份测试报告,手动打开很麻烦,所以我们先写一个自动打开浏览器的脚本:testrpt

   1: default_browser=opera
   2: rpt=build/reports/tests/index.html
   3:  
   4: if [ -s $rpt ]
   5: then
   6:     $default_browser $rpt 2>&1 > /dev/null &
   7: fi

这个脚本会判断当前路径(必须是 gradle 项目顶层目录)是否包含了测试报告,如果是,则启动浏览器(opera,大爱)

当然,调用这个脚本的前提是测试失败:

   1: gradle_test () {
   2:     gradle test || testrpt
   3: }

现在,可以把测试命令重写成如下代码:

   1: alias gtest='pushtop && gradle_test && popd'

使用 gtest 代替 gradle test 可以有两点好处:1. 不需要手动离开当前路径;2. 一旦发现测试错误则自动打开浏览器。

dist 任务则更加简单:

   1: alias dist='pushtop && gradle build && gradle dist && gradle clean && popd'

最后,我们把所有的函数和 alias 从 .bashrc 转移到单独的文件 xmetarc 并在 .bashrc 中 source 该文件,大功告成。

还有一个可能会有用的函数是用来进入项目目录的(我的所有项目文件都在一个专用文件夹下),用法是 go (进入项目目录)或 go project-name (进入指定项目)

   1: project_home=$HOME/development/projects
   2:  
   3: go () {
   4:     if (( $# == 0 ))
   5:     then
   6:         cd $project_home
   7:     elif (( $# == 1 ))
   8:     then
   9:         cd $project_home/$1
  10:     else
  11:         echo "Usage: go project_name"
  12:     fi
  13: }

PS. 其实忙了这么多,用 IDE 不就完了?不尽然,简单说就是鱼和熊掌吧

Technorati 标签: Shell, Gradle, Script

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值