一直在将较旧的 Maven 构建迁移到 Gradle,并且在转换后存在重大问题。
该项目使用 XDoclet 生成 hibernate.cfg.xml。生成此文件时,Gradle 的构建时间平均会比 Maven 增加 2 倍。使用inputs/outputs
避免在后续构建中工作,Gradle 的构建时间是 Maven 的一半。
所以这个初始构建,生成 hibernate.cfg.xml,极大地影响了采用。
这是 Gradle 任务(改编自 Maven antrun 执行):
task generateHibernateConfig {
outputs.file( file("${project.projectDir}/src/main/resources/hibernate.cfg.xml") )
doLast {
ant.echo(message: "Generating Hibernate Configuration")
ant.taskdef(
name: "hibernatedoclet",
classname: "xdoclet.modules.hibernate.HibernateDocletTask",
classpath: ant.references["xdoclet.task.classpath"]
)
ant.hibernatedoclet(destDir: "${project.projectDir}/src/main/resources",
verbose: "false"
) {
fileset(dir: "${project.projectDir}/src/main/java") {
include(name: "**/*.java")
// a few excluded classes redacted
}
hibernate(version: "3.0")
hibernatecfg(dialect: "org.hibernate.dialect.DB2Dialect",
dataSource: "java:comp/env/jdbc/Example",
transactionManagerFactory: "org.hibernate.transaction.CMTTransactionFactory",
transactionManagerLookup: "org.hibernate.transaction.WebSphereExtendedJTATransactionLookup",
showSql: "false",
version: "3.0") {
otherProperty(name: "hibernate.cache.use_second_level_cache", value: "true")
otherProperty(name: "hibernate.cache.use_query_cache", value: "true")
otherProperty(name: "hibernate.cache.region.factory_class", value: "net.sf.ehcache.hibernate.SingletonEhCacheRegionFactory")
otherProperty(name: "hibernate.transaction.flush_before_completion", value: "true")
otherProperty(name: "hibernate.transaction.auto_close_session", value: "true")
otherProperty(name: "hibernate.connection.provider_class", value: "org.hibernate.connection.DatasourceConnectionProvider")
otherProperty(name: "hibernate.jdbc.use_get_generated_keys", value: "false")
}
}
}
}
使用以下命令导入所需的类:
ant.path(id: "xdoclet.task.classpath", location: configurations.antBuild.asPath)
从dependencies
关闭:
antBuild libs.xdoclet
antBuild libs.xdocletFixedHibernate
antBuild libs.xdocletModule
antBuild libs.xdocletJavadoc
antBuild libs.log4j
antBuild libs.hibernateCore
gradlew clean build --debug
低于性能下降点。此日志重复。(可能是假线索)
2021-04-20T13:21:47.037+1200 [DEBUG] [org.gradle.api.internal.project.ant.AntLoggingAdapter] Couldn't load Resource hibernate-generator-params-{0}.xml
2021-04-20T13:21:47.038+1200 [DEBUG] [org.gradle.api.internal.project.ant.AntLoggingAdapter] Resource xdoclet/modules/hibernate/resources/hibernate-properties.xdt loaded from ant loader
2021-04-20T13:21:47.038+1200 [DEBUG] [org.gradle.api.internal.project.ant.AntLoggingAdapter] Couldn't load Resource hibernate-properties.xml
2021-04-20T13:21:47.038+1200 [DEBUG] [org.gradle.api.internal.project.ant.AntLoggingAdapter] Couldn't load Resource hibernate-properties-{0}.xml
2021-04-20T13:21:47.038+1200 [DEBUG] [org.gradle.api.internal.project.ant.AntLoggingAdapter] Resource xdoclet/modules/hibernate/resources/hibernate-subclass.xdt loaded from ant loader
2021-04-20T13:21:47.038+1200 [DEBUG] [org.gradle.api.internal.project.ant.AntLoggingAdapter] Resource xdoclet/modules/hibernate/resources/hibernate-joined-subclass.xdt loaded from ant loader
2021-04-20T13:21:47.038+1200 [DEBUG] [org.gradle.api.internal.project.ant.AntLoggingAdapter] Resource xdoclet/modules/hibernate/resources/hibernate-query.xdt loaded from ant loader
2021-04-20T13:21:47.039+1200 [DEBUG] [org.gradle.api.internal.project.ant.AntLoggingAdapter] Resource xdoclet/modules/hibernate/resources/hibernate-query.xdt loaded from ant loader
2021-04-20T13:21:47.039+1200 [DEBUG] [org.gradle.api.internal.project.ant.AntLoggingAdapter] Resource xdoclet/modules/hibernate/resources/hibernate-sql-query.xdt loaded from ant loader
2021-04-20T13:21:47.039+1200 [DEBUG] [org.gradle.api.internal.project.ant.AntLoggingAdapter] Resource xdoclet/modules/hibernate/resources/hibernate-sql-query.xdt loaded from ant loader