2012-01-17 18 views
1

私はすでに既存のGAE/Jプロジェクトのために良いpom.xmlを見つけようと数時間苦労しています。ここで Maven/GAE - いくつかのDatanucleusクラスがありません

は私のpom.xmlの "最も作業" バージョンです(そしてそれはおそらくひどく厄介です):

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 
<modelVersion>4.0.0</modelVersion> 

<!-- The Basics --> 
<groupId>com.***</groupId> 
<artifactId>***</artifactId> 
<version>0.3-SNAPSHOT</version> 
<packaging>war</packaging> 

<name>***</name> 

<properties> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    <downloadSources>true</downloadSources> 

    <!-- GAE SPECIFICS --> 
    <!-- Upload to http://test.latest.<applicationName>.appspot.com by default --> 
    <gae.application.version>test</gae.application.version> 
    <gae.version>1.6.1</gae.version> 
    <gae.sdk.version>1.6.1</gae.sdk.version> 
    <gae.port>8888</gae.port> 
    <datanucleus.gae.version>1.0.10</datanucleus.gae.version> 
    <datanucleus.version>3.0.5</datanucleus.version> 

    <!-- Web --> 
    <servlet.version>2.5</servlet.version> 
    <spring.version>3.0.5.RELEASE</spring.version> 

    <!-- Data --> 
    <jdo.version>2.3-ea</jdo.version> 

    <!-- Validation --> 
    <validation.version>1.0.0.GA</validation.version> 
    <hibernate.validator.version>4.2.0.Final</hibernate.validator.version> 

    <!-- Utils --> 
    <log.version>1.6.1</log.version> 

    <!-- Test --> 
    <mockito.version>1.8.5</mockito.version> 
    <junit.version>4.8.2</junit.version> 
</properties> 

<dependencies> 

    <!-- Google App Engine meta-package --> 
    <dependency> 
     <groupId>net.kindleit</groupId> 
     <artifactId>gae-runtime</artifactId> 
     <version>${gae.version}</version> 
     <type>pom</type> 
    </dependency> 

    <!-- Web --> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-webmvc</artifactId> 
     <version>${spring.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.security</groupId> 
     <artifactId>spring-security-web</artifactId> 
     <version>${spring.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.security</groupId> 
     <artifactId>spring-security-config</artifactId> 
     <version>${spring.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.security</groupId> 
     <artifactId>spring-security-taglibs</artifactId> 
     <version>${spring.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>servlet-api</artifactId> 
     <version>${servlet.version}</version> 
     <scope>provided</scope> 
    </dependency> 

    <!-- Data --> 
    <dependency> 
     <groupId>javax.jdo</groupId> 
     <artifactId>jdo2-api</artifactId> 
     <version>${jdo.version}</version> 
     <exclusions> 
      <exclusion> 
       <groupId>javax.transaction</groupId> 
       <artifactId>transaction-api</artifactId> 
      </exclusion> 
     </exclusions> 
    </dependency> 
    <dependency> 
     <groupId>org.datanucleus</groupId> 
     <artifactId>datanucleus-core</artifactId> 
     <version>${datanucleus.version}</version> 
     <scope>runtime</scope> 
     <exclusions> 
      <exclusion> 
       <groupId>javax.transaction</groupId> 
       <artifactId>transaction-api</artifactId> 
      </exclusion> 
     </exclusions> 
    </dependency> 
    <dependency> 
     <groupId>org.datanucleus</groupId> 
     <artifactId>datanucleus-api-jpa</artifactId> 
     <version>3.0.5</version> 
    </dependency> 
    <dependency> 
     <groupId>javax.transaction</groupId> 
     <artifactId>jta</artifactId> 
     <version>1.1</version> 
    </dependency> 

    <dependency> 
     <groupId>org.datanucleus</groupId> 
     <artifactId>datanucleus-rdbms</artifactId> 
     <version>${datanucleus.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>com.google.appengine.orm</groupId> 
     <artifactId>datanucleus-appengine</artifactId> 
     <version>1.0.10</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.geronimo.specs</groupId> 
     <artifactId>geronimo-jpa_2.0_spec</artifactId> 
     <version>1.0</version> 
    </dependency> 

    <!-- Validation --> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-validator</artifactId> 
     <version>${hibernate.validator.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>javax.validation</groupId> 
     <artifactId>validation-api</artifactId> 
     <version>${validation.version}</version> 
    </dependency> 

    <dependency> 
     <groupId>javax.persistence</groupId> 
     <artifactId>persistence-api</artifactId> 
     <version>1.0</version> 
    </dependency> 

    <dependency> 
     <groupId>javax.transaction</groupId> 
     <artifactId>jta</artifactId> 
     <version>1.1</version> 
    </dependency> 

    <!-- J2EE Servlet API. We need it to compile IndexServlet class. You can 
     probably remove it, if you don't explicitly use Servlets --> 
    <dependency> 
     <groupId>org.apache.geronimo.specs</groupId> 
     <artifactId>geronimo-servlet_2.5_spec</artifactId> 
     <version>1.2</version> 
     <scope>provided</scope> 
    </dependency> 

    <!-- Make use of JSP tags. Remove, if you don't use JSPs --> 
    <dependency> 
     <artifactId>standard</artifactId> 
     <groupId>taglibs</groupId> 
     <version>1.1.2</version> 
     <type>jar</type> 
     <scope>runtime</scope> 
    </dependency> 

    <!-- These dependencies are here just for enabling logging --> 
    <dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>slf4j-api</artifactId> 
     <version>1.6.1</version> 
    </dependency> 

    <dependency> 
     <groupId>ch.qos.logback</groupId> 
     <artifactId>logback-classic</artifactId> 
     <version>0.9.24</version> 
    </dependency> 

    <dependency> 
     <groupId>org.mockito</groupId> 
     <artifactId>mockito-all</artifactId> 
     <version>${mockito.version}</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>${junit.version}</version> 
     <scope>test</scope> 
    </dependency> 

    <!-- GAE libraries for local testing as described here: http://code.google.com/appengine/docs/java/howto/unittesting.html --> 
    <dependency> 
     <groupId>com.google.appengine</groupId> 
     <artifactId>appengine-api-labs</artifactId> 
     <version>${gae.version}</version> 
     <scope>test</scope> 
    </dependency> 

    <dependency> 
     <groupId>com.google.appengine</groupId> 
     <artifactId>appengine-api-stubs</artifactId> 
     <version>${gae.version}</version> 
     <scope>test</scope> 
    </dependency> 

    <dependency> 
     <groupId>com.google.appengine</groupId> 
     <artifactId>appengine-testing</artifactId> 
     <version>${gae.version}</version> 
     <scope>test</scope> 
    </dependency> 
</dependencies> 

<build> 
    <plugins> 
     <!-- This plug-in "enhances" your domain model objects (i.e. makes them 
      persistent for datanucleus) --> 
     <plugin> 
      <groupId>org.datanucleus</groupId> 
      <artifactId>maven-datanucleus-plugin</artifactId> 
      <version>3.0.1</version> 
      <configuration> 
       <!-- Make sure this path contains your persistent classes! --> 
       <mappingIncludes>**/model/*.class</mappingIncludes> 
       <verbose>true</verbose> 
       <enhancerName>ASM</enhancerName> 
       <api>JPA</api> 
      </configuration> 
      <executions> 
       <execution> 
        <phase>compile</phase> 
        <goals> 
         <goal>enhance</goal> 
        </goals> 
       </execution> 
      </executions> 
      <dependencies> 
       <dependency> 
        <groupId>org.datanucleus</groupId> 
        <artifactId>datanucleus-core</artifactId> 
        <version>${datanucleus.version}</version> 
        <exclusions> 
         <exclusion> 
          <groupId>javax.transaction</groupId> 
          <artifactId>transaction-api</artifactId> 
         </exclusion> 
        </exclusions> 
       </dependency> 
       <dependency> 
        <groupId>org.datanucleus</groupId> 
        <artifactId>datanucleus-rdbms</artifactId> 
        <version>${datanucleus.version}</version> 
       </dependency> 
       <dependency> 
        <groupId>org.datanucleus</groupId> 
        <artifactId>datanucleus-enhancer</artifactId> 
        <version>3.0.1</version> 
       </dependency> 
       <dependency> 
        <groupId>javax.jdo</groupId> 
        <artifactId>jdo2-api</artifactId> 
        <version>${jdo.version}</version> 
        <scope>runtime</scope> 
       </dependency> 
       <dependency> 
        <groupId>javax.jdo</groupId> 
        <artifactId>jdo-api</artifactId> 
        <version>3.0</version> 
       </dependency> 
      </dependencies> 
     </plugin> 

     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-war-plugin</artifactId> 
      <version>2.1-beta-1</version> 
      <configuration> 
       <webResources> 
        <resource> 
         <directory>src/main/webapp</directory> 
         <filtering>true</filtering> 
         <includes> 
          <include>**/appengine-web.xml</include> 
         </includes> 
        </resource> 
       </webResources> 
      </configuration> 
     </plugin> 

     <!-- The actual maven-gae-plugin. Type "mvn gae:run" to run project, "mvn 
      gae:deploy" to upload to GAE. --> 
     <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> 
      </dependencies> 
     </plugin> 

     <!-- Upload application to the appspot automatically, during release:perform --> 
     <plugin> 
      <artifactId>maven-release-plugin</artifactId> 
      <configuration> 
       <goals>gae:deploy</goals> 
      </configuration> 
     </plugin> 

     <!-- Java compiler version --> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>2.0</version> 
      <configuration> 
       <source>1.6</source> 
       <target>1.6</target> 
      </configuration> 
     </plugin> 

     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-surefire-plugin</artifactId> 
      <version>2.5</version> 
      <configuration> 
       <excludes> 
        <exclude>com/***/integration/**/*Test.java</exclude> 
       </excludes> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 

<profiles> 
    <!-- We can configure our integration server to activate this profile and 
     perform gae:deploy, thus uploading latest snapshot to the http://1.latest.<applicationName>.appspot.com 
     automatically --> 
    <profile> 
     <id>integration-build</id> 
     <properties> 
      <gae.application.version>stage</gae.application.version> 
     </properties> 
    </profile> 

    <!-- This profile will activate automatically during release and upload 
     application to the http://2.latest.<applicationName>.appspot.com (We might 
     want to set the 2nd version as our applications Default version to be accessible 
     at http://<applicationName>.appspot.com) --> 
    <profile> 
     <id>release-build</id> 
     <activation> 
      <property> 
       <name>performRelease</name> 
       <value>true</value> 
      </property> 
     </activation> 

     <properties> 
      <!-- During release, set application version in appengine-web.xml to 
       2 --> 
      <gae.application.version>release</gae.application.version> 
     </properties> 
    </profile> 
</profiles> 

そして、これはmvn gae:runを実行しているときに私が得るものです:

WARNING: Nested in org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in ServletContext resource [/WEB-INF/***-services.xml]: Instantiation of bean failed; nested exception is org.springframework.beans.factory.BeanDefinitionStoreException: Factory method [public static javax.persistence.EntityManagerFactory javax.persistence.Persistence.createEntityManagerFactory(java.lang.String)] threw exception; nested exception is java.lang.NoClassDefFoundError: org/datanucleus/OMFContext: 
java.lang.ClassNotFoundException: org.datanucleus.OMFContext 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:217) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:205) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:321) 
    at com.google.appengine.tools.development.IsolatedAppClassLoader.loadClass(IsolatedAppClassLoader.java:176) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:266) 
    at org.datanucleus.jpa.EntityManagerFactoryImpl.<init>(EntityManagerFactoryImpl.java:293) 
    at org.datanucleus.store.appengine.jpa.DatastoreEntityManagerFactory.<init>(DatastoreEntityManagerFactory.java:63) 
    at org.datanucleus.store.appengine.jpa.DatastorePersistenceProvider.createEntityManagerFactory(DatastorePersistenceProvider.java:35) 
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:150) 
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:70) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:616) 
    at com.google.appengine.tools.development.agent.runtime.Runtime.invoke(Runtime.java:104) 
    at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:145) 
    at org.springframework.beans.factory.support.ConstructorResolver$3.run(ConstructorResolver.java:564) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:562) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:983) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:879) 
[...] 
Jan 17, 2012 11:24:55 PM com.google.apphosting.utils.jetty.JettyLogger info 
INFO: Started [email protected]:8888 
Jan 17, 2012 11:24:55 PM com.google.appengine.tools.development.DevAppServerImpl start 
INFO: The server is running at http://localhost:8888/ 
Jan 17, 2012 11:24:55 PM com.google.appengine.tools.development.DevAppServerImpl start 
INFO: The admin console is running at http://localhost:8888/_ah/admin 

datacucleus-coreのバージョンを変更して、OMFContentが見つかる可能性がありますが、さらに悪いことに失敗します。

これを解決する方法はありますか?

答えて

-2

GAEのv1.0.10がDataNucleusのが

GAEのバージョン2.xは、DataNucleusの3.xの

+0

こんにちはを必要とv1.1.x必要があり、答えのためのおかげで、GAEであなたはDataNucleusの-AppEngineの意味ですか? – Rolf

+0

はい、GAE JDO/JPAプラグイン – DataNucleus

+0

こんにちは、私はとても混乱してしまいました。申し訳ありませんが、あなたが話している依存関係を正確に教えてください。 FYI、依存関係のツリーはhttps://gist.github.com/1636358にあります。 – Rolf

関連する問題