Настройка плагина maven для использования QueryDSL с базой данных MySQL - PullRequest
2 голосов
/ 01 марта 2011

Я пытаюсь настроить свой проект так, чтобы я мог использовать querydsl-sql для базы данных MySQL.Я хотел бы получить классы и сгенерировать классы, используя maven, и у меня возникли проблемы с настройкой плагина.

Я пытался настроить pom.xml из примера здесь

<plugin>
    <groupId>com.mysema.querydsl</groupId>
    <artifactId>querydsl-maven-plugin</artifactId>
    <version>2.1.0</version>
    <executions>
        <execution>
            <goals>
                <goal>export</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <jdbcDriver>com.mysql.jdbc.Driver</jdbcDriver>
        <jdbcUrl>jdbc:mysql:mydb:3306/alltrades</jdbcUrl>
        <jdbcUser>mvaz</jdbcUser>
        <packageName>com.three60t.tools.bonus.persistence</packageName>
        <targetFolder>${project.basedir}/target/generated-sources/java</targetFolder>
    </configuration>
    <dependencies>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.6</version>
        </dependency>
    </dependencies>
</plugin>

В pom также приведена зависимость от mysql-connector-java.Проблема, которую я получаю, заключается в том, что драйвер, похоже, не находит:

[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Building tools-bonus
[INFO]    task-segment: [clean, install]
[INFO] ------------------------------------------------------------------------
[INFO] [clean:clean {execution: default-clean}]
[INFO] [querydsl:export {execution: default}]
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
[ERROR] 
java.sql.SQLException: No suitable driver found for jdbc:mysql:mydb:3306/alltrades
        at java.sql.DriverManager.getConnection(DriverManager.java:602)
        at java.sql.DriverManager.getConnection(DriverManager.java:185)
        at com.mysema.query.maven.AbstractMetaDataExportMojo.execute(AbstractMetaDataExportMojo.java:134)
        at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:490)
        at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:694)
        at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:556)
        at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:535)
        at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:387)
        at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:348)
        at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:180)
        at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:328)
        at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:138)
        at org.apache.maven.cli.MavenCli.main(MavenCli.java:362)
        at org.apache.maven.cli.compat.CompatibleMain.main(CompatibleMain.java:60)
        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 org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315)
        at org.codehaus.classworlds.Launcher.launch(Launcher.java:255)
        at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430)
        at org.codehaus.classworlds.Launcher.main(Launcher.java:375)
[INFO] ------------------------------------------------------------------------
[ERROR] BUILD ERROR
[INFO] ------------------------------------------------------------------------
[INFO] No suitable driver found for jdbc:mysql:mydb:3306/alltrades

[INFO] ------------------------------------------------------------------------
[INFO] For more information, run Maven with the -e switch
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1 second
[INFO] Finished at: Tue Mar 01 16:34:47 CET 2011
[INFO] Final Memory: 23M/219M
[INFO] ------------------------------------------------------------------------

Может кто-нибудь помочь мне с этим?Как я могу указать драйвер?

Ответы [ 2 ]

2 голосов
/ 01 марта 2011

Ваши зависимости кажутся правильными, но ваш URL JDBC выглядит странно. Попробуйте <jdbcUrl>jdbc:mysql://localhost:3306/alltrades</jdbcUrl>. Справочное руководство MySQL гласит следующее:

Формат URL JDBC для MySQL, Connector / J, выглядит следующим образом, элементы в квадратных скобках ([,]) являются необязательными:

jdbc: mysql: // [хост] [, failoverhost ...] [: порт] / [база данных] » [? PropertyName1] [= propertyValue1] [& propertyName2] [= propertyValue2] ...

Если имя хоста не указано, по умолчанию используется значение 127.0.0.1. Если порт не указан, по умолчанию используется номер 3306, номер порта по умолчанию для серверов MySQL.

Вам также может понадобиться указать jdbcPassword. Другие варианты см. В справочном руководстве Querydsl .

1 голос
/ 02 марта 2011

Драйвер указан правильно, если драйвер будет неправильным, вы получите другое исключение:

Class.forName(jdbcDriver); 
Connection conn = DriverManager.getConnection(jdbcUrl, jdbcUser, jdbcPassword);

Это также дает сбой в изоляции?Это похоже на ошибку в формате jdbcUrl.

...