带下划线的 Maven 原型文件名模式
Maven archetype filename pattern with underscore
我正在创建 Maven 原型。我想生成类似 project_todo_messages.properties
的文件,其中 todo
替换为过滤后的 属性.
我在 archetype-metadata.xml
和 archetype.properties
中创建了一个文件 project___todo___messages.properties
和一个过滤的 属性 todo
。
不带下划线的文件会被重命名,但过滤后的 属性 周围有下划线的文件不会。有什么想法吗?
我使用 maven-archetype-plugin 2.3 和 org.apache.maven.archetype:archetype-packaging 2.3。
其他问题:是否可以像 ${todo.toLowerCase()}
的文件内容一样将文件名中的筛选值小写?
您可以通过添加必需的属性并将默认值设置为所需的过滤器来完成这两项操作。
第一种情况:
<requiredProperty key="messagePropertiesFileName">
<defaultValue>project_${todo}_messages</defaultValue>
</requiredProperty>
将文件命名为 __messagePropertiesFileName__.properties
。
对于第二种情况,再添加一个属性:
<requiredProperty key="todoLowerCase">
<defaultValue>${todo.toLowerCase()}</defaultValue>
</requiredProperty>
在 folder/file 个名称中使用 __todoLowerCase__
。
这是原型插件源代码片段:
for ( Iterator<?> iterator = request.getProperties().keySet().iterator(); iterator.hasNext(); )
{
String key = (String) iterator.next();
String value = request.getProperties().getProperty( key );
... Velocity evaluation ...
原始属性(在你的例子中是${todo})还没有被Velocity处理过,所以Velocity无法计算出${todo.toLowerCase()}的真实值。
尝试重命名属性并希望它以正确的顺序出现在 request.getProperties().keySet().iterator()
我正在创建 Maven 原型。我想生成类似 project_todo_messages.properties
的文件,其中 todo
替换为过滤后的 属性.
我在 archetype-metadata.xml
和 archetype.properties
中创建了一个文件 project___todo___messages.properties
和一个过滤的 属性 todo
。
不带下划线的文件会被重命名,但过滤后的 属性 周围有下划线的文件不会。有什么想法吗?
我使用 maven-archetype-plugin 2.3 和 org.apache.maven.archetype:archetype-packaging 2.3。
其他问题:是否可以像 ${todo.toLowerCase()}
的文件内容一样将文件名中的筛选值小写?
您可以通过添加必需的属性并将默认值设置为所需的过滤器来完成这两项操作。
第一种情况:
<requiredProperty key="messagePropertiesFileName">
<defaultValue>project_${todo}_messages</defaultValue>
</requiredProperty>
将文件命名为 __messagePropertiesFileName__.properties
。
对于第二种情况,再添加一个属性:
<requiredProperty key="todoLowerCase">
<defaultValue>${todo.toLowerCase()}</defaultValue>
</requiredProperty>
在 folder/file 个名称中使用 __todoLowerCase__
。
这是原型插件源代码片段:
for ( Iterator<?> iterator = request.getProperties().keySet().iterator(); iterator.hasNext(); )
{
String key = (String) iterator.next();
String value = request.getProperties().getProperty( key );
... Velocity evaluation ...
原始属性(在你的例子中是${todo})还没有被Velocity处理过,所以Velocity无法计算出${todo.toLowerCase()}的真实值。 尝试重命名属性并希望它以正确的顺序出现在 request.getProperties().keySet().iterator()