sql-maven-plugin插件提供了sql脚本的执行功能,允许用户执行指定的sql脚本文件或语句。
最近在进行一个项目是基于maven管理的java开发项目,其中有一个环节要对数据库初始化创建表,需要在maven中执行,正好有机会学习了sql-maven-plugin的使用.
下面的maven脚本实现的功能就是在mysql数据库中执行指定的sql脚本(create_tables.sql)来创建表:
run-sql.xml
4.0.0
yourGroupId
yourArtifactId
maven-plugin
facelog-sql
org.codehaus.mojo
sql-maven-plugin
1.5
mysql
mysql-connector-java
5.1.43
com.mysql.jdbc.Driver
jdbc:mysql://localhost:3306/test
root
${project.basedir}/sql/create_tables.sql
运行方式如下:
# 因为上面的脚本我没有使用缺省的文件名pom.xml,所以maven执行的时候要用-f 指定文件名
mvn -f run-sql.xml sql:execute
定义多个独立执行的execution
上面的脚本可以一次性执行一个或多个sql脚本,如果我们希望每个脚本可以在命令行分别独立执行,那么就要定义多个execution来实现。
比如我们将删除表的语句和建表语句分成两个文件(clean_tables.sql,create_tables.sql),希望在命令行分别执行两个脚本,那么 上面脚本就修改成如下的样子:
4.0.0
net.gdface.facelog
facelog-sql
maven-plugin
facelog-sql
org.codehaus.mojo
sql-maven-plugin
1.5
mysql
mysql-connector-java
5.1.43
com.mysql.jdbc.Driver
jdbc:mysql://localhost:3306/test
root
clean-tables
${project.basedir}/sql/clean_tables.sql
create-tables
${project.basedir}/sql/create_tables.sql
命令行执行如下:
# 通过@execution-id的方式指定执行id为‘clean-tables’的execution
mvn -f run-sql.xml sql:execute@clean-tables
# 通过@execution-id的方式指定执行id为‘create-tables’的execution
mvn -f run-sql.xml sql:execute@create-tables
参考资料: