使用maven定制生成/过滤资源

时间:2010-05-15 12:06:25

标签: maven-2 resources filtering

我想知道在我的情况下Maven的方式是什么。

我的应用程序有一堆配置文件,我们称之为配置文件。每个配置文件配置文件都是一个* .properties文件,其中包含键/值以及对这些键/值语义的一些注释。我们的想法是生成这些* .properties,以便在所有这些中都有统一的注释。 我的计划是创建一个包含类似

的template.properties文件
#Comments for key1/value1
key1=${key1.value}

#Comments for key2/value2
key2=${key2.value}

和一堆像

这样的文件
#profile_data_1.properties
key1.value=profile_1_key_1_value
key2.value=profile_1_key_2_value

#profile_data_2.properties
key1.value=profile_2_key_1_value
key2.value=profile_2_key_2_value

然后绑定到generate-resources阶段以创建每个profile_data_ 的template.properties副本,并使用profile_data _ .properties过滤该副本作为过滤器。

最简单的方法可能是创建一个ant构建文件并使用antrun插件。但这不是Maven的方式,是吗?

其他选择是为这个小任务创建一个Maven插件。不知怎的,我不喜欢这个想法(插件部署不是我想要的)。

2 个答案:

答案 0 :(得分:2)

Maven提供的filtering of resources可以与Maven profiles结合使用(例如参见this post),但我不确定这会对此有所帮助。如果我正确理解您的需求,您需要循环一组输入文件并更改输出文件的名称。虽然第一部分可能使用多个<execution>,但我不认为第二部分可以使用resources plugin

因此,如果您想在一个版本中执行此操作,最简单的方法是使用Maven AntRun插件并使用Ant任务实现循环和处理逻辑。

除非你需要在多个地方重复使用它,否则我不会将这个逻辑封装在Maven插件中,如果在一个项目中,在一个独特的位置完成,这将给你带来很多好处。

答案 1 :(得分:1)

你可以扩展maven进行过滤的方式,因为maven通过依赖注入从plexus容器中检索它的过滤策略。所以你必须注册一个新的默认策略。这是沉重的东西,记录严重,但我认为可以做到。

使用这些网址作为起点:

http://maven.apache.org/shared/maven-filtering/usage.html

http://maven.apache.org/plugins/maven-resources-plugin/

肖恩