X-Git-Url: https://juplo.de/gitweb/?p=hibernate4-maven-plugin;a=blobdiff_plain;f=src%2Fsite%2Fapt%2Fpitfalls.apt;fp=src%2Fsite%2Fapt%2Fpitfalls.apt;h=5bbbff126e548669147a8eea55ab7c874bacb57a;hp=0000000000000000000000000000000000000000;hb=4b507b15b0122ac180e44b8418db8d9143ae9c3a;hpb=65bbbdbaa7df1edcc92a3869122ff06a3895fe57 diff --git a/src/site/apt/pitfalls.apt b/src/site/apt/pitfalls.apt new file mode 100644 index 00000000..5bbbff12 --- /dev/null +++ b/src/site/apt/pitfalls.apt @@ -0,0 +1,97 @@ +Known Pitfalls + +* Dependency for driver-class XYZ is missing + + One regular problem is the scope of the jdbc-driver-dependency. + It is very unlikely, that this dependency is needed at compile-time. + So a tidy maven-developer would usually scope it for <<>>. + + But this will break the execution of the <<>>. + Since it will not be able to see the needed dependency, it will fail with + an error-message like: + +--------------- +[INFO] Gathered hibernate-configuration (turn on debugging for details): +[INFO] hibernate.connection.username = sa +[INFO] hibernate.connection.password = +[INFO] hibernate.dialect = org.hibernate.dialect.HSQLDialect +[INFO] hibernate.connection.url = jdbc:hsqldb:/home/kai/mmf/target/mmf;shutdown=true +[INFO] hibernate.connection.driver_class = org.hsqldb.jdbcDriver +[ERROR] Dependency for driver-class org.hsqldb.jdbcDriver is missing! +[INFO] ------------------------------------------------------------------------ +[ERROR] BUILD ERROR +[INFO] ------------------------------------------------------------------------ +[INFO] org.hsqldb.jdbcDriver +[INFO] ------------------------------------------------------------------------ +[INFO] For more information, run Maven with the -e switch +[INFO] ------------------------------------------------------------------------ +[INFO] Total time: 2 seconds +[INFO] Finished at: Thu Nov 29 11:31:14 CET 2012 +[INFO] Final Memory: 32M/342M +[INFO] ------------------------------------------------------------------------ +--------------- + + A quick workaround for this error would be, to delete the runtime-constraint + for the jdbc-driver-dependency. + + A much cleaner way is, to (additionally) ad the dependency, to the + plugin-definition: + +--------------- + + de.juplo + hibernate4-maven-plugin + ${project.version} + + + + export + + + + + + org.hsqldb + hsqldb + 2.2.8 + + + +--------------- + + This is also the best way, if you use a different jdbc-driver for + testing, than in production. + Because otherwise, this dependency will unnecessarily bloat the + runtime-dependencies of your project. + +* DBUnit {fails} after execution of hibernate4 was skipped because nothing has changed + + If hibernate4-maven-plugin skips its excecution, this may lead to errors in + other plugins. + For example, when importing sample-data in the automatically created database + with the help of the {{{http://mojo.codehaus.org/dbunit-maven-plugin/}dbunit-plugin}}, + the <<>>-operation may fail because of foreign-key-constraints, + if the database was not recreated, because the hibernate4-maven-plugin has + skipped its excecution. + + A quick fix to this problem is, to {{{./force.html}force}} + hibernate4-maven-plugin to export the schema every time it is running. + But to recreate the database on every testrun may noticeable slow down your + development cycle, if you have to wait for slow IO. + + To circumvent this problem, hibernate4-maven-plugin signals a skipped + excecution by setting the maven property <<<${hibernate.export.skipped}>>> to + <<>>. + You can configure other plugins to react on this signal. + For example, the dbunit-plugin can be configured to skip its excecution, if + hibernate4-maven-plugin was skipped like this: + +------------ + + org.codehaus.mojo + dbunit-maven-plugin + + ${hibernate.export.skipped} + + +------------