在你的 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 组件。