Domanda

Io sono la creazione di Maven per prendere le classi Java annotate e produrre alcuni DDL che varia a seconda del database. C'è un modo migliore per fare questo? Sembra che dovrei essere in grado di filtrare l'ingresso al plugin hbm2ddl (come parte di una pipeline), piuttosto che dire di operare sull'uscita di risorsa di filtraggio (che ho poi deve filtrare dal mio vaso finale).

sto filtraggio mio file hibernate.cfg.xml di sostituire proprietà dell'ambiente basate sulla messa a punto dello sviluppatore locale:

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

Poi ho eseguito hbm2ddl sull'uscita

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

Ho poi devo filtrare la hibernate.cfg.xml dal mio vaso di produzione dal momento che non voglio spedire tutto ciò che riguarda il mio ambiente dev interno.

È stato utile?

Soluzione

Ho questo stesso problema e ecco come ho risolto. Io uso avere un file database.properties separati che contiene i dettagli di connessione e non filtrare nessuno dei miei file XML.

Questo file database.properties separate viene filtrato, ma dal momento che si tratta di un test risorsa che si trova in /src/main/test non ottiene messo nel manufatto finale. Ho poi dico hbm2ddl dove trovarlo nel seguente modo:

            <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>

La speranza aiuta comunque ....

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top