【问题标题】:Jooq with gradle using nu.studer plugin :: how to define matcher strategies inside build.gradleJooq with gradle using nu.studer plugin :: 如何在 build.gradle 中定义匹配器策略
【发布时间】:2017-04-20 02:45:13
【问题描述】:

我在使用 nu.studer gradle 插件时定义匹配器策略时遇到问题。

我尝试过类似的方法:

generator {
    strategy {
        matchers {
            tables {
                table {
                    pojoClass {
                        transform = 'PASCAL'
                                expression = '$0_POJO'
                    }
                }
            }
        }
    }
}

但是当我尝试运行构建时出现错误:

任务“:generateSampleJooqSchemaSource”执行失败。

javax.xml.bind.MarshalException - 有关联的例外: [org.xml.sax.SAXParseException;行号:0;列号:0; cvc-complex-type.2.4.d:发现以元素“匹配器”开头的无效内容。此时不需要子元素。]

请记住,当使用 .xml 文件定义匹配器策略时,如下所示:

<strategy>
  <matchers>
    <tables>
      <table>
        <pojoClass>
          <transform>PASCAL</transform>
          <expression>$0_POJO</expression>
        </pojoClass>
      </table>
    </tables>               
  </matchers>
</strategy>

一切都很好。

有人可以帮忙解释一下我做错了什么吗?在 gradle build 中定义匹配器规则的语法与我尝试过的不同吗?因为我找不到任何示例 - 也找不到有关此的文档。

非常感谢。

最好的问候, 马尔科

【问题讨论】:

标签: java gradle jooq


【解决方案1】:

使用匹配器时,名称需要显式设置为 null,如下所示:

strategy {
    name = null
    matchers {
      tables {
        table {
            pojoClass {
                transform = 'PASCAL'
                expression = '\$0_POJO'
            }
        }
      }
    }
}

此插件使用由此 XSD 生成的 JAXB 类。 Strategy 元素上的名称有一个默认值,这是一个问题,因为它是 XSD 选择元素的一部分,即只能存在一个元素。这是整个 XSD 中唯一的选择元素,所以这里只需要应用这个变通方法。

这已被记录在 here 并且已提供自动化测试 here

【讨论】:

    猜你喜欢
    • 2016-01-16
    • 2012-05-06
    • 2021-12-17
    • 1970-01-01
    • 2020-05-17
    • 2013-08-22
    • 2020-07-20
    • 1970-01-01
    • 2020-07-26
    相关资源
    最近更新 更多