idea初始化项目到git_60行shell脚本快速生成Java项目脚手架

312111ea49947d62ba98475eaad941e4.png

每新开一个Java项目, 第一步无一例外都是先打一个框架出来,通常我们是在过去用的比较成熟的框架上删删改改直接用。比如改出来下面这样结构的一个简单框架。

895436876f828c67d85ef6455d69088f.png

通常每次操作都是类似的,删除无用代码,改项目名包名,一个一个改相关特定配置等等。 其实这些操作都可以用程序来完成。 用程序处理既省事,又可靠,也不用担心漏改。 所以,我们可以维护一个项目基础框架,这个框架项目就叫 projectframe 然后写一个脚本 generate-new-project-based-on-this.sh,根据这个基础框架项目克隆出一个新项目来,比如叫 butterfly,然后重命名 projectframebutterfly,再逐步重命名包名、Java文件中的包路径、pom中的module名等。最后还可以做一些初始化,比如初始化git,为当前项目指定git用户,初次提交等等。 如下。 projectframe demo

70d0e7066dab92e55375cb197725a61b.png

其中的class

1e46d0643c819d646784b7ec19568a74.png

配置文件

d647be17ceb47690aac95cbddda74861.png

mybatis-generator 配置文件

5ea959335004a3506c8ebcf783a75cb8.png

pom文件

fa37d2c0150676ebcad03af86b8e93e3.png

红框标注的地方以及一些含有 projectframe 的文件夹都要重命名为新项目名 butterfly。 如果手动改或使用全局替换就比较麻烦。 shell 脚本

ef246b6f93d2a9e1c2effeed287ac7d3.png

60多行代码,很简单,基本看注释就能看懂。其中主要用了 tree命令来列出文件和文件夹,借助 mvrmsed等命令来 重命名、清理和查找替换关键字( projectframe → 新项目名)。不再赘述,大家可以拿来改改自己玩。需要注意的是脚本中用了 rm -rf 命令,并且在 rm前没有做check,可能存在一定风险,慎用!(可换成mv)。不过,我这个项目中已经cd到新项目目录,删除时用的相对路径。 使用 命令行执行

 sh generate-new-project-based-on-this.sh butterfly

其中 butterfly即为新项目名称。 最终效果

0840b54f2c3447c1cb4d7972df260827.png

8feeda70b279084b95bd87ea38530d81.png

410220c7cbc80c0d0f1477a4cfba404b.png

4906c494f4816f89a827c27bce1b08f6.png

脚本执行完后即可在frame框架项目的同级目录看到新项目,如图

99b52c1107388debf0d6c6d9b46a6d2a.png

最后用idea打开,编译。

8c758e159f9f0768586b071f628ad2aa.png

完美 a50174d119737adf1e184ef2bd639ef9.png

完整shell代码

alias 'log=echo `date +"%Y-%m-%d %H:%M:%S"`'new_project=$1#new_project='buterfly'if [ "$new_project"x = "x" ]; then  log "################# arg new_project is blank, exit #################"  exit 8filog "################# clone one #################"log "new project: $new_project"new_project_name=thinkey-$new_projectlog "new project name: $new_project_name"cp -r . ../"$new_project_name"/log "################# cd ../$new_project_name #################"cd ../"$new_project_name" || exitlog "$(pwd)"log "################# clear #################"for to_delete in $(tree -aif | grep -E ".iml|.idea|target"); do  log "rm -rf $to_delete"  rm -rf "$to_delete"  # rm "$to_delete"donelog "rm -rf .git"rm -rf .gitlog "################# refactor #################"log "################# rename directory #################"for old_dir in $(tree -dif -L 1 | grep projectframe); do  log "$old_dir"  new_dir_name=${old_dir/projectframe/$new_project}  log "$new_dir_name"  mv "$old_dir" "$new_dir_name"done# rename packagefor old_dir in $(tree -dif -L 7 | grep projectframe); do  log "$old_dir"  new_dir_name=${old_dir/projectframe/$new_project}  log "$new_dir_name"  mv "$old_dir" "$new_dir_name"donelog "################# search and replace #################"for file in $(tree -if -I '*.jar|generate-new-project-based-on-this.sh'); do  if [ -f "$file" ]; then    log "replace in $file"    sed -i "" "s/projectframe/$new_project/g" "$file"  fidonerm -f generate-new-project-based-on-this.shlog "################# git init and commit #################"git init# specify user for current repositorygit config user.name "qiaojianyong"git config user.email "qjyoung@163.com"git add .git commit -m "go!"log "################# finish #################"

cda194b8e3af7592ad3c382559ba934a.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值