1)有没有办法让这个只是为每个数据库方言创建模式文件而不连接到数据库?
设置export
为false
。像这样的东西:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>hibernate3-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<components>
<component>
<name>hbm2ddl</name>
<implementation>annotationconfiguration</implementation>
</component>
</components>
<componentProperties>
<export>false</export><!-- do not export to the database -->
<drop>true</drop>
<configurationfile>src/main/resources/hibernate.cfg.xml</configurationfile>
<outputfilename>my_schema.ddl</outputfilename>
</componentProperties>
</configuration>
</plugin>
2)如果 hibernate3-maven-plug 坚持实际创建数据库模式,有没有办法让它在创建模式之前删除数据库并重新创建它?
往上看。但以防万一,将此设置update
为true
:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>hibernate3-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<components>
<component>
<name>hbm2ddl</name>
<implementation>annotationconfiguration</implementation>
</component>
</components>
<componentProperties>
<export>true</export>
<update>true</update><!-- update the schema -->
<drop>true</drop>
<configurationfile>src/main/resources/hibernate.cfg.xml</configurationfile>
<outputfilename>my_schema.ddl</outputfilename>
</componentProperties>
</configuration>
<dependencies>
<dependency>
<groupId>org.apache.derby</groupId>
<artifactId>derbyclient</artifactId>
<version>10.5.3.0_1</version>
</dependency>
</dependencies>
</plugin>
3)我认为每个开发人员(和 hudson 构建机器)都应该在每个数据库服务器上拥有自己独立的数据库。这是典型的吗?
是的,我认为这是一种最佳实践(请参阅每个开发人员使用一个数据库实例)。
4) 开发人员是否必须运行 Maven 三次……每个数据库供应商一次?如果是这样,我如何在构建机器上合并结果?
是的,很可能,我会为每个数据库使用配置文件。在构建机器上,我将构建一个矩阵项目。
5) hibernate3-maven-plugin 中有一个 hbm2doc 目标。运行 3 次似乎有点矫枉过正......我必须相信每个数据库几乎相同。
我不习惯这个工具,但我猜输出中可能会有一些小的变化(例如,使用主键生成)。我会为每个数据库生成模式文档,但仅在发布时(当然不需要在每次构建时运行它)。