Простая настройка для maven hbm2ddl - PullRequest
1 голос
/ 09 сентября 2010

Я настраиваю maven для использования аннотированных классов Java и создания некоторого DDL, который варьируется в зависимости от базы данных. Есть лучший способ сделать это? Похоже, я должен быть в состоянии отфильтровать входные данные для плагина hbm2ddl (как часть конвейера), а не указывать ему работать с выходом фильтрации ресурсов (которую я затем должен отфильтровать из моего последнего jar).

Я фильтрую свой файл hibernate.cfg.xml для замены свойств среды на основе настроек локального разработчика:

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

Затем я запускаю hbm2ddl на выходе

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

Затем я должен отфильтровать файл hibernate.cfg.xml из моей рабочей банки, поскольку я не хочу отправлять что-либо, связанное с моей внутренней средой разработки.

1 Ответ

1 голос
/ 04 января 2011

У меня такая же проблема, и вот как я ее решил. У меня есть отдельный файл database.properties, в котором хранится информация о соединении, и я не фильтрую ни один из моих файлов XML.

Этот отдельный файл database.properties фильтруется, но, поскольку он является тестовым ресурсом, расположенным в /src/main/test, он не помещается в конечный артефакт. Затем я говорю hbm2ddl, где его найти, следующим образом:

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

Надеюсь, это все равно поможет ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...