Pregunta

Yo soy la creación de experto para tomar clases Java anotadas y producir algunos DDL que varía dependiendo de la base de datos. ¿Hay una mejor manera de hacer esto? Parece como si tuviera que ser capaz de filtrar la entrada al plugin hbm2ddl (como parte de una tubería) en lugar de decir que para operar en la salida de recursos de filtración (que luego deben filtrar fuera de mi tarro de final).

estoy filtrando mi archivo hibernate.cfg.xml a propiedades de entorno sustitutos en base a la configuración del promotor local:

  <build>
    <filters>
      <filter>${user.home}/datamodel-build.properties</filter>
    </filters>
    <resources><resource>
        <directory>src/main/resources</directory>
        <filtering>true</filtering>
    </resource></resources>
  </build>

Luego ejecutar hbm2ddl en la salida

<plugin>
 <groupId>org.codehaus.mojo</groupId>
 <artifactId>hibernate3-maven-plugin</artifactId>
  ...
 <configuration>
   <componentProperties>
   <configurationfile>target/classes/com/myOrg/datamodel/hibernate.cfg.xml</configurationfile>
</plugin>

Entonces hay que filtrar el hibernate.cfg.xml de mi tarro de la producción ya que no quiere enviar todo lo relacionado con mi entorno de desarrollo interno.

¿Fue útil?

Solución

tiene este mismo problema y aquí es cómo lo resolví. Puedo utilizar un archivo separado database.properties que contiene los detalles de la conexión y no filtrar cualquiera de mis archivos XML.

Este archivo database.properties separado se filtra, pero ya que es un test recurso ubicado en /src/main/test No puede ser puesto en el artefacto final. entonces yo digo hbm2ddl dónde encontrar la siguiente manera:

            <configuration>
                <components>
                    <component>
                        <name>hbm2ddl</name>
                        <implementation>jpaconfiguration</implementation>
                    </component>
                </components>
                <componentProperties>
                    <propertyfile>src/test/resources/database.properties</propertyfile>
                    <!-- Gives the name of the persistence unit as defined in persistence.xml -->
                    <persistenceunit>myapp-core</persistenceunit>
                    <!-- Tells the plugin to send the output to a file -->
                    <outputfilename>create-${database.vendor}-schema.sql</outputfilename>
                    <!-- Pretty Format SQL Code -->
                    <format>true</format>
                    <!-- Do not create tables automatically - other plug-ins will handle that -->
                    <export>false</export>
                    <!-- Do not print the DDL to the console -->
                    <console>false</console>
                </componentProperties>
            </configuration>

creo que sirve de todos modos ....

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top