Maven2应用过滤器到pom类型打包下的文件

5

我是maven的新手。我想在一个多模块项目中使用过滤器。父pom的打包类型设置为pom。项目的结构如下:

pom.xml
     |
     |______MODULE1
     |       |
     |       pom.xml
     |       File1_needed_to_be_filtered
     |
    File2_needed_to_be_filtered

请注意,Module1也是一个多模块项目。那么请告诉我如何对file1和file2应用过滤。如果我对file1应用过滤,则处理后的文件将存储在哪里(因为打包类型为pom的pom文件不会创建名为target的任何文件夹!)。由于互联网上没有其他地方提到此问题,请务必帮助我,这对我非常关键。
2个回答

4
你可以使用maven-assembly-plugin,选择'dir'格式(尽管如果有多个文件,将其制作成某种类型的存档可能更有意义)。 描述符格式允许你进行过滤。 这应该可以与上面描述的pom和文件层次结构一起使用。
然而,我建议将它们放在同级模块中,而不是父模块中。 这样可以将逻辑从聚合器pom中分离出来,并且(一旦您开始这样做)您可能会决定使用汇编将它们与其他组件一起分发,您需要一个模块来实现这一点。

嗨,Zac,谢谢你的回答。实际上我已经选择了第二个选项。不过如果有时间的话,我想尝试一下你的第一个选项。 - Harmit

0
要在复制时让Maven过滤资源,请在pom.xml中为资源目录设置filtering为true:
<project>
  ...
  <build>
    <resources>
      <resource>
        <directory>src/main/resources</directory>
        <filtering>true</filterineg>
      </resource>
    </resources>
  </build>
</project>

但是,如果您想要过滤资源,请不要将它们放在打包类型为pom的项目中,这没有意义(因为您自己给出的原因)。实际上,我不明白您试图实现什么(因为您知道这不是事情的工作方式)。


Pascal,首先感谢你的关注。实际上,我需要使用多模块项目,这就是为什么我使用pom打包类型的原因。此外,要过滤的文件不在src/main/resources文件夹中,而是在父文件夹的根目录中。我无法更改文件的层次结构,这就是为什么我遇到所有这些问题的原因。 - Harmit
@Hamit pom包装对于聚合多模块设置的模块非常好(实际上是必需的),但恐怕您将无法过滤此类模块中的资源。我不明白的是,这些“已过滤”资源应该如何使用。既然它们在pom类型的模块中,您打算用它们做什么? - Pascal Thivent
这些资源实际上是属性文件。这些文件(file1和file2)将与过滤和编译后生成的其他文件一起复制到远程位置。这些配置文件也被子模块使用。我需要手动设置这些文件中的值,所以我考虑使用过滤。但我担心是否有办法这样做。 - Harmit

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接