2010-04-03 2 views
5

Ich versuche meine Anwendung für GoogleAppEngine mit Maven zu erstellen. Ich habe folgendes mein pom hinzugefügt, die „verbessern“ meine Klassen nach Gebäude sollte, wie auf derMaven-Erstellung für GoogleAppEngine, gezwungen, JDO-Bibliotheken einzubinden?

DataNucleus documentation vorgeschlagen
<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> 

Gemäß der Dokumentation auf GoogleAppEngine, haben Sie die Wahl JDO oder JPA zu verwenden, ich Ich habe mich dafür entschieden, JPA zu verwenden, da ich es in der Vergangenheit benutzt habe. Wenn ich versuche, mein Projekt zu erstellen (bevor ich zu GAE laden) mit mvn clean package ich die folgende Ausgabe

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

Irgendwelche Ideen, warum ich so einen Fehler sollte? Ich habe meinen gesamten Quellcode durchsucht und verweise nicht auf JDO. Wenn die App-Engine-Bibliotheken dies nicht erfordern, bin ich nicht sicher, warum ich diese Nachricht erhalte.

Antwort

11

Das Datanucleus Maven Plugin erfordert die JDO2 JAR API (sogar für JPA) als here dokumentiert und wie in der Spur berichtet:

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

Die ungerade Teil ist, dass jdo2-api-2.3-ec.jarist im Datanucleus Maven Repository (dass ist in der POM des Plugins deklariert) und Maven hat dieses Repository überprüft, wie wir in der Spur sehen können.

Update: Ok, das ist definitiv seltsam, und ich weiß nicht, warum die Build genau ausfällt (vielleicht ein Problem mit Abhängigkeiten Bereichen). Zur Umgehung des Problems erklären die JDO2 API JAR als Abhängigkeit im Plugin:

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

Mit dieser Abhängigkeit erklärt, wird die JAR heruntergeladen.

+0

Das bringt mir bei, die Dokumentation zu schnell zu überspringen;) Danke (nochmal) Pascal – Jimmy

Verwandte Themen