Hibernate3 Maven плагин неверная конфигурация? - PullRequest
1 голос
/ 05 июля 2011

В первый раз, когда я построил свой проект, я уже знал, что сойду с ума, если он не перестанет делать что-то дважды, и теперь пришло время. Я еще не нашел решения, или, может быть, я просто не знаю, как искать эту проблему.

У меня есть несколько файлов 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 минут, что меня раздражает: / Кто-нибудь может дать мне совет, что я могу изменить, чтобы эти шаги работали?

1 Ответ

1 голос
/ 06 июля 2011

Я думаю, что это вызывает некоторые цели дважды, потому что некоторые из hibernate3-maven-plugin цели "Вызывает выполнение генерируемых ресурсов фазы жизненного цикла перед выполнением себя", как описано в документации . Я также столкнулся с этой проблемой, и если она действительно вас раздражает, поэтому я предлагаю попробовать назвать их целями Ant из maven-antrun-plugin (но я не проверяю это).

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