2

我正在修改一些 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 并将其放在需要的地方。它还需要进行过滤以放置正确的文件夹。

这一切都在最后一点起作用......

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

再次感谢

4

1 回答 1

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>

为什么你需要实现一个只在另一个生命周期阶段复制资源的插件。

于 2013-11-15T08:08:13.987 回答