【发布时间】:2017-10-29 11:38:12
【问题描述】:
我正在开发一个 Maven 插件,我需要修改一个外部 jar 类(在 maven 执行期间使用),以添加:
- 此类的新字段
- 领域的吸气剂
- 现有 setter 填充字段的一些行为
库代码应该使用我的“新”类,并且我希望能够使用 getter 来检索一些附加信息。
这个类的实例是在库代码中创建的(我没有在我的代码中创建它们,我只需要访问它们)。 类是非最终的公共类。
您知道这是否可行,哪种方法最好? ByteBuddy可以做到吗?
编辑:我无法包装该类,因为它没有在我自己的代码中实例化,让我详细说明一下。
有一个名为“Parser”的库类实例化和填充一些“Element”实例。我的代码如下:
List<library.Element> elements = new library.Parser(file).parse();
Parser.parse() 方法在每个元素上调用“Element.setProperties(List properties)”。 我希望能够丰富 setProperties 方法来存储原始属性列表(否则会丢失)
谢谢 朱利奥
【问题讨论】:
-
类的实例在哪里创建?在库之外并用作输入或?课程结束了吗?
-
根据您的问题编辑了问题。
-
为什么要修改一个外部jar的类?为什么不编写一个简单的包装类并相应地对其进行更改并将jar与包装类一起使用,而不是编写一个完整的maven插件?
-
也许 fork 依赖,根据需要重写类并在自己的 jar 中提供阴影版本?
-
我已经进一步澄清了这个问题。我宁愿不分叉依赖,因为它只是一个类的一个小改动
标签: java maven byte-buddy