Простая настройка для Maven HBM2DDL
Вопрос
Я устанавливаю Maven, чтобы принять аннотированные классы Java и создавать какой-то DDL, который варьируется в зависимости от базы данных. Есть лучший способ сделать это? Похоже, что я должен быть в состоянии отфильтровать вход в плагин HBM2DDDL (как часть трубопровода), а не сообщите ему, чтобы работать на выходе от фильтрации ресурсов (который я должен отфильтровать из моей последней банки).
Я фильтрую свой файл 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 из моей производственной банки, так как я не хочу отправлять что-либо, связанное с моей внутренней средой Dev.
Решение
У меня та же проблема, а вот как я ее решил. У меня есть отдельная база данных. Properties файл, который содержит данные соединения, и я не фильтрую никаких моих файлов XML.
Эта отдельная база данных. Проверьте файл отфильтрованы, но так как это тестовое задание Ресурс находится в /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>
Надеюсь, это поможет в любом случае ....