【问题标题】:How do I avoid jsonschema2pojo generating duplicate classes that I already have?如何避免 jsonschema2pojo 生成我已经拥有的重复类?
【发布时间】:2016-09-20 02:22:39
【问题描述】:

我有一个 jsonschema 文件,它定义了一个我需要作为现有 POJO 的子类的类(不是由模式定义的)

正如我在 jsonschema2pojo 文档中找到的那样,这样做的方法是:

{
...
"type": "object",
"extends": {
  "type": "object",
  "javaType": "com.example.Document"
},
"properties": { ... }

但是,当我运行 maven clean install 时,编译失败,因为它尝试生成自己的 Document 类(带有 @Json... 注释等)并且 Maven 抛出此错误

error: duplicate class: com.example.Document

根据文档,插件不应尝试生成已经存在的类。我怎样才能避免这种情况?

【问题讨论】:

    标签: java maven jsonschema2pojo


    【解决方案1】:

    已经“现有”的类只是一个源文件吗?如果它只是一个 java 源文件,它将作为您的 mvn clean install 过程的一部分进行编译,那么插件无法推断该类的存在。如果这个类已经编译并作为依赖添加到你的 mvn pom,那么插件应该跳过创建一个重复的类。

    【讨论】:

    • 这是一个以前编写的源文件,是的。我已将该模块添加到 jsonschema2pojo 插件依赖项中。现在插件可以识别类路径中的类并且不会尝试生成新的类。有没有更好的方法来指定这些依赖项?这样做有什么负面影响吗?
    • 这很棒。太难找了!
    【解决方案2】:

    这在 1.0.0-beta1 版本中对我有用:

    ...
      "extends": {
        "type": "object",
        "existingJavaType": "io.radanalytics.operator.common.EntityInfo"
      },
    ...
    

    无需修改pom.xml

    【讨论】:

      【解决方案3】:

      通过在 pom 文件的 <plugin> 部分中添加模块作为 jsonschema2pojo 的依赖项来解决此问题。

      【讨论】:

      • 您能详细说明一下吗?
      • 如果我添加了我需要为其生成的类的模块,作为插件本身的依赖项,它会更好地识别它们
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-25
      • 2017-02-05
      • 2015-10-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多