使用nu.studer插件使用gradle的Jooq ::如何在build.gradle中定义匹配器策略

时间:2016-12-05 16:26:49

标签: java gradle jooq

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

我尝试过类似的事情:

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

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

任务执行失败':generateSampleJooqSchemaSource'。

  

javax.xml.bind.MarshalException     - 链接异常:   [org.xml.sax.SAXParseException; lineNumber:0; columnNumber:0; cvc-complex-type.2.4.d:从元素' matchers'开始发现无效内容。此时不会有子元素。]

请记住,在使用.xml文件定义匹配器策略时,请执行以下操作:

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

一切都很好。

有人可以帮忙解释我做错了什么吗?在gradle中定义匹配器规则的语法是否与我尝试的不同?因为我找不到任何相关的例子 - 也没有关于此的文件。

非常感谢。

最诚挚的问候, 马尔科

1 个答案:

答案 0 :(得分:1)

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

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

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

已记录here,并提供了自动化测试here