0

一直在将较旧的 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
4

0 回答 0