Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

tomcat7-maven-plugin extraDependency seems not being loaded

I've been using tomcat7-maven-plugin. I want to run my webapp which connects to the PostgreSQL database by using the embedded tomcat. This is the related part of my POM file:

<plugin>
    <groupId>org.apache.tomcat.maven</groupId>
    <artifactId>tomcat7-maven-plugin</artifactId>
    <version>2.0-SNAPSHOT</version>
    <executions>
        <execution>
            <id>tomcat-run</id>
            <goals>
                <goal>exec-war-only</goal>
            </goals>
            <phase>package</phase>
            <configuration>
                <path>/</path>
                <attachArtifactClassifierType>war</attachArtifactClassifierType>
                <enableNaming>true</enableNaming>
                <extraDependencies>
                    <extraDependency>
                        <groupId>postgresql</groupId>
                        <artifactId>postgresql</artifactId>
                        <version>8.4-701.jdbc4</version>
                    </extraDependency>
                </extraDependencies>
            </configuration>
       </execution>
   </executions>

Executing tomcat7:run fails with

Caused by: java.lang.ClassNotFoundException: org.postgresql.Driver
at org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy.loadClass(SelfFirstStrategy.java:50)
at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:244)
at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:230)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:247)
at org.apache.tomcat.jdbc.pool.PooledConnection.connectUsingDriver(PooledConnection.java:236)
... 29 more

The dependency itself is correct (http://repo1.maven.org/maven2/postgresql/postgresql/8.4-701.jdbc4/).

I use Maven 3.

like image 859
Zdenek F Avatar asked Mar 29 '12 15:03

Zdenek F


People also ask

What is tomcat7 Maven plugin?

The Tomcat7 Maven Plugin provides goals to manipulate WAR projects within the Tomcat servlet container version 7.x.

Does Maven use Tomcat?

Yes, this is really possible and is very easy to handle through the use of powerful tool “Maven“. Maven provides a graceful plugin called tomcat7-maven-plugin through which the Tomcat Web Server can be embedded seamlessly into a Maven project.


1 Answers

The parameter extraDependencies is not for the run mojo :-). See parameters here: http://tomcat.apache.org/maven-plugin-2.0-SNAPSHOT/tomcat7-maven-plugin/run-mojo.html. This parameter is for exec-war see purpose http://tomcat.apache.org/maven-plugin-2.0-SNAPSHOT/executable-war-jar.html. To add your jdbc driver simply do:

<plugin>
    <groupId>org.apache.tomcat.maven</groupId>
    <artifactId>tomcat7-maven-plugin</artifactId>
    <version>2.0-SNAPSHOT</version>
    <dependencies>
      <dependency>
       <groupId>postgresql</groupId>
       <artifactId>postgresql</artifactId>
       <version>8.4-701.jdbc4</version>
      </dependency>
    </dependencies>
</plugin>

HTH :-)

like image 156
Olivier Lamy Avatar answered Oct 12 '22 22:10

Olivier Lamy