Hibernate Gradle-休眠工具不工作

Hibernate Gradle-休眠工具不工作,hibernate,gradle,ant,Hibernate,Gradle,Ant,我正在尝试创建一个将cfg转换为sql的任务,我正在使用Hibernate3 我的ant任务看起来是这样的- ant { taskdef(name: 'hibernateTool', classname: 'org.hibernate.tool.ant.HibernateToolTask', classpath: configurations.hibernatetool.asPath ) hibernateTool(destdir: 'resources/

我正在尝试创建一个将cfg转换为sql的任务,我正在使用Hibernate3

我的ant任务看起来是这样的-

ant {
    taskdef(name: 'hibernateTool',
    classname: 'org.hibernate.tool.ant.HibernateToolTask',
    classpath: configurations.hibernatetool.asPath
    )
    hibernateTool(destdir: 'resources/b2c/hibernate/schema') {
    annotationconfiguration(configurationfile:      'resources/b2c/hibernate/hibernate.b2c.cfg.xml')
    hbm2ddl(export: true, outputfilename: 'db-b2c-update-ddl.sql')
    classpath {
        pathelement(path: 'classes')
        fileset(dir: '../intl_lib') {
        include(name: '*/.jar')
    }
    }
}
}
我为相同的应用程序添加了以下依赖项-

dependencies {
    hibernatetool group: 'org.hibernate', name: 'hibernate-tools', version: '3.2.4.GA'
    hibernatetool group: 'org.hibernate', name: 'hibernate-entitymanager', version: '3.6.10.Final'
}
应用插件-

plugin: id "org.hibernate.gradle.tools" version "1.2.3"
将配置设置为-

configurations {
    hibernatetool
}
我在运行任务时遇到以下错误-

[ant:hibernateTool] SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
[ant:hibernateTool] SLF4J: Defaulting to no-operation (NOP) logger implementation
[ant:hibernateTool] SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
这是相同的堆栈跟踪-

Caused by: java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory
at org.apache.tools.ant.AntClassLoader.findClassInComponents(AntClassLoader.java:1366)
at org.apache.tools.ant.AntClassLoader.findClass(AntClassLoader.java:1315)
at org.apache.tools.ant.AntClassLoader.loadClass(AntClassLoader.java:1068)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 165 more

非常感谢您提供的任何线索。

我想知道您是否没有指向正确的存储库。如果您在页面中查看Hibernate,则会提供以下生成信息。我不确定您使用的是哪个Gradle版本,因此我将提供所有版本的构建

在gradle.build中:


这个构建不仅会明确定义插件,还会明确定义从中下载插件的存储库。请尝试应用Hibernate插件的这种方法,看看您的问题是否得到解决。

添加以下依赖项应该可以解决与slf4j相关的问题

hibernatetool组:'org.slf4j',名称:'slf4j simple',版本:'1.6.6' hibernatetool组:“org.slf4j”,名称:“jcl-over-slf4j”,版本:“1.6.6”

为了修复java.lang.NoClassDefFoundError:org/apache/log4j/Priority此错误,还需要添加此log4j依赖项


hibernatetool group:'log4j',name:'log4j',version:'1.2.17'

您在build.gradle中加载的插件是什么?问题已经在那里了,无论如何,org.hibernate.gradle.tools version 1.2.3是我要添加的插件。我应该更具体一些。你能发布你的构建文件中声明了插件的部分吗?插件{id org.hibernate.gradle.tools version 1.2.3 id'java'id'eclipse'id'idea}我使用的是gradle 2.10。没有运气,仍然是相同的错误。除非你用以下内容更新你的答案,否则我将无法进一步帮助你。完整的build.gradle文件格式正确。这包括正在讨论的任务。错误消息还指示您只是将ant配置拖放到Gradle中,而不是将其转换。如果您是从配置文件生成SQL,则可能需要查看Gradle,因为它可以与筛选器一起使用,以动态替换文件中的文本。
buildscript {
  repositories {
    maven {
      url "https://plugins.gradle.org/m2/"
    }
  }
  dependencies {
    classpath "gradle.plugin.org.hibernate.gradle.tools:hibernatetools-gradle-plugin:1.2.3"
  }
}

apply plugin: "org.hibernate.gradle.tools"