我最终找到了一种使用 MavenResourcesFiltering 和 MavenResourcesExecution 来做到这一点的方法。文档在这里:http://maven.apache.org/shared/maven-filtering/usage.html http://maven.apache.org/shared/maven-filtering/usage.html
我能够让这段代码做我想做的事:
/* Class members */
@Parameter(defaultValue="${project}",required=true, readonly=true)
protected MavenProject project;
@Parameter( defaultValue = "${session}", required = true, readonly = true )
protected MavenSession session;
@Component( role=org.apache.maven.shared.filtering.MavenResourcesFiltering.class, hint="default")
protected MavenResourcesFiltering mavenResourcesFiltering;
@Parameter( property = "encoding", defaultValue = "${project.build.sourceEncoding}" )
protected String encoding;
@Parameter
protected List<Resource> resources;
...
//Inside my plugin's execute() method:
List<String> nonFilteredFileExtensions = new ArrayList<String>();
//resources is a parameter to my plugin, dir and filters are calculated within the plugin
MavenResourcesExecution mre = new MavenResourcesExecution(resources, dir, this.project, this.encoding, filters, nonFilteredFileExtensions, session);
mavenResourcesFiltering.filterResources(mre);
我以通常的方式在插件配置中定义资源:
<resources>
<resource>
<directory>G:/MyPluginProject/src/test/resources/project-to-test/resources</directory>
<excludes>
<exclude>*.DAT</exclude>
</excludes>
<filtering>true</filtering>
</resource>
</resources>
奇怪的是<directory>
,绝对路径工作正常,但我似乎无法让它与诸如${basedir}
。我可能在这里忽略了一些明显的事情......