Groovy-extensions结构
我想扩展Groovy-extensions结构,groovy,Groovy,我想扩展String的asType方法来处理LocalDateTime。我知道如何重写这个方法,但是我不知道应该把它放在项目结构中的什么位置来全局工作——对于我项目中的所有字符串。把这样的扩展放在类路径的任何地方就足够了吗?我知道对于扩展(META-INF/服务)有一个特殊的约定,它是如何用于方法重写的?关于这个主题的所有文档都可以找到。确切地说,可以找到相关的部分 模块扩展和模块描述符 为了让Groovy能够加载扩展方法,必须声明 您的扩展助手类。您必须创建一个名为 org.codehaus.
String
的asType
方法来处理LocalDateTime
。我知道如何重写这个方法,但是我不知道应该把它放在项目结构中的什么位置来全局工作——对于我项目中的所有字符串。把这样的扩展放在类路径的任何地方就足够了吗?我知道对于扩展(META-INF/服务)有一个特殊的约定,它是如何用于方法重写的?关于这个主题的所有文档都可以找到。确切地说,可以找到相关的部分
模块扩展和模块描述符
为了让Groovy能够加载扩展方法,必须声明
您的扩展助手类。您必须创建一个名为
org.codehaus.groovy.runtime.ExtensionModule插入META-INF/services
目录:
org.codehaus.groovy.runtime.extensionmodulemodulename=的测试模块
规格模数转换=1.0-测试
extensionclass=support.MaxRetriesExtension
staticExtensionClasses=support.StaticStringExtension模块
描述符需要4个键:
moduleName:模块的名称
moduleVersion:模块的版本。请注意,版本号为
仅用于检查两个模块中是否没有加载相同的模块
不同的版本
extensionClasses:实例的扩展助手类列表
方法。您可以提供几个类,只要它们是逗号
分开
staticExtensionClasses:的扩展助手类列表
静态方法。您可以提供几个类,因为它们是
逗号分隔
请注意,模块不需要同时定义静态和静态
帮助程序和实例帮助程序,您可以向其中添加几个类
单个模块。您还可以在单个数据库中扩展不同的类
模块没有问题。甚至可以使用不同的类
在单个扩展类中,但建议将扩展分组
方法按特征集划分为类
模块扩展和类路径
值得注意的是,您不能使用在
与使用它的代码相同。这意味着要使用扩展,
它必须在类路径上可用,作为编译类,在
使用它的代码被编译。通常,这意味着你不能
测试类与扩展类位于同一源单元中
它本身因为一般来说,测试源与正常源是分开的
并在构建的另一个步骤中执行,这不是
问题