使用 Maven 填充数据库
Posted
技术标签:
【中文标题】使用 Maven 填充数据库【英文标题】:Populating DB with Maven 【发布时间】:2013-12-03 09:14:50 【问题描述】:假设我在 Maven 中的标准配置是:
编译、测试和打包 - 做他们正常的事情 预集成测试: 生成数据库架构脚本(maven-antrun-plugin with concat) 在 DB (sql-maven-plugin) 上运行这些脚本 运行自定义 Java 程序以使用数据填充 DB(exec 或 antrun) 从 jar 启动服务器(maven-antrun-plugin,因为 exec 不会分叉) 集成测试:使用从 jar 运行的服务器运行测试 集成后测试:停止服务器 (exec)使用正常的执行路径,它工作得很好(Maven 插件排序中的模错误,除此之外)。
现在,我想要一个命令只生成和执行 DB 模式脚本,另一个命令只运行 Java 程序来填充数据库。
到目前为止,我认为我可以将 install-schema、populate-db 和 start-jetty 放在他们自己的配置文件中,然后:
mvn pre-integration-test -Pinstall-schema
这很糟糕,因为它仍然会运行前面的所有阶段,我真的不想为它编译、测试和打包。
是否有可能以某种方式独立运行这些“东西”(几个插件执行、一个配置文件),忽略生命周期或跳过编译测试包?
【问题讨论】:
【参考方案1】:是的,我认为您可以通过 Maven 配置文件的某些属性进行条件激活,例如:
<profile>
<id>install-schema</id>
<activation>
<property>doItPlz</property>
</activation>
</profile>
...
只有当给定的doItPlz
属性存在时才会激活配置文件——因此您可以为构建、数据库初始化等创建一个。
然后你必须使用的命令被修改为:
mvn -DdoItPlz ...
希望能有所帮助。
【讨论】:
问题不是“如何在条件下运行配置文件”,而是“如何运行仅这个配置文件,完全忽略生命周期,跳过编译、测试、打包和其他我不需要的东西”。 我不知道您有多少个人资料,但如果您为每个人分配一个属性,难道不能解决您的问题吗?这样您就可以指定要运行的配置文件。以上是关于使用 Maven 填充数据库的主要内容,如果未能解决你的问题,请参考以下文章