我有一个原型,我正在尝试添加一个新的requiredProperty,它应该只允许两个可能的值中的一个:"hibernate“和”hibernate-反应性“。在archetype-metadata.xml中,我定义了如下所示的属性:
<requiredProperty key="quarkus_orm_selection">
<validationRegex><![CDATA[^(hibernate|hibernate-reactive)$]]></validationRegex>
</requiredProperty>在jshell和其他Java程序中,我已经验证了正则表达式是否正常工作,但是在原型中,当我使用像hibernate-ree这样的值进行测试时,原型没有出错!
我在JShell中证明了正则表达式如下:
jshell> String[] examples = {"hibernate", "hibernate-reactive", "hibernate-re", "hibernate-ree", "testing", "reactive"}
examples ==> String[6] { "hibernate", "hibernate-reactive", "h ... ", "testing", "reactive" }
jshell> Pattern regex = Pattern.compile("^(hibernate|hibernate-reactive)$")
regex ==> ^(hibernate|hibernate-reactive)$
jshell> Arrays.asList(examples).stream().filter(i -> regex.matcher(i).matches()).forEach(System.out::println)
hibernate
hibernate-reactive有人能告诉我我做错了什么吗?
我正在使用Maven原型插件3.2.0版本
发布于 2022-09-15 10:32:16
据我所知,如果您以交互模式传入属性,则maven原型只会验证reg。
我创建了一个原型--postgenerate.groovy脚本(见下文)
src/main/resources/META-INF/archetype-post-generate.groovy
String ormSelector = request.getProperties().get("quarkus_orm_selection")
def pattern = "^(hibernate|hibernate-reactive)\$" // the \$ is important!
final match = ormSelector.matches(pattern)
if (!match) {
println "[ERROR] ormSelector: $ormSelector is not valid"
println "[ERROR] please provide an ormSelector that follows this pattern: '$pattern'"
throw new RuntimeException("OrmSelector: $ormSelector is not valid")
}https://stackoverflow.com/questions/68783890
复制相似问题