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