我正在尝试创建一个任务来将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
任何这方面的线索都值得赞赏。
添加以下依赖项应该可以解决与 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'
我想知道您是否没有指向正确的存储库。如果您查看 Gradle 插件门户页面的休眠,则会提供以下构建信息。我不确定您使用的是哪个 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插件的方法,看看您的问题是否已解决。