Статьи

Grails Goodness: Расширение команды IntegrateWith

Мы можем расширить команду integrate-with в Grails для генерации файлов для пользовательской среды IDE или системы сборки. Мы должны добавить файл _Events.groovy в наши проекты Grails, а затем написать реализацию для события eventIntegrateWithStart . Внутри события мы должны определить новое замыкание с нашим кодом для генерации файлов. Имя замыкания должно иметь следующий шаблон: binding.integrate CustomIdentifier . Значение CustomIdentifier можно использовать в качестве аргумента для команды integrate-with .

Предположим, мы хотим расширить integrate-with чтобы создать простой файл проекта Sublime Text . Сначала мы создаем шаблонный файл проекта Sublime Text, в котором мы определяем папки для приложения Grails. Мы создаем папку src/ide-support/sublimetext и добавляем файл grailsProject.sublimetext-project со следующим содержимым:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
{
    "folders": [
        {
            "name": "Domain classes",
            "path": "grails-app/domain"
        },
        {
            "name": "Controllers",
            "path": "grails-app/controllers"
        },
        {
            "name": "Taglibs",
            "path": "grails-app/taglib"
        },
        {
            "name": "Views",
            "path": "grails-app/views"
        },
        {
            "name": "Services",
            "path": "grails-app/services"
        },
        {
            "name": "Configuration",
            "path": "grails-app/conf"
        },
        {
            "name": "grails-app/i18n",
            "path": "grails-app/i18n"
        },
        {
            "name": "grails-app/utils",
            "path": "grails-app/utils"
        },
        {
            "name": "grails-app/migrations",
            "path": "grails-app/migrations"
        },
        {
            "name": "web-app",
            "path": "web-app"
        },
        {
            "name": "Scripts",
            "path": "scripts"
        },
        {
            "name": "Sources:groovy",
            "path": "src/groovy"
        },
        {
            "name": "Sources:java",
            "path": "src/java"
        },
        {
            "name": "Tests:integration",
            "path": "test/integration"
        },
        {
            "name": "Tests:unit",
            "path": "test/unit"
        },
        {
            "name": "All files",
            "follow_symlinks": true,
            "path": "."
        }
    ]
}

Далее мы создаем файл scripts/_Events.groovy :

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
includeTargets << grailsScript("_GrailsInit")
 
eventIntegrateWithStart = {
 
    // Usage: integrate-with --sublimeText
    binding.integrateSublimeText = {
 
        // Copy template file.
        ant.copy(todir: basedir) {
            fileset(dir: "src/ide-support/sublimetext/")
        }
 
        // Move template file to real project file with name of Grails application.
        ant.move(file: "$basedir/grailsProject.sublime-project",
                 tofile: "$basedir/${grailsAppName}.sublime-project",
                 overwrite: true)
 
        grailsConsole.updateStatus "Created SublimeText project file"
    }
}

Мы закончили и теперь можем запустить команду integrate-with с новым аргументом sublimeText :

1
2
3
$ grails integrate-with --sublimeText
| Created SublimeText project file.
$

Если мы откроем проект в Sublime Text, мы увидим структуру папок для приложения Grails:

интегративно-с-й

Код, написанный с помощью Grails 2.3.7.

Ссылка: Совершенство Grails: расширение команды IntegrateWith от нашего партнера JCG Хьюберта Иккинка в блоге JDriven .