我正在创建一个Maven原型。我希望生成project_todo_messages.properties
等文件,其中todo
替换为已过滤的属性。
我在project___todo___messages.properties
和todo
中创建了一个文件archetype-metadata.xml
和一个已过滤的属性archetype.properties
。
没有下划线的文件被重命名,但是在过滤属性周围带有下划线的文件不是。有什么想法吗?
我使用maven-archetype-plugin 2.3和org.apache.maven.archetype:archetype-packaging 2.3。
其他问题:是否可以在文件名中小写过滤值,就像在${todo.toLowerCase()}
的文件内容中一样?
答案 0 :(得分:5)
您可以通过添加所需属性并将默认值设置为所需的过滤器来完成这两项操作。
对于第一种情况:
<requiredProperty key="messagePropertiesFileName">
<defaultValue>project_${todo}_messages</defaultValue>
</requiredProperty>
将文件命名为__messagePropertiesFileName__.properties
。
对于第二种情况,添加另一个属性:
<requiredProperty key="todoLowerCase">
<defaultValue>${todo.toLowerCase()}</defaultValue>
</requiredProperty>
在文件夹/文件名中使用__todoLowerCase__
。
答案 1 :(得分:0)
以下是archetype插件源代码片段:
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()