Начиная с Groovy 2.1 мы можем использовать хороший синтаксис компоновщика для определения настройщиков для экземпляра CompileConfiguration . Мы должны использовать статический метод withConfig класса CompilerCustomizationBuilder в пакете org.codehaus.groovy.control.customizers.builder . Мы передаем замыкание с кодом для определения и регистрации настройщиков. Для всех различных настройщиков, таких как ImportCustomizer , SecureASTCustomizers и ASTTransformationCustomizer существует приятный компактный синтаксис.
В следующем примере мы используем этот синтаксис компоновщика для определения различных настройщиков для экземпляра CompileConfiguration :
|
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
|
package com.mrhaki.blogimport org.codehaus.groovy.control.customizers.ASTTransformationCustomizerimport org.codehaus.groovy.control.CompilerConfigurationimport org.codehaus.groovy.control.customizers.builder.CompilerCustomizationBuilderimport groovy.transform.*def conf = new CompilerConfiguration()// Define CompilerConfiguration using // builder syntax.CompilerCustomizationBuilder.withConfig(conf) { ast(TupleConstructor) ast(ToString, includeNames: true, includePackage: false) imports { alias 'Inet', 'java.net.URL' } secureAst { methodDefinitionAllowed = false }}def shell = new GroovyShell(conf)shell.evaluate '''package com.mrhaki.blogclass User { String username, fullname}// TupleConstructor is added.def user = new User('mrhaki', 'Hubert A. Klein Ikkink')// toString() added by ToString transformation.assert user.toString() == 'User(username:mrhaki, fullname:Hubert A. Klein Ikkink)'// Use alias import.assert site.text''' |
Код написанный с Groovy 2.2.2.
| Ссылка: | Groovy Goodness: определите настройщики компиляции с помощью синтаксиса Builder от нашего партнера по JCG Хьюберта Иккинка в блоге JDriven . |