Maven:如何使用自己的插件过滤一个文件

时间:2013-11-13 21:19:34

标签: maven maven-plugin

我正在修改一些maven3插件,我只需要使用已经在pom中定义的一些属性来过滤整个过程。

我没有找到很多关于这个主题的文档/示例,我的所有尝试都失败了。

第一个:

 /**
 * @component
 * @required
 * @readonly
 */
private MavenFileFilter mavenFileFilter;

然后在我的代码中:

mavenFileFilter.copyFile(tempFile, resultingFile, true, getProject(), Collections.<String> emptyList(), true, "utf-8", session);

然而没有任何反应:更换没有完成。

然后我看到围绕

发展的各种例子
MavenResourcesExecution mavenResourcesExecution = new MavenResourcesExecution(resources, outputDirectory, getProject(), "utf-8", null, nonFilteredFileExtensions, session);

但是我没有得到如何放入我想要的文件...资源没有构造函数与实际内容...

欢迎任何帮助!

最佳

编辑(更多背景): 上下文如下:我们构建了一个部署在许多客户服务器上的Web应用程序。

一方面,文件夹层次结构取决于客户与客户。

另一方面,我们有一些默认的logback.xml配置文件,需要对其进行过滤(以使用给定客户服务器的正确文件夹层次结构)。该文件位于一些常见项目中。我们还希望能够在每个客户的基础上专门化这个logback.xml。我们已将这些文件放在相应的公共项目/客户项目的源文件夹中。

因此,执行打包的插件现在按顺序查看每个工件,并获取第一个logback.xml并将其放在需要的位置。它还需要进行过滤以放置正确的文件夹。

这一切都与最后一点分开......

有意义吗?有更好的方法吗?

再次感谢

1 个答案:

答案 0 :(得分:2)

我建议你看看这个:

<project>
  ...
  <build>
    <plugins>
      <plugin>
        <artifactId>maven-resources-plugin</artifactId>
        <version>2.6</version>
        <executions>
          <execution>
            <id>copy-resources</id>
            <!-- here the phase you need -->
            <phase>validate</phase>
            <goals>
              <goal>copy-resources</goal>
            </goals>
            <configuration>
              <outputDirectory>${basedir}/target/extra-resources</outputDirectory>
              <resources>          
                <resource>
                  <directory>src/non-packaged-resources</directory>
                  <filtering>true</filtering>
                </resource>
              </resources>              
            </configuration>            
          </execution>
        </executions>
      </plugin>
    </plugins>
    ...
  </build>
  ...
</project>

为什么需要实现仅在其他生命周期阶段复制资源的插件。