cdbgen is an Maven 2 mojo that that uses Cayenne DataMap to drop and/or generate schema objects of a specified database. By default, it is bound to the pre-integration-test phase. Please see this guide to integration testing with maven2 for ideas of how tie this in with your existing test infrastructure.

Parameters (as XML elements)

Attribute Description Required
map DataMap XML file to use as a schema descriptor. Yes
adapter Java class name implementing org.apache.cayenne.dba.DbAdapter. While this attribute is optional (a generic JdbcAdapter is used if not set), it is highly recommended to specify correct target adapter. No (but strongly recommended)
driver A class of JDBC driver to use for the target database. Yes
url JDBC connection URL of a target database. Yes
username Database user name. No
password Database user password. No
dropTables Defines whether cdbgen should drop the tables before attempting to create new ones. Default is "No". No
dropPK Defines whether cdbgen should drop Cayenne primary key support objects. Default is "No". No
createTables Defines whether cdbgen should create new tables. Default is "Yes". No
createPK Defines whether cdbgen should create Cayenne-specific auto PK objects. Default is "Yes". No
createFK Defines whether cdbgen should create foreign key copnstraints. Default is "Yes". No

Examples

Load the Maven 2 plugin and configure the cdbgen mojo:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.cayenne.plugins</groupId>
      	    <artifactId>maven-cayenne-plugin</artifactId>
      	    <executions>
                <execution>
      		    <id>cdbgen</id>
      		    <configuration>
      			<!-- Configuration items go in here.  See table, above. -->
      		    </configuration>
      		    <goals>
      			<goal>cdbgen</goal>
      		    </goals>
      		</execution>
      	    </executions>
        </plugin>
    </plugins>
</build>

Here is an example of using cdbgen to create DB schema objects on a local HSQLDB database named "bookmarker" from a DataMap located in "main/resources/datamap.map.xml":

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.cayenne.plugins</groupId>
      	    <artifactId>maven-cayenne-plugin</artifactId>
      	    <executions>
                <execution>
      		    <id>cdbgen</id>
      		    <configuration>
      			<map>${project.build.sourceDirectory}/../resources/datamap.map.xml</map>
                        <adapter>org.apache.cayenne.dba.hsqldb.HSQLDBAdapter</adapter>
                        <driver>org.hsqldb.jdbcDriver</driver>
                        <url>jdbc:hsqldb:hsql://localhost/bookmarker</url>
                        <username>sa</username>
      		    </configuration>
      		    <goals>
      			<goal>cdbgen</goal>
      		    </goals>
      		</execution>
      	    </executions>
        </plugin>
    </plugins>
</build>