grails - 热代码修复正在编译但未在 grails 2.4.4 中选择

标签 grails

在 grails 2.4.4 中创建了一个新应用程序,并创建了一个 Controller 和 gsp 文件。在开发运行模式下,我正在更改代码-gsp 文件更改反射(reflect)在浏览器中,但没有反射(reflect)在 Controller 代码中,但在这两种情况下,我都会收到消息

Applying changes to application.
| Compiling 1 source files.

我的 1) Buildconfig.groovy 和 2. Config.groovy 文件在下面列出

1) BuildConfig.groovy
grails.servlet.version = "3.0" // Change depending on target container compliance (2.5 or 3.0)
grails.project.class.dir = "target/classes"
grails.project.test.class.dir = "target/test-classes"
grails.project.test.reports.dir = "target/test-reports"
grails.project.work.dir = "target/work"
grails.project.target.level = 1.6
grails.project.source.level = 1.6
//grails.project.war.file = "target/${appName}-${appVersion}.war"

grails.project.fork = [
    // configure settings for compilation JVM, note that if you alter the Groovy version forked compilation is required
    //  compile: [maxMemory: 256, minMemory: 64, debug: false, maxPerm: 256, daemon:true],

    // configure settings for the test-app JVM, uses the daemon by default
    test: [maxMemory: 768, minMemory: 64, debug: false, maxPerm: 256, daemon:true],
    // configure settings for the run-app JVM
    run: [maxMemory: 768, minMemory: 64, debug: false, maxPerm: 256, forkReserve:false],
    // configure settings for the run-war JVM
    war: [maxMemory: 768, minMemory: 64, debug: false, maxPerm: 256, forkReserve:false],
    // configure settings for the Console UI JVM
    console: [maxMemory: 768, minMemory: 64, debug: false, maxPerm: 256]
]

grails.project.dependency.resolver = "maven" // or ivy
grails.project.dependency.resolution = {
    // inherit Grails' default dependencies
    inherits("global") {
        // specify dependency exclusions here; for example, uncomment this to disable ehcache:
        // excludes 'ehcache'
    }
    log "error" // log level of Ivy resolver, either 'error', 'warn', 'info', 'debug' or 'verbose'
    checksums true // Whether to verify checksums on resolve
    legacyResolve false // whether to do a secondary resolve on plugin installation, not advised and here for backwards compatibility

    repositories {
        inherits true // Whether to inherit repository definitions from plugins

        grailsPlugins()
        grailsHome()
        mavenLocal()
        grailsCentral()
        mavenCentral()
        // uncomment these (or add new ones) to enable remote dependency resolution from public Maven repositories
        //mavenRepo "http://repository.codehaus.org"
        //mavenRepo "http://download.java.net/maven/2/"
        //mavenRepo "http://repository.jboss.com/maven2/"
    }

    dependencies {
        // specify dependencies here under either 'build', 'compile', 'runtime', 'test' or 'provided' scopes e.g.
        // runtime 'mysql:mysql-connector-java:5.1.29'
        // runtime 'org.postgresql:postgresql:9.3-1101-jdbc41'
        test "org.grails:grails-datastore-test-support:1.0.2-grails-2.4"
    }

    plugins {
        // plugins for the build system only
        build ":tomcat:7.0.55"

        // plugins for the compile step
        compile ":scaffolding:2.1.2"
        compile ':cache:1.1.8'
        compile ":asset-pipeline:1.9.9"

        // plugins needed at runtime but not for compilation
        runtime ":hibernate4:4.3.6.1" // or ":hibernate:3.6.10.18"
        runtime ":database-migration:1.4.0"
        runtime ":jquery:1.11.1"

        // Uncomment these to enable additional asset-pipeline capabilities
        //compile ":sass-asset-pipeline:1.9.0"
        //compile ":less-asset-pipeline:1.10.0"
        //compile ":coffee-asset-pipeline:1.8.0"
        //compile ":handlebars-asset-pipeline:1.3.0.3"
    }
}
  • 配置文件

    //搜索合并到主配置中的配置文件的位置;
    //配置文件可以是 ConfigSlurper 脚本、Java 属性文件或类
    //在 ConfigSlurper 格式的类路径中
    // grails.config.locations = [ "classpath:${appName}-config.properties",
    //                             "classpath:${appName}-config.groovy",
    //                             "file:${userHome}/.grails/${appName}-config.properties",
    //                             "file:${userHome}/.grails/${appName}-config.groovy"]
    
    // if (System.properties["${appName}.config.location"]) {
    //    grails.config.locations << "file:" + System.properties["${appName}.config.location"]
    // }
    
    grails.project.groupId = appName // change this to alter the default package name and Maven publishing destination
    
    // The ACCEPT header will not be used for content negotiation for user agents containing the following strings (defaults to the 4 major rendering engines)
    grails.mime.disable.accept.header.userAgents = ['Gecko', 'WebKit', 'Presto', 'Trident']
    grails.mime.types = [ // the first one is the default format
        all:           '*/*', // 'all' maps to '*' or the first available format in withFormat
        atom:          'application/atom+xml',
        css:           'text/css',
        csv:           'text/csv',
        form:          'application/x-www-form-urlencoded',
        html:          ['text/html','application/xhtml+xml'],
        js:            'text/javascript',
        json:          ['application/json', 'text/json'],
        multipartForm: 'multipart/form-data',
        rss:           'application/rss+xml',
        text:          'text/plain',
        hal:           ['application/hal+json','application/hal+xml'],
        xml:           ['text/xml', 'application/xml']
    ]
    
    // URL Mapping Cache Max Size, defaults to 5000
    //grails.urlmapping.cache.maxsize = 1000
    
    // Legacy setting for codec used to encode data with ${}
    grails.views.default.codec = "html"
    
    // The default scope for controllers. May be prototype, session or singleton.
    // If unspecified, controllers are prototype scoped.
    grails.controllers.defaultScope = 'singleton'
    
    // GSP settings
    grails {
        views {
            gsp {
                encoding = 'UTF-8'
                htmlcodec = 'xml' // use xml escaping instead of HTML4 escaping
                codecs {
                    expression = 'html' // escapes values inside ${}
                    scriptlet = 'html' // escapes output from scriptlets in GSPs
                    taglib = 'none' // escapes output from taglibs
                    staticparts = 'none' // escapes output from static template parts
                }
            }
            // escapes all not-encoded output at final stage of outputting
            // filteringCodecForContentType.'text/html' = 'html'
        }
    }
    
    
    grails.converters.encoding = "UTF-8"
    // scaffolding templates configuration
    grails.scaffolding.templates.domainSuffix = 'Instance'
    
    // Set to false to use the new Grails 1.2 JSONBuilder in the render method
    grails.json.legacy.builder = false
    // enabled native2ascii conversion of i18n properties files
    grails.enable.native2ascii = true
    // packages to include in Spring bean scanning
    grails.spring.bean.packages = []
    // whether to disable processing of multi part requests
    grails.web.disable.multipart=false
    
    // request parameters to mask when logging exceptions
    grails.exceptionresolver.params.exclude = ['password']
    
    // configure auto-caching of queries by default (if false you can cache individual queries with 'cache: true')
    grails.hibernate.cache.queries = false
    
    // configure passing transaction's read-only attribute to Hibernate session, queries and criterias
    // set "singleSession = false" OSIV mode in hibernate configuration after enabling
    grails.hibernate.pass.readonly = false
    // configure passing read-only to OSIV session by default, requires "singleSession = false" OSIV mode
    grails.hibernate.osiv.readonly = false
    grails.reload.enabled = true
    environments {
        development {
            grails.logging.jul.usebridge = true
        }
        production {
            grails.logging.jul.usebridge = false
            // TODO: grails.serverURL = "http://www.changeme.com"
        }
    }
    
    // log4j configuration
    log4j.main = {
        // Example of changing the log pattern for the default console appender:
        //
        //appenders {
        }
    
        error  'org.codehaus.groovy.grails.web.servlet',        // controllers
               'org.codehaus.groovy.grails.web.pages',          // GSP
               'org.codehaus.groovy.grails.web.sitemesh',       // layouts
               'org.codehaus.groovy.grails.web.mapping.filter', // URL mapping
               'org.codehaus.groovy.grails.web.mapping',        // URL mapping
               'org.codehaus.groovy.grails.commons',            // core / classloading
               'org.codehaus.groovy.grails.plugins',            // plugins
               'org.codehaus.groovy.grails.orm.hibernate',      // hibernate integration
               'org.springframework',
               'org.hibernate',
               'net.sf.ehcache.hibernate'
    }
    
  • 在 index.gsp 中添加了一行:

  • Click
  • 创建的 Controller 名称 Student

    包 project.bidesi.check
    类学生 Controller {
    定义索引(){}
    def blankAction(){
        render(view:"/student/blankAction", model:[mineData:"ppppp"])
    }
    

    }
  • 创建了 gsp 名称 blankAction.gsp





    示例标题


    sample 线
    ${mineData}


  • 因此,当我在 Controller 中更改 mineData 的值时,它不会反射(reflect)在 gsp 中,而是在输出提示中我收到如下消息:
    | Server running. Browse to http://localhost:8080/checkNew
    | Compiling 1 source files.
    

    即使我尝试使用命令
    grails -reloading run-app
    

    但这无济于事。

    最佳答案

    看来您的问题出在 grails.project.fork 设置中。我建议根据此处 Grails 2.3.0 Auto-reloading not working 明确设置您的 fork 设置

    关于grails - 热代码修复正在编译但未在 grails 2.4.4 中选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28585143/

    相关文章:

    grails - Grails 3 中的运行脚本替代方案

    Grails:关闭 Controller 操作的 Codenarc NoDef 规则

    grails - Grails 3.2.2 spring-security-ui覆盖RegisterController不起作用

    javascript - Grails - 根据 confirm() 提示信息执行表行删除

    unit-testing - 单元测试和重构现有 Grails 应用程序的策略

    grails - Grails:拦截表格要求

    maven - 如何在Grails依赖项中指定<type>?

    grails - 强制Grails升级插件使用的库的正确方法

    hibernate - Grails 单元测试中不包含哪些动态方法?

    tomcat - 无法在 grails 中创建 JNDI 对象