Comme promis dans mon précédent article, voici quelques explications sur la configuration du POM requise pour créer une application compatible avec GAE.
Les éléments présentés ci-dessous ne le sont qu'à titre d'exemple, le but étant essentiellement de les regrouper de manière accessible.
Server de test
Lors de la phase de développement, il est possible d'utiliser Maven pour démarrer un server App Engine de test basé sur Jetty :
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>8.0.1.v20110908</version>
<configuration>
<scanIntervalSeconds>1</scanIntervalSeconds>
<stopKey>stop-jetty</stopKey>
<stopPort>9999</stopPort>
</configuration>
</plugin>
<plugin>
<groupId>com.google.appengine</groupId>
<artifactId>appengine-maven-plugin</artifactId>
<version>1.8.0</version>
</plugin>
Configuration de Netbeans
Pour démarrer ce serveur, il faut également configurer les actions du projet :
Activer le debug du serveur de test avec Netbeans
Dans un profil par exemple :
<profile>
<id>appengine</id>
<properties>
<env>appengine</env>
</properties>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<build>
<plugins>
<plugin>
<groupId>com.google.appengine</groupId>
<artifactId>appengine-maven-plugin</artifactId>
<version>1.8.0</version>
<configuration>
<jvmFlags>
<jvmFlag>-Xdebug</jvmFlag>
<jvmFlag>-Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n</jvmFlag>
</jvmFlags>
</configuration>
</plugin>
</plugins>
</build>
</profile>
De cette manière, après le lancement du serveur de test avec la commande mvn appengine:devserver
, il sera possible d'attacher un debugger au port du processus distant.
Dépendances à supprimer
Suite aux explications données dans l'article précédent, les dépendances ci-dessous ne sont plus nécessaires :
- mysql (ou autre JAR de driver/connector de SGBD)
- ehcache
- aspectj
- hibernate
- spring AOP
- spring tx (pour les transactions)
Couche de persistence
Voici les dépendances nécessaires :
<dependency>
<groupId>com.googlecode.objectify</groupId>
<artifactId>objectify</artifactId>
<version>4.0b3</version>
</dependency>
<dependency>
<groupId>com.google.appengine.orm</groupId>
<artifactId>datanucleus-appengine</artifactId>
<version>2.0.1.1</version>
<!-- Need to exclude the enhancer since it interfere with the enhancer plugin.
<exclusions>
<exclusion>
<groupId>org.datanucleus</groupId>
<artifactId>datanucleus-enhancer</artifactId>
</exclusion>
</exclusions> -->
</dependency>
<dependency>
<groupId>org.datanucleus</groupId>
<artifactId>datanucleus-core</artifactId>
<version>3.0.11</version>
</dependency>
<dependency>
<groupId>org.datanucleus</groupId>
<artifactId>datanucleus-api-jpa</artifactId>
<version>3.0.11</version>
</dependency>
<dependency>
<groupId>org.apache.geronimo.specs</groupId>
<artifactId>geronimo-jpa_2.0_spec</artifactId>
<version>1.0</version>
</dependency>
<dependency>
<groupId>javax.jdo</groupId>
<artifactId>jdo-api</artifactId>
<version>3.0</version>
</dependency>
Pour activer le tissage des classes métier par Datanucleus lors de la compilation (enhancer), voici les plugins à déclarer dans la section build :
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.14.1</version>
</plugin>
<plugin>
<groupId>org.datanucleus</groupId>
<artifactId>maven-datanucleus-plugin</artifactId>
<version>3.0.2</version>
<configuration>
<api>JPA</api>
<verbose>true</verbose>
<mappingIncludes>**/domain/*.class</mappingIncludes>
<fork>false</fork>
</configuration>
<executions>
<execution>
<phase>process-classes</phase>
<goals>
<goal>enhance</goal>
</goals>
</execution>
</executions>
</plugin>
Dans l'article suivant, je présenterai les autres fichiers de configuration nécessaires, notamment la configuration de Spring pour la persistence.
2 commentaires:
Merci, that helped me start debugging my appengine application :)
You are welcome, good luck!
Enregistrer un commentaire