如何将 cxf-xjc-ts 与 lang3 中的 ToStringBuilder 一起使用?

How to use cxf-xjc-ts with ToStringBuilder from lang3?

xsdtojava期间使用cxf-xjc-ts插件时,可以添加属性<extensionArg>-Xts</extensionArg>让编译器生成如下方法:

import org.apache.commons.lang.builder.ToStringBuilder;

    @Override
    public String toString() {
        return ToStringBuilder.reflectionToString(this, JAXBToStringStyle.DEFAULT_STYLE);
    }

问题:当仅在类路径上有 apache.commons-lang3 时,包应该是: org.apache.commons.lang3.builder.ToStringBuilder 并使用 org.apache.commons.lang3.builder.DEFAULT_STYLE.

问题:如何告诉 -ts 插件在生成期间实际使用 lang3 中的构建器?

我想建议使用一些不同的方法。

它包括 2 个步骤:

  • 省略 xjc 插件生成默认 'toString' 方法 - 因此它不会使用 commons-lang(没有 3)'ToStringBuilder',

  • 直接在需要'toString'的地方使用commons-lang3'ToStringBuilder.reflectionToString'。

(在开发过程中,我遇到了 'commons-lang' 的不当使用,我的方法提供了跳过使用 'commons-lang' 和 'commons-lang3' 的可能性。

这已在 v3.1.0 中修复 @see https://issues.apache.org/jira/browse/CXFXJC-16

所以现在 -Xts 选项正在使用 lang3