Shell中根据svn是否有待更新的版本去决定是执行maven打包

1- svn 更新判断代码

本着学习的目的,这里使用了两种获取version的方法。

    localVersion=$(svn info -R | grep "Revision\:" | sort -k 2 -nr | head -n 1 | awk -F ‘ ‘ ‘NR==1 {print $2}‘)
    serverUrl=$(svn info |grep "^URL:" | awk ‘{print $2}‘)
    serverVersion=$(svn info ${serverUrl} |grep "Last Changed Rev:" |awk ‘{print $4}‘)
    if test ${serverVersion} -gt ${localVersion}
    then
        svn update
        mvn clean package -DskipTests
        cd ${moduleName}/target/
        cp -f ${jarName} ${appHome}/jar/
    fi

2- 解释

  • sort

  svn info -R 递归查出所有文件的info信息

  sort -k 2 是以第二列排序

  sort -t : 是指定以“:”为列分隔符

  sort -nr: n是指以数字排序,默认是以字符排序的,那样的话,10会在2的前面,因为1大于2,-r (reverse)是以倒序排序。

  • awk

  -F 指定分隔符

  NR==1 指定行号为1

  print $2 打印NR行2列的内容

原文地址:https://www.cnblogs.com/chaos-x/p/11388141.html

时间: 2024-10-10 23:58:01

Shell中根据svn是否有待更新的版本去决定是执行maven打包的相关文章

shell中的`和$()、eval、crontab

一.`和$()的区别 反引号本身就对\进行了转义,保留了本身意思,如果我们想在反引号中起到\的特殊意义,我们必须使用2个\来进行表示. 反引号中: \\ = \ $()中:\ = \ 注意:反引号是老的用法,$()是新的用法,不管是在学习测试中,还是在实际工作中,$()的用法都是被推荐的. 二.eval命令 eval会对后面的命令进行两遍扫描,如果第一遍扫描后,命令是个普通命令,则执行此命令:如果命令中含有变量的间接引用,则保证间接引用的语义. 例如有一个文件test1,里面的内容是"this

shell 中的 envl 及 crontab 命令

envl eval会对后面的命令进行两遍扫描,如果第一遍扫描后,命令是个普通命令,则执行此命令:如果命令中含有变量的间接引用,则保证间接引用的语义.也就是说,eval命令将会首先扫描命令行进行所有的置换,然后再执行该命令.因此,eval命令适用于那些一次扫描无法实现其功能的变量. eval 执行以下两个步骤 第一次,执行变量替换,类似与C语言的宏替代 第二次,执行替换后的命令串 栗子: 1.  有一个名为test的文件,其内容为“Please move on !”,定义一个内容是cat test

maven 打包时动态替换properties资源文件中的配置值

pom build节点下面添加resource配置: [html] view plain copy <resources> <resource> <directory>src/main/resources/</directory> <filtering>true</filtering> <includes> <include>**/*.properties</include> </includ

关于在php+apache开发过程中使用svn进行版本的维护

应用总是举例 : 在一些项目中,svn可能是一个比较好的原代码管理器.但是很严重的一个问题就是,svn那边存储的文件结构与我们的本地的不相同,他们独特的自己的存储方式.换句话说,也就是在svn的仓库里面,找不到相对应的文件.这样的话,apache就没有办法去解析,更新完代码后,就没有办法做到,更新代码后,就即时的看到自己的代码更新情况,执行情况. 可能最初大家想的是一种方式,就是 通过修改apache的web目录,将其的根目录指向某一个svn仓库那边.但是,很显然,这种方式是行不通的,因为svn

windows,linux下SVN实现自动更新WEB目录

通过SVN进行版本库管理,每次提交后,都要在SVN服务器更新最新上传的版本到WEB目录进行同步.操作比较烦琐,而且效率也低.使用SVN钩子脚本进行WEB目录同步,可很好的解决这方面的问题.由于测试机器与SVN库都在同一台机器里,所以处理起来比较方便. svn项目下面有hooks目录,里面存放的是全部的钩子脚本的模板 post-commit.tmpl 为客户端commit提交后触发 以下是windows和linux下自动更新版本库的方法: 在SVN 项目版本库的存储目录下的hooks 目录,新建立

VS中使用svn注意事项

1.程序需定期编译通过后上传SVN,每天可上传多次,根据个人程序开发进度决定,但每天晚下班前必须将当天的程序编译调试通过并上传SVN.每天早上上班首先需要更新SVN最新版本. 上传的工作流程应该是,更新——编译运行——上传.这个工作流程那一步也不能缺少.更新是在把 别人提交的代码下载下来,看看和自己所写的代码有没有什么冲突,可能自己需要用到的一个函数已经被别人所修改.导致自己本来运行完美的系统出现了错误.如 果没有编译运行就上传了.别人下载下来的代码就是错的了.这样通过几个版本的迭代.出现的错误

eclipse中添加svn插件

在eclipse中使用svn查看能非常方便的对代码进行查看和更新提交操作,能及时知道代码的更新状态. 在eclipse中如果要使用svn,只能使用svn插件的方式进行. 插件地址:http://subclipse.tigris.org/update_1.8.x 步骤如下: 打开eclipse查看顶上工具栏Help-> install new software 在打开的界面地址栏中输入地址:http://subclipse.tigris.org/update_1.8.x 回车,选择出现的内容一直下

Linux中的svn客户端RabbitVCS-2

我们都知道,自从svn出道以来,很多人都预言,cvs将会被其取代.就如同他们预言maven要取代ant一样.可见,svn的流行.在Windows中,最常用到的开源免费的svn客户端就是TortoiseSVN(也就是我们看到的小乌龟).在Windows中,TortoiseSVN搭配VisualSvn Server(免费的svn server管理工具),可以让开发人员非常容易的对项目进行版本库的构建. 在Linux中,我们最常用到的svn客户端可能会是eSvn.它同样开源,免费.但是它的使用习惯跟W

TortoiseSVN 1.9.5安装 与 Eclipse4.4.2及以上版本中安装SVN插件

引自: http://blog.csdn.net/chenchunlin526/article/details/54631458 TortoiseSVN 1.9.5安装 与 Eclipse4.4.2及以上版本中安装SVN插件    1.先在本机安装TortoiseSVN 1.9.5   ①安装包官网下载地址: https://tortoisesvn.net/downloads.html    安装包本地快速下载: http://download.csdn.net/detail/chenchunl