用法

过滤org.apache.maven.model.Resource列表

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