设为首页 收藏本站
查看: 894|回复: 0

[经验分享] 修改mybatis-generator-1.3.2源码实现自定义代码生成详解(三)

[复制链接]

尚未签到

发表于 2016-11-28 07:10:34 | 显示全部楼层 |阅读模式
修改mybatis-generator-1.3.2源码实现自定义代码生成详解(三)
    前两篇对mybatis-generator-core源码进行了修改,在一定程度上做到了方便使用。这一篇先将写个测试程序看看生成的结果,然后用maven assembly将它打包生成一个zip文件。
    新建一个类StartUp,找到org.mybatis.generator.api.ShellRunner这个类,它就是生成文件的入口类,拷贝106-117行代码,再稍微作下修改。
   
   
    generatorConfig.xml在resources目录下面,它里面要定义输出文件的目录,如果不指定具体的路径,默认是在当前文件夹下面生成。
   

    但是呢,这里有个比较蛋疼的地方,mybatis-generator-core默认是不给你生成文件夹的,不信?请看org.mybatis.generator.internal.DefaultShellCallback的第50行,当指定的目录不存在时,就抛出ShellException异常,所以输出文件也就不可能有了。这里我们注释掉51行代码,添加如下代码:
   
   
    现在再来执行StartUp看看,发现在与src、target同级目录下生成了mybatis3目录,里面有相应的pojo与xml,打开之后看看效果,与我们改动代码后预想的结果一致。那么接下来就看看,如何将它打包输出成下面这样的效果。
   

    首先我们新建一个src/main/scripts/run.bat文件,内容如下:
    java -jar mybatis-generator-1.3.2.jar -configfile generatorConfig.xml –overwrite
    pause

    其实就是一个java命令行,里面加的参数都是ShellRunner需要的,加上pause是方便查看输出信息。
    然后修改pom文件,既然最终输出有源文件JAR和编译后的class JAR,所以我们需要增加maven-source-plugin和maven-jar-plugin这两个插件,另外还用到了maven-assembly-plugin插件。这些plugin具体的用法,我就不讲了,我只说下要注意的地方。
   

    注意红色框的内容,表示我将打包的源代码只会是原来的,增加的com.bolo.StartUp是不会包含进去的,而且这也没必要添加进去。
   

    编译之后的打包同样只包含原来的代码,并且一定要在这里指定入口类。classpathPrefix是类目录,为空就是生成在当前目录下。如果写成<classpathPrefix>lib/</classpathPrefix>这样,则表示生成的mybatis-generator-1.3.2.jar会在lib目录下面。
   

    上图descriptor里面的内容表明了assembly.xml的位置,它可以做很多自定义设置。
   

    这里定义的id默认是加到生成的文件名后面的,但我们在上图中设置了<appendAssemblyId>false</appendAssemblyId>,所以,这个all-in-one就不会加到生成的文件名后面了,如果想要这个名字,将false改成true即可。<format>zip</format>表示将生成一个以zip为后缀的压缩包。
   

    我们最终是想把几个文件都放在一个目录下面,所以outputDirectory就不需要再定义其它的名字。通过前面的输出知道,最后只会包含generatorConfig.xml和run.bat这两个文件,其它的配置文件并不是我们需要的,因此这里需要排除它们。
    另外还有两个fileSet是指定源代码的JAR和编译class的JAR,这两个设置和前面类似。
   
    有点补充说明:此例都是以MySQL数据库为例,所以运行是需要mysql的数据库驱动的,但我又不想在输出里面包含这个jar,因此就在generatorConfig.xml文件里面进行了配置,不清楚的可以看看。
    最后的最后,这些我们都做完了,那么就可以打包输出了,使用mvn package或是在Run As -> Maven Build -> Goals里面填写package,点击 Run。
    源码下载: mybatis-generator-1.3.2.zip
    本文为菠萝大象原创,如要转载请注明出处。http://www.blogjava.net/bolo

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-306306-1-1.html 上篇帖子: 使用myBatis时要注意对象属性与表字段要对应 下篇帖子: MyBatis之作用域和生命周期(二)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表