在有了cast这个脚本之后,我们就可以自定义各种模板,但是可以想到,对于实际应用而言,模板中的变量可能非常多,因此,我们还需要写其他脚本来简化文档的生成。以下提供一个用于生成Gradle/Groovy项目的工具cgp (create groovy/gradle project),以及在项目中新建源代码的cgj。
首先从google code下载代码,地址:xmeta 如果安装了Mercurial,可以直接执行
hg clone https://xmeta.googlecode.com/hg/ xmeta
获取项目。
把xmeta/scripts文件夹添加到PATH后,检查groovy和ksh是否安装,如果Ok,则可以通过以下方式创建一个新的gradle项目。
cgp -l apache2 -A -m Foo -p com.yourdomain.whatever Bar
-l apache2 表示采用apache 2.0许可,如果不输则默认为gpl3
-A 表示生成的是一个程序application,而不是一个库library,默认为库
-m Foo 表示指定Foo为该程序的Main-Class,并生成一个Foo.groovy文件
-p 为项目使用的package名称,默认为用户的用户名
Bar则是项目的名称。
cgp还支持其它参数,可以通过cgp -h来查询。
新的项目将被创建在当前文件夹内,名称同项目名称。可以修改其中的build.gradle使之符合自己的需求(当然也可以直接把xmeta/template下的gradle.app和gradle.lib改了,一劳永逸。我使用的gradle脚本没有调用maven的库,因此必须准备本地的groovy和junit等库文件,主要是很多时候出于某种原因很多网络资源会打不开,原因你们懂的)
生成项目以后,可以在项目文件夹的任何位置执行cgj来生成源代码。cgj目前只是一个半成品,预计以后会修改为类似于grails create-domain-class ClassName这样的调用方式。但无论如何,cgj现在已经可以良好运行了。
如果需要新建类com.yourdomain.whatever.Util,可以执行:
# 在Bar/src/main/groovy/com/yourdomain/whatever目录下时cgj Util class.groovy #生成groovy类# 在Bar/src/main/groovy/com目录下时,可以使用相对路径cgj yourdomain.whatever.Util class.groovy# 也可以在任意位置使用完整路径,或是生成Java代码(而非Groovy)cgj com.yourdomain.whatever.Util class.java
cgj在生成Util源代码的同时还会在src/test文件下下的对应位置生成名为UtilTest.groovy的单元测试代码。cgj不单可以生成普通类,还可以生成interface、enum、abstract-class等其它代码,当然,也可以在template/java目录下自定义模板。
PS:Google的代码库也好,SourceForge也好,好的时候都很好,但只要国际国内环境一有风吹草动就都不好,唉,它好……我也好。
PS II: 现在回头看看xmeta的代码,发现注释很少,仅有的也很烂。原因一是没有注释的习惯,要慢慢改;二是在写代码的时候切换中英文输入法实在很折腾人,用英文又不会写……
PS III: 最近一个礼拜我一直在eating my own dog food,发现了很多typo,主要是模板里的,慢慢修复吧