Gradle原型模板工具调研

为了方便小组里的同窗快速建立新项目,而且保持框架及配置的一致性,维护了模板工程。接下来须要一个好用的工具来快速生成新项目。git

模板工程基于Gradle,用不了Maven Archetype,须要另外找。框架

工具须要知足的条件ide

  1. 模板工程须要更新,能直接跑单元测试,因此工具不能限制工程结构,不能让模板工程来适应这个工具
  2. 模板工程放在公司内网,因此工具不能强制要求模板上传到工具自建的公网仓库

网上找了一些工具,目前找到的不太符合要求工具

  • gradle-archetype-plugin:不符合条件1
  • yeoman:不符合条件2

后来自建了一段小脚本及操做规范来解决这个问题单元测试

  1. 模板工程:1)包名惟一标识使用prjName,可定制,2)须要配置的地方注释里加上标记[config],可定制
  2. 执行自建的 dup_architype.sh 建立新项目
  3. 在IDE打开新项目,搜索[config]找到全部须要手动修改配置的地方,根据注释及上下文作出修改

dup_architype.sh 的大体执行流程:测试

  • 把模板工程拷贝到指定的新项目所在路径,排除掉不须要的目录
  • 重命名prjName这个惟一标识为自定义的业务名称
  • 替换项目文件中的prjName为自定义的业务名称

dup_architype.sh 内容:gradle

# template project absolute path
SRC=/Users/sandynz/Documents/projects/boottemp/
# target project absolute path
TARGET=/Users/sandynz/Documents/projects/prj1
# target project package name
PKGNAME=prj1
# copy
echo 'start copy'
rsync -avz --exclude out --exclude build --exclude target --exclude .git --exclude .gradle --exclude .idea $SRC $TARGET
# rename dir
echo 'start rename dir'
find $TARGET -name prjName -execdir mv {} $PKGNAME ';'
# replace content
echo 'start replace content'
find $TARGET -type f -exec sed -i '' "s/prjName/$PKGNAME/g" {} \;

该脚本里的 SRC/TARGET/PKGNAME 都须要在执行以前修改。含义以下:ui

  • SRC : 模板工程绝对路径
  • TARGET : 目标项目绝对路径
  • PKGNAME : 目标项目惟一标识,用于包名,不包含com.xyz.这样的前缀

脚本预设idea

  • 工程使用 Gradle/Git/IntellijIDEA,不须要复制的目录已经在rsync参数排除掉;其它须要排除的目录能够添加--exclude自行排除
  • 包名中的惟一标识是prjName(总体包名com.xyz.prjName),可自行定制

实际使用下来还算方便,简单有效。code

相关文章
相关标签/搜索