Использование jdbcdslog или log4jdbc с maven2 - PullRequest
2 голосов
/ 04 октября 2010

Я пытаюсь использовать jdbcdslog или log4jdbc с maven2.- Я хочу, чтобы войти все SQL, который выполняется mvn-sql.

Я установил jar-файлы slf4j-api (1.6.1), slf4j-log4j12 (1.6.1) и jdbcdslog (1.0.5) в локальный maven2-repo и настроил в моем файле pom.xml следующее:

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

Выполнение этого приводит к:

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

* 1009Та же ошибка возникает при использовании log4jdbc.Кто-нибудь мельком увидел эту проблему?

Спасибо и всего наилучшего, Ханно

1 Ответ

0 голосов
/ 05 октября 2010

Я не мог воспроизвести проблему.Со следующей конфигурацией (используя «простую» привязку):

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

Запуск mvn test просто работает

$ mvn test
[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Building Q3854037
[INFO]    task-segment: [test]
[INFO] ------------------------------------------------------------------------
...
[INFO] Executing commands
<b>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)</b>
[INFO] 1 of 1 SQL statements executed successfully
...

Конечно, я использую другую привязку SLF4J, но я неНе думаю, что это различие имеет значение (даже с привязкой для log4j я не смог воспроизвести NoClassDefFoundError).Может быть, проверьте, что ваш фляга SLF4J не повреждена (загрузите ее заново).Кстати, вам не хватает зависимости от log4j в качестве каркаса ведения журнала.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...