Мы можем расширить команду 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 . |