您的位置:首页 > 其它

编译ngrok的Windows、Mac的客户端

2016-03-08 15:13 260 查看
新建项目

准备工作做完了,开始创建项目,这里要说一下,Grails这种脚手架方式和一般传统的开发模式有点不同,因为它是遵循规约大于配置的方式,所以每个类、配置文件等所有文件都要求在固定的位置和相应的名称,所以它可以帮你预先创建好这些文件和类,这就是所谓的脚手架,就是帮你生成好默认模板代码。使用Grails开发的模式是生成->测试->修改/编码->完成,和传统模式有些区别,所以使用Grails来做项目可能需要有一个适应的阶段。

现在开始建立项目。进入powercmd,cd到你的项目目录(powercmd可以目录补全,tab键)。例如我的:e:/projects

在这里输入建立项目的命令:grails create-app leadtoasia

(leadtoasia项目名称,也是因为要做这个项目,才想吧整个项目开发过程记录下来汇总成一系列Grails开发的文章)

会看到一些信息,这些告诉你都生成了些什么,如果有兴趣可以看看。完成之后会在e:/projects/leadtoasia目录下生成了这个项目。

其目录结构如下:



grails-app : 项目源代码主目录

lib : 存放项目中用到的jar文件的,相当于/WEB-INF/lib

scripts : 可以编写自定义脚本,用于项目的编译生成等工作

src :除规约以内的其他源代码,可以是Groovy或java

target : Grails 1.20后吧编译过程中的class文件或测试报告文件放在这里

test : 单元测试和集成测试代码

web-app : web的静态文件

application.properties : 项目和插件的管理文件,一般不要改动

design : 这个不是Grails生成的,就是因为Grails没有生成存放设计文档的目录,一般我会自己建立一个这样的目录。

devDb.properties : 内存数据hsqldb配置文件

devDb.script : 内存数据库hsqldb数据文件

g.bat : 命令行简化工具,后面详细说。

看看grails-app目录中的内容,项目源代码主目录

conf : 项目配置信息

controllers : 控制器,mvc的控制层

domain : 域对象, mvc的model层

i18n : 国际化

services : 服务

taglib : 标签

utils : 工具类

views : gsp页面,mvc的view层

 

项目配置
conf目录下的代码和作用


BootStrap.groovy : 项目自定义启动和关闭事件

BuildConfig.groovy :构建配置,可以支持maven或ant

Config.groovy : 项目主配置文件,配置一些默认信息,log4j,不同环境下的变量,还有可以自定义配置

DataSource.groovy : 数据库配置,可以根据不同的环境配置不同的变量,有 development,test,production三种环境,为他们分别配置数据信息。

hibernate : hibernate的自定义配置,基本用不到

spring : spring的自定义配置,基本也用不到

UrlMappings.groovy : url映射和转发,看了你就明白

以上这么多,如果你是初次接触Grails暂时可能看不明白,这是正常,随着你深入了解Grails,这些都会对你非常重要,也会非常熟悉的,现在你只需要浏览一下,直到大概就可以。

项目建成后,通过上面的命令也了解了大概项目的结构,现在可以运行一下看看有什么东东,执行:

grails run-app

会有一些输出信息,但最后你会看到 Server running. Browse to http://localhost:8080/leadtoasia
这就说明项目启动成功了,拷贝powercmd窗口中这个地址 http://localhost:8080/leadtoasia (powercmd方便吧!哈哈)到浏览器里看看,可以看到项目的默认界面。

 

了解conf和Config.groovy和groovy和DataSource


浏览一下Config.groovy和DataSource.groovy文件,内容很直观,config是项目的一些统一配置,DataSource是数据库参数配置,因为Grails的ORM用的是Hibernate所以DataSource内可以直接使用Hibernate的配置参数和值。

这样不用写xml配置文件的Hibernate是不是已经让你很爽了,但我觉得config文件中最值得一说还不是这些,而是Grails的环境配置机制。Grails允许你为不同的环境配置参数,共有三种环境,production、development、test。

你以前可能遇见过这样的情况,项目打包部署到生产服务器时,需要把很多配置信息、数据库连接等等改成生产环境的配置。这是非常无聊而且容易出错的工作。有了这个机制就可以彻底解决这个问题和类似的问题。DataSource.groovy也是一样,可以为三种环境配置不同的数据库连接和类型,甚至不同的环境配置不同的Hibernate参数,缓冲,连接池、连接不同的数据库等等。而且后面参数覆盖前面的参数,也就是说你可以吧默认参数写在最外面,然后在后面可以通过覆盖调整。

而且你会在Config.groovy文件中看到以下面的代码,同一个变量定义了三次,而且都不一样。

environments {

production {

grails.serverURL = "http://www.changeme.com"

}

development {

grails.serverURL = "http://localhost:8080/${appName}"

}

test {

grails.serverURL = "http://localhost:8080/${appName}"

}

}

 
 

这些变量你在需要使用时只需要调用,grailsApplication.config.grails.serverURL,就会根据你当时的环境获得相应的变量。明白了吗?Grails提供三种运行环境。你在运行项目时可以通过参数确定环境。

 

grails run-app //默认的dev开发环境

grails war //默认prod 产品环境

grails test-app // 默认测试环境

grails prod run-app //强制产品环境

 
所以你就可以继续扩展很多变量在这个下面。比如这样:

environments {

production {

grails.serverURL = "http://www.changeme.com"

file.store = "d:\\files\\"

}

development {

grails.serverURL = "http://localhost:8080/${appName}"

file.store = "/data/uploads/"

}

test {

grails.serverURL = "http://localhost:8080/${appName}"

file.store = "d:\\test\\"

}
}

 

这样就可以解决你在win平台下开发,而部署应用到linux服务器中而不需要修改任何配置文件。爽吧

配置Log

// log4j configuratio
log4j = {
// Example of changing the log pattern for the default console
// appender:
//
appenders {

//        console name:'stdout', layout:pattern(conversionPattern: '%c{2} %m%n')

}

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 integratio
'org.springframework',
'org.hibernate',
'net.sf.ehcache.hibernate'
warn   'org.mortbay.log'

}

 

这些就是Grails默认对log4j的配置,又见到这种Groovy独有的语法,非常简单易懂方便理解。这里有两个地方可能我们需要调整。

一个是:appenders,在appenders里可以添加自定义的日志内容格式。

比如:     console name:'stdout', layout:pattern(conversionPattern: '[%d{yyyy/MM/dd HH:mm}] [%p] [%c{2} %L] - %m%n')

还有就是定义在我们项目中输出那些日志,非常简单。

    info "grails.app.domain"

    info "grails.app.controller"

    info "grails.app.service"

info是日志级别,"grails.app.domain"是需要输出的类,方便吧!!!下面是所有可选的日志范围。

    * bootstrap - For bootstrap classes

    * dataSource - For data sources

    * tagLib - For tag libraries

    * service - For service classes

    * controller - For controllers

    * domain - For domain entities

结合前面讲到的环境变量机制和覆盖机制你的log4j配置信息应该是这样的。

默认的配置不动,添加下面这段在Config.groovy

environments {
production {
grails.serverURL = "http://www.changeme.com"

}

development {

grails.serverURL = "http://localhost:8080/${appName}"

log4j = {

appenders {
console name:'stdout', layout:pattern(conversionPattern: '[%d{yyyy/MM/dd HH:mm}] [%p] [%c{2} %L] - %m%n')

}

info "grails.app.domain"
info "grails.app.controller"
info "grails.app.service"
}

}

test {

grails.serverURL = "http://localhost:8080/${appName}"

}
}

 
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: