Re: How do I put the postgresql driver(jar) where maven can find it. (Working now)
Martin Tilsted <[email protected]>
| Newsgroups | gmane.comp.jakarta.turbine.torque.user |
|---|---|
| Message-ID | <[email protected]> |
Oh, and I got it working now. I should have had a project.xml file, but I somehow forgot to include it from my previous project using torque, and then I forgot I used to have a project.xml file. DOH! Well, I added my template project.xml file, and then added the dependency for postgresql to that, and now the driver is loading correct. Thanks for all the help Martin Martin Tilsted wrote: > Thomas Vandahl wrote: >> Martin Tilsted wrote: >> >>> java.lang.ClassNotFoundException: org.postgresql.Driver >>> >> >> Maven should have setup a repository where it downloads all kinds of >> dependencies. Normally this is ~/.maven/repository. You will need to add >> a dependency entry to your project.xml like in >> >> ---8<--- >> <dependency> >> <groupId>postgresql</groupId> >> <artifactId>postgresql</artifactId> >> <version>8.3-603.jdbc4</version> >> </dependency> >> ---8<--- >> >> > My ~/.maven/repository only contains jar files but I do have a > ~/.maven/cache/maven-torque-plugin-3.3/project.xml > which is the only project.xml file I could find that have anything to > do with torque. > > I added the xml code from above to project.xml, and it did download > the postgresql.jar file, and when running > maven -X torque:jdbc > i get > adding dependency > /home/tiller/.maven/repository/postgresql/jars/postgresql-8.3-603.jdbc4.jar > into project classloader > But I still get the > class not found exception. > Full stacktrace: > Errors stack : > > >> Unable to obtain goal [torque:jdbc] > >> File...... > file:/home/tiller/.maven/cache/maven-torque-plugin-3.3/plugin.jelly > >> Element... torque-jdbc-transform > >> Line...... 522 > >> Column.... 7 > >> java.lang.ClassNotFoundException: org.postgresql.Driver > >> org.postgresql.Driver > > Exception stack traces : > org.apache.maven.werkz.UnattainableGoalException: Unable to obtain > goal [torque:jdbc] > at org.apache.maven.werkz.Goal.fire(Goal.java:698) > at org.apache.maven.werkz.Goal.attain(Goal.java:623) > at > org.apache.maven.plugin.PluginManager.attainGoals(PluginManager.java:712) > at > org.apache.maven.MavenSession.attainGoals(MavenSession.java:265) > at org.apache.maven.cli.App.doMain(App.java:307) > at org.apache.maven.cli.App.main(App.java:217) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) > > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) > > at java.lang.reflect.Method.invoke(Method.java:597) > at com.werken.forehead.Forehead.run(Forehead.java:551) > at com.werken.forehead.Forehead.main(Forehead.java:581) > Caused by: org.apache.commons.jelly.JellyTagException: > file:/home/tiller/.maven/cache/maven-torque-plugin-3.3/plugin.jelly:522:7: > <torque-jdbc-transform> java.lang.ClassNotFoundException: > org.postgresql.Driver > at > org.apache.commons.jelly.impl.TagScript.handleException(TagScript.java:681) > > at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:262) > at > org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95) > at > org.apache.maven.jelly.tags.werkz.MavenGoalTag.runBodyTag(MavenGoalTag.java:83) > > at > org.apache.maven.jelly.tags.werkz.MavenGoalTag$MavenGoalAction.performAction(MavenGoalTag.java:116) > > at org.apache.maven.werkz.Goal.fire(Goal.java:691) > ... 11 more > Caused by: java.lang.ClassNotFoundException: org.postgresql.Driver > at > org.apache.torque.task.TorqueJDBCTransformTask.execute(TorqueJDBCTransformTask.java:171) > > at org.apache.tools.ant.Task.perform(Task.java:364) > at org.apache.commons.jelly.tags.ant.AntTag.doTag(AntTag.java:195) > at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:250) > ... 15 more > Caused by: java.lang.ClassNotFoundException: org.postgresql.Driver > at > org.apache.tools.ant.AntClassLoader.findClassInComponents(AntClassLoader.java:1166) > > at > org.apache.tools.ant.AntClassLoader.findClass(AntClassLoader.java:1107) > at > org.apache.tools.ant.AntClassLoader.loadClass(AntClassLoader.java:977) > at java.lang.ClassLoader.loadClass(ClassLoader.java:252) > at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320) > at java.lang.Class.forName0(Native Method) > at java.lang.Class.forName(Class.java:169) > at > org.apache.torque.task.TorqueJDBCTransformTask.generateXML(TorqueJDBCTransformTask.java:184) > > at > org.apache.torque.task.TorqueJDBCTransformTask.execute(TorqueJDBCTransformTask.java:161) > > ... 18 more > > ------------------- And my build.properties in case that should matter > ------- > maven.compile.source = 1.6 > maven.compile.target = 1.6 > maven.compile.debug = on > maven.compile.optimize = off > maven.compile.deprecation = off > maven.compile.encoding = UTF-8 > maven.compile.source = 1.6 > maven.compile.target = 1.6 > > #Torque setup > torque.project=test > torque.java.dir = src > torque.sql.dir = src/sql > torque.output.dir = src/sql > torque.schema.dir = src/schema > torque.contextProperties = build.properties > > torque.addSaveMethod = true > torque.runOnlyOnSchemaChange = true > torque.saveException = Exception > torque.addIntakeRetrievable = true > torque.retrievableInterface = org.apache.turbine.om.Retrievable > > # > # Initial ID values for the ID_TABLE > # > initialID = 1100 > initialIDValue = 100 > initialIDStep = 10 > > torque.database=postgresql > > torque.targetPackage=test.auto > torque.basePrefix=Base > torque.base = Base > > torque.database.driver=org.postgresql.Driver > > torque.database.url = jdbc:postgresql://127.0.0.1:5432/test > torque.database.user=test > torque.database.host=localhost > ------------ CONFIG END ---------- > >> This version is available in the central repository so you will not need >> to download it yourself. >> >> >>> An other thing is: I removed my .maven and then did a >>> maven torque:jdbc >>> which result in the file >>> ./cache/maven-torque-plugin-3.3-RC2 >>> But torque-3.3 have been released, so why does it fetch the old RC2 >>> file? >>> >> >> Well, this depends on the entries in your project.xml. Find the >> dependency on maven-torque-plugin and change the version to 3.3. I >> recommend to delete the 3.3-RC2-version from the cache first. >> > Just for the reference in case someone need this. > > What I did not understand was that if I delete ~/.maven and I don't > have any project.xml file(I don't) how did > maven know what to do with maven torque:jdbc and why did it download > the RC2 version. > > The answer is that maven caches files it download in > /usr/local/maven-1.1/plugins and I had for a long time ago downloaded > the rc2 version, so it just used that because I had not added an > other torque file to maven. > > So my solution was simply to do a reinstall of my /usr/local/maven and > then do a > > maven plugin:download -DartifactId=maven-torque-plugin > -DgroupId=torque -Dversion=3.3 > > > To get the correct new version of torque. > > Martin > > > > > > > >