2010-04-03 16 views
5

J'essaie de créer mon application pour GoogleAppEngine en utilisant maven. J'ai ajouté ce qui suit à mon pom qui devrait « améliorer » mes cours après la construction, comme le suggère le DataNucleus documentationBâtiment Maven pour GoogleAppEngine, obligé d'inclure les bibliothèques JDO?

<plugin> 
       <groupId>org.datanucleus</groupId> 
       <artifactId>maven-datanucleus-plugin</artifactId> 
       <version>1.1.4</version> 
       <configuration> 
        <log4jConfiguration>${basedir}/log4j.properties</log4jConfiguration> 
        <verbose>true</verbose> 
       </configuration> 
       <executions> 
        <execution> 
         <phase>process-classes</phase> 
         <goals> 
          <goal>enhance</goal> 
         </goals> 
        </execution> 
       </executions> 
      </plugin> 

Selon la documentation sur GoogleAppEngine, vous avez le choix d'utiliser JDO ou JPA, je J'ai choisi d'utiliser JPA depuis que je l'ai utilisé dans le passé. Lorsque je tente de construire mon projet (avant que je télécharger sur GAE) à l'aide mvn clean package-je obtenir la sortie suivante

[ERROR] BUILD ERROR 
[INFO] ------------------------------------------------------------------------ 
[INFO] Failed to resolve artifact. 

Missing: 
---------- 
1) javax.jdo:jdo2-api:jar:2.3-ec 

    Try downloading the file manually from the project website. 

    Then, install it using the command: 
     mvn install:install-file -DgroupId=javax.jdo -DartifactId=jdo2-api -Dversion=2.3-ec -Dpackaging=jar -Dfile=/path/to/file 

    Alternatively, if you host your own repository you can deploy the file there: 
     mvn deploy:deploy-file -DgroupId=javax.jdo -DartifactId=jdo2-api -Dversion=2.3-ec -Dpackaging=jar -Dfile=/path/to/file -Durl=[url] -DrepositoryId=[id] 

    Path to dependency: 
    1) org.datanucleus:maven-datanucleus-plugin:maven-plugin:1.1.4 
    2) javax.jdo:jdo2-api:jar:2.3-ec 

---------- 
1 required artifact is missing. 

for artifact: 
    org.datanucleus:maven-datanucleus-plugin:maven-plugin:1.1.4 

from the specified remote repositories: 
    __jpp_repo__ (file:///usr/share/maven2/repository), 
    DN_M2_Repo (http://www.datanucleus.org/downloads/maven2/), 
    central (http://repo1.maven.org/maven2) 


[INFO] ------------------------------------------------------------------------ 
[INFO] For more information, run Maven with the -e switch 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 3 seconds 
[INFO] Finished at: Sat Apr 03 16:02:39 BST 2010 
[INFO] Final Memory: 31M/258M 
[INFO] ------------------------------------------------------------------------ 

Toutes les idées pourquoi je devrais obtenir une telle erreur? J'ai parcouru tout mon code source et je ne référence nulle part JDO, donc à moins que les bibliothèques de moteurs d'applications ne l'exigent, je ne suis pas sûr de savoir pourquoi j'ai reçu ce message.

Répondre

11

Le DataNucleus plugin Maven nécessite l'API JDO2 JAR (même pour JPA) tel que documenté here et rapporté dans la trace:

Path to dependency: 
    1) org.datanucleus:maven-datanucleus-plugin:maven-plugin:1.1.4 
    2) javax.jdo:jdo2-api:jar:2.3-ec 

La partie étrange est que jdo2-api-2.3-ec.jarest dans le dépôt Maven DataNucleus (que est déclaré dans le POM du plugin) et Maven a vérifié ce référentiel comme nous pouvons le voir dans la trace.

Mise à jour: Ok, ce est vraiment bizarre et je ne sais pas pourquoi la construction ne parvient pas exactement (peut-être un problème avec des plages de dépendances). Pour contourner ce problème, déclarer l'API JDO2 JAR comme dépendance dans le plug-in:

<project> 
    ... 
    <build> 
    <plugins> 
     <plugin> 
     <groupId>org.datanucleus</groupId> 
     <artifactId>maven-datanucleus-plugin</artifactId> 
     <version>1.1.4</version> 
     <configuration> 
      <log4jConfiguration>${basedir}/log4j.properties</log4jConfiguration> 
      <verbose>true</verbose> 
     </configuration> 
     <executions> 
      <execution> 
       <phase>process-classes</phase> 
       <goals> 
        <goal>enhance</goal> 
       </goals> 
      </execution> 
     </executions> 
     <dependencies> 
      <dependency> 
      <groupId>javax.jdo</groupId> 
      <artifactId>jdo2-api</artifactId> 
      <version>2.3-ec</version> 
      <scope>runtime</scope> 
      </dependency> 
     </dependencies>   
     </plugin> 
     ... 
    </plugins> 
    ... 
    </build> 

</project> 

Avec cette dépendance déclarée, le JAR est téléchargé.

+0

Ça va m'apprendre à passer trop vite par la documentation;) Merci (encore) Pascal – Jimmy