在我把Grails程序升级到1.2版本之前,项目所需要的Jar包都是放在项目中的lib/目录下的,并且我使用PostgreSQL作为开发数据库.而现在,我决定在Grails1.2的程序中,使用Ivy管理Jar包的依赖关系,而对于我的老旧的台式机来说,PostgreSQL有点太大了,而根据平时开发的经验,JavaDB作为开发用的数据库也足够了,因此为什么不迁移到Ivy和JavaDB呢?
先说一下我的环境:
JDK1.6.0_18 自带JavaDB(对应于Derby10.5.3.0版本)
Netbeans 6.7.1, 安装Groovy插件
Grails1.2,使用jetty插件替代默认的tomcat插件
Slackware 13,使用KDE桌面
配置Ivy
我相信大家都知道自己需要哪些Jar包,因此如果你也需要迁移,可以直接把Jar包从lib/下删掉,因为迁移到Ivy,就可以统一管理这些Jar包还不再需要手工维护这一堆讨厌的二进制的东西了.
如果你是从Grails1.2以前一个版本升级过来的,那么可能你的项目中没有conf/BuildConfig.groovy这个文件,我的建议是用Grails1.2生成一个空项目,然后把这个文件复制过来就可以了.当然,Grails1.2生成的项目是肯定有这个文件的.
打开这个文件,不需要太关注里面的内容,因为我们只需要把maven仓库的地址反注释掉就可以了,如果你有对Jar包的特殊需要,只需要添加上自己特定的Maven仓库地址就可以.然后就是在dependencies中添加所需要的jar包依赖了,把你需要的都添加进去,别忘了添加上runtime 'org.apache.derby:derbyclient:10.5.3.0_1',这是针对一会对于JavaDB的迁移用的,如果你的JDK和我的版本不同,需要你去$JAVA_HOME/db下面看一看你的JavaDB的版本,然后选择合适的derbyclient驱动程序版本.
做完这些后,试着运行$grails run-app吧,经过短暂时间的下载后,你的代码库里就不再需要这一堆讨厌的二进制文件了.
OK,开始迁移数据库.
我相信Grails的程序员大多把创建数据表的工作交给Grails/Hibernate去做了,因此迁移应该也不成问题.只需要把你的数据库(我的是PostgreSQL)换成JavaDB就可以了,应该没有什么困难.
那肯定有人问,为什么用JavaDB而不是HSQL?其实很简单,JDK自带了JavaDB,而JavaDB又足够强大与稳定,因此为什么要引用更多东西呢?所以选择JavaDB吧.
首先,你需要启动JavaDB,打开Netbeans的服务窗口,里面有JavaDB的选项,右击,选择启动就可以了.
然后,修改你的数据源设置,我的development和test的数据源设置为:
driverClassName = "org.apache.derby.jdbc.ClientDriver" //dialect = org.hibernate.dialect.DerbyDialect dialect=net.sf.hibernate.dialect.DerbyDialect username="" password="" dbCreate = "create-drop" // one of 'create', 'create-drop','update' url = "jdbc:derby://localhost:1527/yourdbname;create=true" logSql = true
你可以按照你的需要进行修改.
修改完成后,运行$grails run-app,Grails应该可以自动帮你建数据库和数据表,如果你在BootStrap.groovy中定义了初始化数据,那么在数据库中应该也已经有了相应的数据.
最后,如果你想找一个管理工具 ,你可以直接在Netbeans的服务窗口中,右击Java DB(Network),输入localhost和你的数据库名,建立一个新的数据库连接,不需要用户名与密码,这样你就有了一个足够用的JavaDB的管理工具,OK,迁移完成.