java - org.apache.maven.plugin.MojoExecutionException : The DataNucleus tool org. datanucleus.enhancer.DataNucleusEnhancer 以非空退出代码退出

标签 java maven google-app-engine jdo datanucleus

当为 Google App Engine 运行 Maven 构建时,我收到构建错误:

org.apache.maven.plugin.MojoExecutionException: The DataNucleus tool org.datanucleus.enhancer.DataNucleusEnhancer exited with a non-null exit code.

我正在尝试让 Datanucleus 与 JDO 和数据增强器一起使用。

我已按照说明进行操作,并将以下内容包含在我的 pom.xml 中:

  <plugin>
  <groupId>org.datanucleus</groupId>
  <artifactId>datanucleus-maven-plugin</artifactId>
        <version>5.0.0-release</version>
        <configuration>
          <persistenceUnitName>transactions-optional</persistenceUnitName>
            <verbose>true</verbose>
        </configuration>
       <executions>
            <execution>
                <phase>process-classes</phase>
                <goals>
                    <goal>enhance</goal>
                </goals>
            </execution>
        </executions>
      <dependencies>
      <dependency>
        <groupId>org.datanucleus</groupId>
        <artifactId>datanucleus-core</artifactId>
        <version>3.1.0-release</version>
        <scope>runtime</scope>
      </dependency>
          <dependency>
            <groupId>org.datanucleus</groupId>
            <artifactId>datanucleus-api-jdo</artifactId>
            <version>3.1.0-release</version>
          </dependency>
        </dependencies>
    </plugin>

顺便说一句,这在 Java 7 上工作得很好,没有构建工具。这是一个使用 Java 8 和 Maven 的新项目。当我运行 mvn -X datanucleus:enhance

时出现同样的错误

被困了好几天,并尝试了插件配置的各种迭代和 Stack Overflow 上的建议,但没有成功。任何帮助将不胜感激。

最佳答案

看,就连我也面临同样的问题好几天了,终于意识到小事情可能会造成大困惑。在这里,首先请引用此链接: http://www.datanucleus.org/products/accessplatform_3_0/jdo/maven.html

并使用正确提到的版本。问题是,你不能只使用任何版本的 jdo-api、datanucleus-api-jdo 和 datanucleus-core。这些必须同步。请参阅下面我正在使用的:

<dependency>
        <groupId>javax.jdo</groupId>
        <artifactId>jdo-api</artifactId>
        <version>3.0.1</version>
    </dependency>
    <dependency>
        <groupId>org.datanucleus</groupId>
        <artifactId>datanucleus-api-jdo</artifactId>
        <version>3.1.3</version>
    </dependency>
    <dependency>
        <groupId>org.datanucleus</groupId>
        <artifactId>datanucleus-api-jpa</artifactId>
        <version>3.1.3</version>
    </dependency>
    <dependency>
     <groupId>org.apache.geronimo.specs</groupId>
     <artifactId>geronimo-jpa_2.0_spec</artifactId>
     <version>1.0</version>
   </dependency>
   <dependency>
        <groupId>org.datanucleus</groupId>
        <artifactId>datanucleus-core</artifactId>
        <version>3.1.3</version>
    </dependency>
    <dependency>
        <groupId>com.google.appengine.orm</groupId>
        <artifactId>datanucleus-appengine</artifactId>
        <version>2.1.2</version>
    </dependency>

插件为:

<plugin>
            <groupId>com.google.cloud.tools</groupId>
            <artifactId>appengine-maven-plugin</artifactId>
            <version>${appengine.maven.plugin.version}</version>
        </plugin>
        <plugin>
            <groupId>org.datanucleus</groupId>
            <artifactId>maven-datanucleus-plugin</artifactId>
            <version>3.2.0-m1</version>
            <configuration>
                <api>JDO</api>
                <log4jConfiguration>${basedir}/src/main/resources/META-INF/log4j.properties</log4jConfiguration>
                <props>${basedir}/datanucleus.properties</props>
                <verbose>true</verbose>
                <enhancerName>ASM</enhancerName>
                <fork>false</fork>
            </configuration>
            <executions>
                <execution>
                    <phase>process-classes</phase>
                    <goals>
                        <goal>enhance</goal>
                    </goals>
                </execution>
            </executions>
            <dependencies>
                <dependency>
                    <groupId>org.datanucleus</groupId>
                    <artifactId>datanucleus-core</artifactId>
                    <version>3.1.3</version>
                </dependency>
            </dependencies>
        </plugin>

再进行一些检查,确保您的 pom 中有以下内容:

<prerequisites>
    <maven>3.0</maven>
</prerequisites>

最后,运行 maven install 并查看增强器是否有效!日志如下:

 DataNucleus Enhancer (version 3.1.1) : Enhancement of classes.
 DataNucleus Enhancer completed with success for 2 classes. Timings : input=594 ms, enhance=46 ms, total=640 ms. Consult the log for full details
 [INFO] 
 [INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) --

我刚刚在新的迁移更改后进行部署,它支持生产中的旧数据存储值,并且工作起来就像一个魅力!希望它有帮助!

关于java - org.apache.maven.plugin.MojoExecutionException : The DataNucleus tool org. datanucleus.enhancer.DataNucleusEnhancer 以非空退出代码退出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49139898/

相关文章:

java - 在java中什么会更有效率? If-return-else 还是 If-return?

c# - 如何在 C# 中管理依赖项?

java - Tomcat:每个应用程序请求的状态代码 404

Maven 无法计算构建计划 :Failure to transfer org. apache.maven.plugins

google-app-engine - 为什么 Google Cloud Platform cron 会提前一小时解雇工作?

java - 在 Google Appengine 上重试失败的 Cron 任务

java - 线程安全的多生产者问题

java - 在总线上创建到安全消息传递引擎的连接时,Websphere 仍然抛出“未指定用户”

java - 配置文件给我随机的值

java - Google App Engine 不支持 vision api Runtime.addShutdownHook 错误