欢迎大家赞助一杯啤酒🍺 我们准备了下酒菜:Formal mathematics/Isabelle/ML, Formal verification/Coq/ACL2, C++/F#/Lisp
Grails
Grails关注将"规约编程"(coding by convention)引入Groovy。它是一个开放源网络应用构架, 对Groovy语言起到杠杆作用,并且对Java网络开发起到补足作用。你可以用Grails 作为独立开发环境, 它隐藏了所有的配置细节,也可以将它同和入你的Java商务逻辑。
Grails关注与使开发最简化,而且Grails的解决方案来自于广泛的开发者,不只局限于Java社区。
Grails构建在开源技术如Spring、Hibernate和SiteMesh之上,提供了一个类似于Rails 的平台可以与Java平台无缝集成. Groovy是一种“动态”或指令语言。动态语言一般用来加速和简化程序撰写。与Python或Ruby等其他指令语言不同的是,用Groovy撰写的程序,可与Java虚拟器结合。
目录 |
Install
wget http://download.huihoo.com/grails/grails-bin-1.0.1.zip GRAILS_HOME= C:\grails-1.0.1 or /usr/local/grails-1.0.1 Add the "%GRAILS_HOME%\bin" directory to your PATH environment variable Add the "%GRAILS_HOME%\ant\bin directory to your PATH environment variable. grails create-app input project name: my-project cd my-project grails create-domain-class input domain name: Book
my-project\grails-app\domain\Book.groovy
class Book { String title String author }
my-project\grails-app\conf\BootStrap.groovy
class BootStrap {
def init = { servletContext -> // Create some test data new Book(author:"Stephen King",title:"The Shining").save() new Book(author:"James Patterson",title:"Along Came a Spider").save() } def destroy = { } }
my-project\grails-app\controllers\BookController.groovy
class BookController { def scaffold = Book } grails run-app http://localhost:8080/my-project/ http://localhost:8080/my-project/book 运行成功 :)
To upgrade your existing Grails projects you must run:
grails clean grails upgrade
NetBeans
http://wiki.netbeans.org/groovy
CRUD
Create
def p = new Person(name:"Jack", age:32, lastVisit:new Date()) p.save()
Read
def p = Person.get(1) assert 1 == p.id
Update
def p = Person.get(1) p.name = "Peter" p.save()
Delete
def p = Person.get(1) p.delete()
GORM
One-to-one
class Face { Nose nose } class Nose { static belongsTo = [face:Face] } new Face(nose:new Nose()).save() // ok
def f = Face.get(1) f.delete() // both Face and Nose deleted
One-to-many
class Author { static hasMany = [ books : Book ] String name } class Book { static belongsTo = [author:Author] String title }
Many-to-many
class Book { static belongsTo = Author static hasMany = [authors:Author] String title } class Author { static hasMany = [books:Book] String name }
GPath: Groovy's ability to manipulate collections via GPath and methods like sort, findAll and so on combined with GORM results in a powerful combination.
def books = Book.list() def books = Book.list(offset:10, max:20) def books = Book.list(sort:"title", order:"asc") def book = Book.get(23) def books = Book.getAll(23, 93, 81) def book = Book.findByTitle("The Stand")
Usage
grails help
- grails bootstrap
- grails bug-report
- grails clean
- grails compile
- grails console
- grails create-app
- grails create-controller
- grails create-domain-class
- grails create-integration-test
- grails create-plugin
- grails create-script
- grails create-service
- grails create-tag-lib
- grails create-unit-test
- grails doc
- grails generate-all
- grails generate-controller
- grails generate-views
- grails help
- grails init
- grails install-plugin
- grails install-templates
- grails list-plugins
- grails package
- grails package-plugin
- grails package-plugins
- grails plugin-info
- grails release-plugin
- grails run-app
- grails run-app-https
- grails set-proxy
- grails set-version
- grails shell
- grails stats
- grails test-app
- grails upgrade
- grails war
Plugins
grails list-plugins
Plug-ins available in the Grails repository are listed below:
- acegi <no releases> -- No description available
- aop <no releases> -- No description available
- autorest <no releases> -- No description available
- axis2 <0.1> -- Add Web Service support for Grails services using Apaxhe Axis2.
- cache <no releases> -- No description available
- cas-client <0.2> -- This plugin provides client integration for JA-SIG CAS
- code-coverage <0.7> -- Generates Code Coverage reports
- converters <0.3> -- Provides JSON and XML Conversion for common Objects (Domain Classes, Lists, Maps, POJO)
- dbmapper <0.1.7> -- Database relation to domain object generator
- dbmigrate <0.1.5> -- Database migration tasks
- djangotemplates <no releases> -- No description available
- dojo <0.4.3> -- Provides integration with the Dojo toolkit http://dojotoolkit.org, an Ajax framework.
- dwr <0.1> -- This plugin adds DWR capabilies to the services in a Grails application.
- eastwood-chart <0.1> -- This plugin wraps JFreeChart's Eastwood servlet for Grails app
- echo2 <0.1> -- Echo2 capabilities to Grails applications
- ext-ui <no releases> -- No description available
- fck-editor <0.3> -- FCKeditor
- feeds <1.0> -- Render RSS/Atom feeds with a simple builder
- flex <0.1> -- Provides integration between Grails and Flex
- google-chart <0.4.3> -- This plugin adds Google Chart API features to Grails applications.
- gwt <0.2.4> -- The Google Web Toolkit for Grails.
- i18n-templates <1.0.1> -- I18n Templates
- ivy <0.1> -- The Ivy Dependency Manager for Grails.
- jasper <0.5> --
- jcaptcha <0.2> -- Grails JCaptcha Plugin
- jcr <no releases> -- No description available
- jms <0.3> -- This plugin adds MDB functionality to services.
- jsecurity <0.1.1> -- Security support via the JSecurity framework.
- jsf <no releases> -- No description available
- laszlo <0.6> -- OpenLaszlo plugin for Grails
- ldap <0.1> -- Adds easy to use LDAP connectivity
- liquibase <1.5.2.0> -- LiquiBase Database Refactoring for Grails
- modalbox <0.1> -- This plugin adds the ModalBox to your Grails applications.
- mondrian <0.1> -- This plugin installs Pentaho Mondrian into your Grails application.
- ofchart <0.5> --
- portlets <no releases> -- No description available
- quartz <0.2 (?)> -- This plugin adds Quartz job scheduling features to Grails application.
- radeox <0.1> -- A plugin for the Radeox Wiki-render engine to allow easy markup and cross-linking.
- remoting <0.3> -- Adds easy-to-use server-side and client-side RPC support.
- richui <0.2> -- Provides a set of AJAX components
- scaffold-tags <0.7> -- Adds tags to support fully-customizable & dynamic scaffolding
- searchable <0.4-SNAPSHOT> -- Adds rich search functionality to Grails domain models.
- staticresources <no releases> -- No description available
- webtest <0.3> -- A plug-in that provides functional testing for Grails using Canoo Web Test
- wicket <0.3> -- Provides integration between Grails and the Wicket framework
- xfire <0.7.4> -- Add Web Service support for Grails services using XFire.
- xmlrpc <0.1> -- This plugin adds XML RPC functionality to GRAILS
- yui <2.5.0> -- Yahoo! User Interface Library (YUI)
- yui-widgets <0.1> -- Yahoo! User Interface Library (YUI) Widgets
To find more info about plugin type 'grails plugin-info [NAME]'
To install type 'grails install-plugin [NAME] [VERSION]'
grails install-plugin yui 2.5.0
For further info visit http://grails.org/Plugins
Ext
grails install-plugin ext or grails install-plugin ext 2.0.2 Ext has installed under your project's /web-app/js/ext/2.0.2
More Detail: http://grails.org/Ext+Plugin
Using ExtJS Layouts with Grails Layouts
GWT
grails install-plugin gwt grails create-gwt-module <module> grails compile-gwt-modules grails create-gwt-page grails events grails run-gwt-client
More Detail: http://www.grails.org/GWT+Plugin
Tutorials
Build Your First Grails Project: A Grails-Powered Blog
相关项目
Samples
http://svn.codehaus.org/grails/trunk/grails-samples/