Начиная с 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.blog import org.codehaus.groovy.control.customizers.ASTTransformationCustomizer import org.codehaus.groovy.control.CompilerConfiguration import org.codehaus.groovy.control.customizers.builder.CompilerCustomizationBuilder import 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.blog class 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 . |