hibernate3-maven: драйвер JDBC не найден в дочернем проекте при компиляции из родительского проекта
Проблема: 12:03:10,126 ОШИБКА org.hibernate.tool.hbm2ddl.SchemaExport - неудачный экспорт схемы org.hibernate.HibernateException: класс драйвера JDBC не найден: com.mysql.jdbc.Driver
У меня есть проект, разделенный на модули: ParentProject и ChildModule. Когда я пытаюсь скомпилировать pom.xml ChildModule, все работает нормально, maven успешно подключается к базе данных и создает таблицы. Однако при компиляции из ParentProject я получил ошибку, упомянутую выше (при выполнении hbm2ddl). Есть идеи, в чем проблема?
Вот мои файлы pom.xml:
ParentProject pom.xml:
<project ... >
<build>
<plugins>
<plugin>
<!-- JDK version used to compile project -->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.0.2</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>hibernate3-maven-plugin</artifactId>
<version>2.2</version>
</plugin>
</plugins>
</build>
<repositories>
<repository>
<id>JBOSS</id>
<name>JBoss Repository</name>
<url>http://repository.jboss.org/maven2/</url>
</repository>
<repository>
<id>Codehaus Snapshots</id>
<url>http://snapshots.repository.codehaus.org/</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
<releases>
<enabled>false</enabled>
</releases>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>Codehaus Snapshots</id>
<url>http://snapshots.repository.codehaus.org/</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
<releases>
<enabled>true</enabled>
</releases>
</pluginRepository>
</pluginRepositories>
<dependencyManagement>
<dependencies>
...
</dependencies>
</dependencyManagement>
<modules>
<module>../ChildModule</module>
</modules>
</project>
ChildModule pom.xml:
<project ... >
<parent>
<groupId>com.somepackage</groupId>
<artifactId>ChildModule</artifactId>
<version>0.1</version>
<relativePath>../ParentProject/pom.xml</relativePath>
</parent>
...
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.1</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>hibernate3-maven-plugin</artifactId>
<executions>
<execution>
<id>generate-entities</id>
<phase>generate-sources</phase>
<goals>
<goal>hbm2java</goal>
</goals>
<configuration>
<components>
<component>
<name>hbm2java</name>
<implementation>configuration</implementation>
<outputDirectory>${generated-source-dir}</outputDirectory>
</component>
</components>
<componentProperties>
<configurationFile>src/main/resources/hibernate.cfg.xml</configurationFile>
<jdk5>true</jdk5>
</componentProperties>
</configuration>
</execution>
<execution>
<id>generate-schema</id>
<phase>process-classes</phase>
<goals>
<goal>hbm2ddl</goal>
</goals>
<configuration>
<componentProperties>
<outputfilename>schema.ddl</outputfilename>
<drop>true</drop>
<ejb3>false</ejb3>
</componentProperties>
</configuration>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.17</version>
</dependency>
<dependency>
<groupId>cglib</groupId>
<artifactId>cglib-nodep</artifactId>
<version>2.2.2</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
<dependencies>
...
</dependencies>
<properties>
<generated-source-dir>generated-sources/hibernate3</generated-source-dir>
<generated-resource-dir>generated-resources/hibernate3</generated-resource-dir>
</properties>
</project>
1 ответ
Решение
Плагин вашего родителя не имеет зависимости от mysql-connector-java
, который ребенок имеет. Я предлагаю добавить (или даже переместить) эти зависимости в плагин родителя.