Question

Voici ma configuration de plugin:

<plugin>
                <groupId>net.kindleit</groupId>
                <artifactId>maven-gae-plugin</artifactId>
                <version>0.7.3</version>
                <dependencies>
                  <dependency>
                    <groupId>net.kindleit</groupId>
                    <artifactId>gae-runtime</artifactId>
                    <version>${gae.version}</version>
                    <type>pom</type>
                  </dependency>
                </dependencies>
                <configuration>
                    <jvmFlags>
                        <jvmFlag>-Drdbms.server=local</jvmFlag>
                        <jvmFlag>-Drdbms.driver=com.mysql.jdbc.Driver</jvmFlag>
                        <jvmFlag>-Drdbms.url=jdbc:mysql://localhost:3306/prova?user=root&amp;password=pass</jvmFlag>
                    </jvmFlags>
                    <serverId>appengine.google.com</serverId>
                </configuration>
            </plugin>

Vous pouvez lire plus ici: https://developers.google.com/cloud-sql/docs/developers_guide_java

J'ai d'abord eu cette erreur triviale, faisant mvn gae:run

java.lang.ClassNotFoundException: com.mysql.jdbc.Driver

J'ai donc ajouté le "vrai" pilote à mon pom.xml:

<dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.18</version>
    </dependency>

sans résultats. L'erreur reste la même.

Partie du stacktrace:

java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at com.google.appengine.tools.development.DevAppServerClassLoader.loadClass(DevAppServerClassLoader.java:87)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:169)
    at com.google.appengine.api.rdbms.dev.LocalRdbmsServiceLocalDriver.registerDriver(LocalRdbmsServiceLocalDriver.java:84)
    at com.google.appengine.api.rdbms.dev.LocalRdbmsServiceLocalDriver.init(LocalRdbmsServiceLocalDriver.java:73)
    at com.google.appengine.api.rdbms.dev.LocalRdbmsService.init(LocalRdbmsService.java:85)

Éditer:

Mon nouveau plugin conf:

<plugin>
                <groupId>net.kindleit</groupId>
                <artifactId>maven-gae-plugin</artifactId>
                <version>0.9.2</version>
                <dependencies>
                  <dependency>
                    <groupId>net.kindleit</groupId>
                    <artifactId>gae-runtime</artifactId>
                    <version>${gae.version}</version>
                    <type>pom</type>
                  </dependency>
                  <dependency>
                    <groupId>mysql</groupId>
                    <artifactId>mysql-connector-java</artifactId>
                    <version>5.1.18</version>
                </dependency>
                </dependencies>
                <configuration>
                    <jvmFlags>
                        <jvmFlag>-Drdbms.server=local</jvmFlag>
                        <jvmFlag>-Drdbms.driver=com.mysql.jdbc.Driver</jvmFlag>
                        <jvmFlag>-Drdbms.url=jdbc:mysql://localhost:3306/prova?user=root&amp;password=pass</jvmFlag>
                    </jvmFlags>
                    <serverId>appengine.google.com</serverId>
<!--                     <sdkDir>${appengine.sdk.root}</sdkDir> -->
<!--                     <appDir>${basedir}/war</appDir> -->
                </configuration>
            </plugin>
Était-ce utile?

La solution

Ok j'ai résolu. Je mets manuellement mysql-connector-java-5.1.18-bin.jar Dans mon dossier SDK:

 file:///opt/appengine-java-sdk-1.6.0/lib/impl/

Modifications d'erreur dans un plus confortable:

java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)

Merci pour les suggestions cependant

Autres conseils

Ou vous pouvez utiliser maven-antrun-plugin le faire pour vous au moment de la construction. Plus d'intervention manuelle pour votre équipe de projet (j'utilise cela avec le Plugin de l'En application officielle, vous devez adapter le chemin pour une utilisation avec Maven-Gae-Plugin):

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-antrun-plugin</artifactId>
  <version>1.7</version>
  <executions>
    <execution>
      <!-- Use 'package' instead of 'install' if you want the Driver to be available for 'integration-test' -->
      <phase>package</phase>
      <configuration>
        <target>
          <!-- delete existing mysql jar from appengine sdk lib/impl -->
          <delete>
            <fileset 
              dir="${settings.localRepository}/com/google/appengine/appengine-java-sdk/${appengine.target.version}/appengine-java-sdk/appengine-java-sdk-${appengine.target.version}/lib/impl" 
              includes="**/mysql-connector-java*" />
          </delete>
          <!-- copy mysql jar into appengine sdk lib/impl -->
          <copy 
            file="${settings.localRepository}/mysql/mysql-connector-java/${mysql.version}/mysql-connector-java-${mysql.version}.jar" 
            todir="${settings.localRepository}/com/google/appengine/appengine-java-sdk/${appengine.target.version}/appengine-java-sdk/appengine-java-sdk-${appengine.target.version}/lib/impl"/>
        </target>
      </configuration>
      <goals>
        <goal>run</goal>
      </goals>
    </execution>
  </executions>
</plugin> 

Avez-vous également ajouté cela aux dépendances des plugins?

S'il s'agit du chemin de classe du plugin, il doit être ramassé par GAE.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top