`
sillycat
  • 浏览: 2552313 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

Grails(4)Guide Book Chapter 4 Configuration and Command Line

 
阅读更多
Grails(4)Guide Book Chapter 4 Configuration and Command Line

4.7.2 Dependency Repositories
Remote Repositories
Initially your BuildConfig.groovy does not use any remote public Maven repositories. There is a default grailsHome() repository that will locate the JAR files Grails needs from my Grails installation. To configure a public repository, specify it in repositories block:

repositories {
     mavenCentral()     //maven center
     ebr()                    //spring source enterprise bundle repository
}

we can also specify a specific URL
repositories{
     mavenRepo name: "Codehaus", root: "http://repository.codehaus.org"
}

Controlling Repositories Inherited from Plugins
There is a flag for inherit

repositories{
     inherit false
}

Offline Mode
There are times when it is not desirable to connect to any remote repositories(whilst working on the train for example)
>grails --offline run-app

Or do that in BuildConfig.groovy file:
grails.offline.mode=true

Local Resolvers
repositories {
     flatDir name: 'myRepo', dirs: '/path/to/repo'
}

To specify my local Maven cache (~/.m2/repository) as a repository:
repositories {
     mavenLocal()
}

Custom Resolvers
org.apache.ivy.plugins.resolver.URLResolver()
org.apache.ivy.plugins.resolver.SshResolver

Authentication
This can be placed in USER_HOME/.grails/settings.groovy file
grails.project.ivy.authentication = {
     credentials {
          realm = ".."
          host = "localhost"
          username = "user"
          password = "111111"
     }
}

4.7.3 Debugging Resolution
4.7.5 Providing Default Dependencies
Sometimes, the jar files will be provided by the container.

grails.project.dependency.resolution = {
     defaultDependenciesProvided true // all of the default dependencies will
                                                       // be 'provided' by the container
     …snip...
}

4.7.7 Dependency Reports
4.7.9 Maven Integration
grails.project.dependency.resolution = {
     pom true
     ...
}
The line pom true tells Grails to parse Maven's pom.xml and load dependencies from there.

4.7.10 Deploying to a Maven Repository
>grails maven-install
>grails maven-deploy

4.7.11 Plugin Dependencies
grails.project.dependency.resolution = {
     …    
     repositories {
     }
     plugins {
          runtime ':hibernate:1.2.1'
     }
     dependencies{
     }
}

Plugin Exclusions
plugins {
     runtime(':weceem:0.8'){
          excludes "searchable" //excludes most recent version
     }
     runtime ':searchable:0.5.4' //specifies a fixed searchable version
}

5. The Command Line
Grails' command line system is built on Gant - a simple Groovy wrapper around Apache ant.

Grails searches in the following directories for Gant scripts to execute:
USER_HOME/.gails/scripts
PROJECT_HOME/scripts
PROJECT_HOME/plugins/*/scripts
GRAILS_HOME/scripts

Grails will also convert command names that are in lower case.
>grails run-app
This command will look for RunApp.groovy.

From my understanding, seldom, we need some configuration.
>export GRAILS_OPTS="-Xmx1G -Xms256m -XX:MaxPermSize=256m"
>grails run-app

5.1 Interactive Mode
>grails
Enter interactive mode, then we can get a lot of help when we type tab button.
grails>

If we want to run an external process whilst interactive mode is running. We can do so by starting the command with !
grails>!ls
that will list all the file under this directory.

!ls !pwd some commands are working, for example, !cd is not working.

5.2 Forked Tomcat Execution
Grails 2.2 and above

5.3 Creating Gant Scripts
We can create our own Gant scripts by running the create-script command.
>grails create-script compile-sources

That will create a script called scripts/CompileSources.groovy

5.4 Re-using Grails scripts
includeTargets << grailsScript("_GrailsBootstrap")

includeTarget << new File("/path/to/my/own/script.groovy")

5.5 Hooking into Events
Event handlers are defined in scripts called _Events.groovy

5.6 Customizing the build
5.7 Ant and Maven
Ant Integration
>grails integrate-with --ant

Maven Integration
If my project named hellosillycat
>cd hellosillycat
>grails create-pom com.sillycat

5.8 Grails Wrapper
Generating The Wrapper
build the project with install grails
>grails wrapper

Using The Wrapper
./grailsw create-domain-class com.sillycat.Person
./grailsw run-app

6. Object Relational Mapping(GORM)
6.1 Quick Start Guide
A domain class can be created with the create-domain-class command
>grails create-domain-class hello world.Person

We can customize the class by adding properties:
class Person {
     String name
     Integer age
     Date lastVist
}

6.1.1 Basic CRUD(Create/Read/Update/Delete)
Create
def p = new Person(name: "Carl", age: 30, lastVisit: new Date())
p.save()

Read
def p = Person.get(1)
assert 1 == p.id

Grails transparently adds an implicit id property to your domain class which you can use for retrieval.

We can also read the Person object back from the database
def p = Person.read(1)

This incurs no database access until a method other than getId(0 is called. That is to say, lazy load
def p = Person.load(1)

Update
Update some properties, then call save method
def  p = Person.get(1)
p.name = "Kiko"
p.save()

Delete
def p = Person.get(1)
p.delete()

6.2 Domain Modeling in GORM
6.2.1 Association in GORM
6.2.1.1 Many-to-one and one-to-one
6.2.1.2 One-to-many
class Author {
     static hasMany = [Books: Book]
     String name
}

class Book {
     static belongsTo = [author: Author]
     String title
}

6.2.1.3 Many-to-many
class Book{
     static belongsTo = Author
     static hasMany = [authors:Author]
     String title
}

class Author{
     static hasMany = [books:Book]
     String name
}

6.2.4 Sets, Lists and Maps
Sets of Objects
static hasMany = [books: Book]
It is a java.util.Set. Sets guarantee uniqueness but not order.

If we need order, we need to implement java.lang.Comparable. And define SortedSet
class Author {
     SortedSet books
     static hasMany = [books: Book]
}

class Book implements Comparable {
     String title
     Date releaseDate = new Date()
    
     int compareTo(obj) {
          releaseDate.compareTo(obj.releaseDate)
     }
}

Lists of Objects
class Author {
     List books
     static hasMany = [books: Book]
}

Bags of Objects
class Author {
     Collection books
     static hasMany = [books: Book]
}

Maps of Objects
class Author {
     Map books
}

def a = new Author()
a.books = ["key number“: "book name"]

References:
http://grails.org/doc/latest/guide/conf.html#dependencyRepositories
http://grails.org/doc/latest/guide/index.html
http://grails.org/doc/latest/guide/commandLine.html
http://grails.org/doc/latest/guide/GORM.html


分享到:
评论

相关推荐

    the definitive guide to grails 2

    《Grails 2 的终极指南》是一本深入探讨Grails框架精髓的专业书籍,该书以英文撰写,旨在为读者提供全面、深入的Grails框架学习资料。Grails框架基于Groovy语言,是一种高度动态、敏捷的Java应用开发框架,它简化了...

    The definitive guide to grails 2 英文版 书 代码

    《The Definitive Guide to Grails 2》是Grails框架深入学习的重要参考资料,由业界专家撰写,旨在为开发者提供全面、详尽的Grails 2技术指导。这本书结合了理论与实践,不仅介绍了Grails的基本概念,还涵盖了高级...

    Grails : A Quick-Start Guide

    Using the principle of convention-over-configuration and the dynamic Groovy programming language, Grails takes the pain out of web development and brings back the fun. This book will get you up and ...

    The definitive Guide To Grails学习笔记

    Grails的自动化工具如命令行接口(Command Line Interface, CLI)也会被提及,它是快速搭建项目的关键。 第二篇笔记可能涉及Grails的领域模型(Domain Model),这是Grails中的核心组件,用于描述业务对象和它们...

    Grails1.0_final_doc_and_API

    6. **Command-line工具**:Grails命令行工具用于项目初始化、运行、测试等操作,是日常开发中的得力助手。 API部分,"grails-API-1.0"提供了Grails 1.0核心库的详细接口说明,包括核心类、方法和属性。这为开发者...

    Groovy / Grails F4

    Groovy / Grails F4 The Best Web Server

    Grails Grails Grails

    4. **命令行工具**:Grails 提供强大的命令行工具,支持创建项目、运行应用、生成代码等任务,大大提升了开发效率。 5. **构建工具**:Grails 使用Gradle作为其构建工具,允许自定义构建流程和依赖管理。 **Grails...

    Grails-2.4.4-用户手册

    4. **Grails Command Line Interface (CLI)**:强大的命令行工具,允许快速创建项目、生成代码、运行测试和部署应用。 **二、核心概念** 1. **Controllers**:负责处理HTTP请求,调用服务层方法,准备数据,并将...

    一步一步学grails(4)

    在Grails框架中,GORM(Groovy Object Relational Mapping)是用于数据库操作的重要部分,它简化了对象与数据库表之间的映射。在本教程中,我们将深入探讨如何使用GORM处理1:M(一对一到多)关系。教程中提到的项目...

    The definate guide to Grails

    4. **参与社区**:加入 Grails 社区,与其他开发者交流心得,获取最新的技术动态。 《Grails 完全指南》不仅是一本学习资料,更是一份宝贵的资源,它帮助开发者全面掌握 Grails 框架,从而在 Java Web 开发领域取得...

    Grails中文参考手册

    **Grails Command Line Interface (CLI)** Grails 提供了一个强大的命令行工具,用于初始化项目、创建域类、生成控制器、运行测试等。这大大提高了开发效率,减少了手动编写配置文件的工作。 **Testing** Grails ...

    eclipse开发grails插件

    4. **创建Grails项目**:现在,你可以通过Eclipse的"New" -&gt; "Grails Project"来创建一个新的Grails项目。选择合适的Grails版本和其他配置,然后Eclipse会自动生成项目结构。 5. **开发与调试**:在Eclipse中,你...

    grails-4.0.4.zip

    4. **Grails命令行工具**:Grails提供了强大的命令行工具,用于项目初始化、创建控制器、服务、域类等。这些命令极大地简化了开发流程,使得开发者可以快速生成符合约定的代码结构。 5. **插件系统**:Grails的插件...

    grails-core源码

    1. **Command Line Interface (CLI)**:Grails的命令行接口是开发者与框架交互的主要方式,`Main`类是入口点,负责解析命令行参数并调用相应的命令处理器。 2. **Bootstrap**:在Grails应用启动时,`Bootstrap`类...

    grails 开发框架-4

    grails1.0开发框架4 类似于ruby on rails的框架。

    Grails权威指南 Grails权威指南

    4. **Grails命令行工具**:提供了一系列的命令,如`generate-all`用于自动生成控制器、视图和模型类,极大地提高了开发效率。 5. **Grails插件系统**:Grails拥有庞大的插件库,涵盖各种功能,如安全、缓存、报表、...

    Definitive.Guide.to.Grails

    Definitive Guide to Grails

    grails 3.3.2 资源下载

    4. **Grails Command Line Interface (CLI)**: Grails 3.3.2 包含了强大的命令行工具,允许开发者快速创建项目、运行测试、构建应用等。这极大地提高了开发效率,减少了手动配置的时间。 5. **Grails Plugins**: ...

Global site tag (gtag.js) - Google Analytics