gradle集成ant的HibernateToolTask

好的工具可以使工作效率成倍提高。通过编写hbm.xml使用HibernateTool来生成java代码和sql脚本,以及配合hibernate的hbm2ddl.auto的配置,在项目初期,给工作带来很大的方便。

gradle可以集成ant的task,通过hbm.xml生成java类的task可以定义成如下:

task "codegen" << {
	ant.taskdef(name:'hibernatetool',
		classname:'org.hibernate.tool.ant.HibernateToolTask',
		classpath:configurations.compile.asPath)	
	ant.hibernatetool(destdir:"src/main/java"){
		configuration{
			fileset(dir:"src/main/resources"){
				include(name:'**/*.hbm.xml')
			}
		}
		hbm2java(jdk5:true)
	}
}

生成sql脚本的任务需要配置数据库连接,我使用了hibernate.cfg.xml。直觉告诉我应该可以抛开配置用groovy构建一个configuration,可惜我还不会。

task "schema"(dependsOn:processResources) <<{
	ant.taskdef(name:'hibernatetool',
		classname:'org.hibernate.tool.ant.HibernateToolTask',
		classpath:configurations.compile.asPath)
	ant.hibernatetool(destdir:"$sourceSets.main.output.resourcesDir"){
			annotationconfiguration(configurationfile:"$sourceSets.main.output.resourcesDir\\hibernate.cfg.xml")
			hbm2ddl(drop:"yes",outputfilename: 'schema.sql')
			classpath {
				pathelement( path:"$sourceSets.main.output.resourcesDir")
			}
		}
}

如果使用hsqldb,则只需要引入hsqldb的jar就行了,环境依赖少了,做dao层的单元测试很好用。不过因为程序运行的时候hsqldb的文件会被锁住,运行时就没有办法通过管理工具查看数据了。

task "hsqlMgnt" << {
	"java -classpath ${configurations.compile.asPath} org.hsqldb.util.DatabaseManager -driver org.hsqldb.jdbcDriver -url jdbc:hsqldb:data/data -user sa".execute()
}


你可能感兴趣的:(gradle集成ant的HibernateToolTask)