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

相關文章
相關標籤/搜索