Gradle - hibernate工具无法正常工作

时间:2016-02-08 16:45:21

标签: hibernate gradle ant

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

我的蚂蚁任务看起来像这样 -

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

对此有任何线索表示赞赏。

2 个答案:

答案 0 :(得分:0)

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

gradle.build

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"

此版本不仅会明确定义插件,还会显示从中下载插件的存储库。请尝试使用此方法应用Hibernate插件,看看您的问题是否已解决。

答案 1 :(得分:0)

添加以下依赖项应解决与slf4j相关的上述问题。

hibernatetool群组:' org.slf4j',名称:' slf4j-simple',版本:' 1.6.6'
hibernatetool group:' org.slf4j',name:' jcl-over-slf4j',version:' 1.6.6'

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

hibernatetool群组:' log4j',名称:' log4j',版本:' 1.2.17'