在你的 Mojo 中查找组件:
@Required
private MavenResourcesFiltering mavenResourcesFiltering;
对您的资源列表应用过滤,请参阅介绍以了解使用的默认FilterWrapper。
MavenResourcesExecution mavenResourcesExecution =
new MavenResourcesExecution ( resources, outputDirectory, mavenProject,
encoding, fileFilters,
nonFilteredFileExtensions, mavenSession );
mavenResourcesFiltering.filterResources( mavenResourcesExecution );
您必须使用MavenResourcesFiltering组件中的其他方法并构建您自己的FilterWrappers列表。以下示例使用来自 Maven 项目的反射的值为标记 @@ 添加插值。
// Create your FilterWrapper
FileUtils.FilterWrapper filterWrapper = new FileUtils.FilterWrapper()
{
public Reader getReader( Reader reader )
{
Interpolator propertiesInterpolator =
new RegexBasedInterpolator( "\\@", "(.+?)\\@" );
ValueSource valueSource = new MavenProjectValueSource( mavenProject,
true );
propertiesInterpolator.addValueSource( valueSource );
return new InterpolatorFilterReader( reader,
propertiesInterpolator,
"@", "@" );
}
};
// Add the new filterWrapper to your MavenResourcesExecution instance
mavenResourcesExecution.addFilterWrapper( filterWrapper );
有一个辅助方法可以简化这一点。以下是您将如何使用它来完成我们上面所做的事情:
mavenResourcesExecution.addFilerWrapper( new MavenProjectValueSource( mavenProject,
true ),
"\\@", "(.+?)\\@", "@", "@" );
注意:如果mavenResourcesExecution.useDefaultFilterWrappers设置为true ,则会先添加默认的FilterWrapper 。
现在是时候过滤资源了:
// Apply filtering on your resources
mavenResourcesFiltering.filterResources( mavenResourcesExecution );
注意: Maven 过滤使用plexus-interpolation 组件。