2010-10-04 6 views
2

J'essaie d'utiliser jdbcdslog ou log4jdbc avec maven2. - Je veux enregistrer tout SQL qui est exécuté par mvn-sql.Utilisation de jdbcdslog ou log4jdbc avec maven2

J'ai installé slf4j-api (1.6.1), slf4j-log4j12 (1.6.1) et jdbcdslog (1.0.5) Jars à mon maven2-repo local et configuré dans mon pom.xml les éléments suivants:

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>sql-maven-plugin</artifactId> 
    <version>1.3</version> 
    <dependencies> 
    <dependency> 
     <groupId>jdbcdslog</groupId> 
     <artifactId>jdbcdslog</artifactId> 
     <version>1.0.5</version> 
    </dependency> 
    <dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>slf4j-api</artifactId> 
     <version>1.6.1</version> 
    </dependency> 
    <dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>slf4j-log4j12</artifactId> 
     <version>1.6.1</version> 
    </dependency> 
    <dependency> 
     <groupId>com.oracle</groupId> 
     <artifactId>ojdbc14</artifactId> 
     <version>9.0.2.0.0</version> 
    </dependency> 
    </dependencies> 

    <configuration> 
    <driver>org.jdbcdslog.DriverLoggingProxy</driver> 
    </configuration> 

    <executions> 
    <execution> 
     ... 
     <configuration> <url>jdbc:jdbcdslog:oracle:thin:@myurl.com:1521:TEST;targetDriver=oracle.jdbc.driver.OracleDriver</url> 
     ... 
     </configuration> 
    </execution>      
    </executions> 
</plugin> 

L'exécution de ce conduit:

java.lang.NoClassDefFoundError:. org/slf4j/LoggerFactory à org.jdbcdslog.DriverLoggingProxy (DriverLoggingProxy.java:16)

erreur se produit en utilisant la même log4jdbc. Quelqu'un at-il un aperçu de ce problème?

Merci & salutations les, Hanno

Répondre

0

je ne pouvais pas reproduire le problème. Avec la configuration suivante (en utilisant la « simple » de liaison):

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>sql-maven-plugin</artifactId> 
    <version>1.3</version> 
    <dependencies> 
     <dependency> 
     <groupId>jdbcdslog</groupId> 
     <artifactId>jdbcdslog</artifactId> 
     <version>1.0.5</version> 
     </dependency> 
     <dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>slf4j-api</artifactId> 
     <version>1.6.1</version> 
     </dependency> 
     <dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>slf4j-simple</artifactId> 
     <version>1.6.1</version> 
     </dependency> 
     <dependency> 
     <groupId>org.apache.derby</groupId> 
     <artifactId>derbyclient</artifactId> 
     <version>10.5.3.0_1</version> 
     </dependency> 
    </dependencies> 
    <configuration> 
     <driver>org.jdbcdslog.DriverLoggingProxy</driver> 
     <url>jdbc:jdbcdslog:derby://localhost:1527/Q3854037-1.0-SNAPSHOT;targetDriver=org.apache.derby.jdbc.ClientDriver</url> 
     <username>APP</username> 
     <password>APP</password> 
    </configuration> 
    <executions> 
     <execution> 
     <id>drop-db-before-test-if-any</id> 
     <phase>process-test-resources</phase> 
     <goals> 
      <goal>execute</goal> 
     </goals> 
     <configuration> 
      <autocommit>true</autocommit> 
      <sqlCommand>select * from FOO</sqlCommand> 
      <!-- ignore error when database is not avaiable --> 
      <onError>continue</onError> 
     </configuration> 
     </execution> 
    </executions> 
    </plugin> 

L'exécution mvn test fonctionne juste

 
$ mvn test 
[INFO] Scanning for projects... 
[INFO] ------------------------------------------------------------------------ 
[INFO] Building Q3854037 
[INFO] task-segment: [test] 
[INFO] ------------------------------------------------------------------------ 
... 
[INFO] Executing commands 
821 [main] INFO org.jdbcdslog.StatementLogger - java.sql.Statement.execute select * from FOO 100 ms. at org.codehaus.mojo.sql.SqlExecMojo.execSQL(SqlExecMojo.java:815) 
[INFO] 1 of 1 SQL statements executed successfully 
... 

Bien sûr, je suis en utilisant un autre SLF4J contraignant, mais je ne pense pas que cette différence est pertinente (même avec la liaison pour log4j, je ne pouvais pas reproduire le NoClassDefFoundError). Peut-être vérifiez que votre pot SLF4J n'est pas corrompu (re-téléchargez-le). En passant, vous manquez une dépendance sur log4j comme cadre de journalisation.

Questions connexes