Re: How do I put the postgresql driver(jar) where maven can find it.

Martin Tilsted <[email protected]>
Newsgroups gmane.comp.jakarta.turbine.torque.user
Message-ID <[email protected]>
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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.