В первый раз, когда я построил свой проект, я уже знал, что сойду с ума, если он не перестанет делать что-то дважды, и теперь пришло время. Я еще не нашел решения, или, может быть, я просто не знаю, как искать эту проблему.
У меня есть несколько файлов hbm.xml, которые обрабатываются в процессе сборки. Прежде всего, вы можете посмотреть на ту часть моего pom.xml, которая должна помочь.
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>hibernate3-maven-plugin</artifactId>
<version>2.2</version>
<executions>
<execution>
<id>generate-xml-files</id>
<phase>generate-resources</phase>
<goals>
<goal>hbm2cfgxml</goal>
</goals>
</execution>
<execution>
<id>generate-entities</id>
<phase>generate-resources</phase>
<goals>
<goal>hbm2java</goal>
</goals>
</execution>
<execution>
<id>generate-schema</id>
<phase>compile</phase>
<goals>
<goal>hbm2ddl</goal>
</goals>
</execution>
</executions>
<configuration>
<components>
<component>
<name>hbm2cfgxml</name>
<implementation>configuration</implementation>
<outputDirectory>target/classes</outputDirectory>
</component>
<component>
<name>hbm2java</name>
<implementation>configuration</implementation>
<outputDirectory>src/main/java</outputDirectory>
</component>
<component>
<name>hbm2ddl</name>
<implementation>configuration</implementation>
<outputDirectory>target/classes</outputDirectory>
</component>
</components>
<componentProperties>
<jdk5>true</jdk5>
<packagename>com.blazebit.web.cms.core.model</packagename>
<propertyfile>src/main/resources/database.properties</propertyfile>
<configurationfile>target/classes/hibernate.cfg.xml</configurationfile>
<!-- Tells the plugin to send the output to a file -->
<outputfilename>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>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.0.8</version>
</dependency>
<dependency>
<groupId>cglib</groupId>
<artifactId>cglib-nodep</artifactId>
<version>2.1_3</version>
</dependency>
</dependencies>
</plugin>
<plugin>
<groupId>com.blazebit</groupId>
<artifactId>HibernateCfgBuilder</artifactId>
<version>1.0</version>
<executions>
<execution>
<id>HibernateCfgBuilder</id>
<phase>generate-sources</phase>
<goals>
<goal>HibernateCfgBuilder</goal>
</goals>
</execution>
</executions>
<configuration>
<hbmXmlFilesDir>src/main/resources/com/blazebit/web/cms/core/model/</hbmXmlFilesDir>
<configFile>target/classes/hibernate.cfg.xml</configFile>
<packageName>com.blazebit.web.cms.core.model</packageName>
</configuration>
</plugin>
Теперь позвольте мне объяснить, что все это должно делать.
- Во-первых, hbm2cfg, я думаю, он должен создать hibernate.cfg.xml
- Второй шаг - это мой собственный плагин, который добавляет пути к файлам hbm.xml в hibernate.cfg.xml (не смог найти другие решения для этой проблемы)
- Третий шаг - это hbm2java, который должен сгенерировать java-файлы в моем каталоге исходных кодов
- И, наконец, hbm2ddl должен создать schema.sql для этой модели в classpath
Звучит довольно просто? Это даже работает, но, кажется, что-то делает дважды или даже чаще, и теперь моя сборка занимает около 2 минут, что меня раздражает: /
Кто-нибудь может дать мне совет, что я могу изменить, чтобы эти шаги работали?