2012-03-29 8 views
5

Tôi đã sử dụng plugin tomcat7-maven. Tôi muốn chạy ứng dụng web của tôi kết nối với cơ sở dữ liệu PostgreSQL bằng cách sử dụng tomcat được nhúng. Đây là phần có liên quan của tập tin POM của tôi: tomcat7-maven-plugin extraDependency dường như không được tải

<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> 

Thi tomcat7: chạy không thành công với

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 

Các phụ thuộc chính nó là đúng (http://repo1.maven.org /maven2/postgresql/postgresql/8.4-701.jdbc4/).

Tôi sử dụng Maven 3.

Trả lời

13

Tham số extraDependencies không dành cho mojo chạy :-). Xem thông số tại đây: http://tomcat.apache.org/maven-plugin-2.0-SNAPSHOT/tomcat7-maven-plugin/run-mojo.html. Thông số này dành cho mục đích thực hiện chiến tranh http://tomcat.apache.org/maven-plugin-2.0-SNAPSHOT/executable-war-jar.html. Để thêm tài xế jdbc của bạn chỉ cần làm:

<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 :-)

+0

Rõ ràng là giải pháp đơn giản nhất là khó khăn nhất để được nhìn thấy, thanks a lot! :) –

+0

Btw điều này có vẻ là làm việc cho đến khi phát hành 2.0 (bao gồm). Trong 2.1 và 2.2 không có cách nào để thêm phụ thuộc như vậy, nó không hoạt động. – lisak

+0

@Sloin Tôi có thể hỏi bạn liệu bạn có thể xây dựng trên nó-chỉ-không-làm việc không? Tôi có thể khởi động 'mvn clean install tomcat7: run' trên phiên bản 2.2. – Stephane