【问题标题】:Maven2 applying filtering to the file under pom type packagingMaven2对pom类型打包下的文件应用过滤
【发布时间】:2011-01-26 18:04:13
【问题描述】:

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

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

请注意,Module1 也是多模块项目。 所以请告诉我如何将过滤应用于file1和file2。如果我对file1应用过滤,那么处理后的文件将存储在哪里(因为包装类型为pom的pom文件不要创建任何名为target的文件夹!) 请帮助我,因为这对我来说非常重要,而且这个问题在互联网上没有其他地方可以解决。

【问题讨论】:

    标签: maven-2 pom.xml multi-module


    【解决方案1】:

    您可以使用maven-assembly-plugin - 使用“dir”格式(尽管如果有多个文件,将其设为某种存档可能是有意义的)。 descriptor format 允许您进行过滤。这应该适用于您上面描述的 pom 和文件层次结构。

    但是,我建议将它们放在兄弟模块而不是父模块中。这将逻辑排除在您的聚合器 pom 之外,并且(一旦您开始这样做)您可能会决定使用程序集将它们与您的其他组件一起分发更容易,无论如何您都需要一个模块。

    【讨论】:

    • 嗨,扎克,感谢您的回答。其实我已经选择了第二个选项。但是,我想在有时间的时候尝试您的第一个选项。
    【解决方案2】:

    要在复制时让 Maven 过滤资源,请将 pom.xml 中资源目录的过滤设置为 true

    <project>
      ...
      <build>
        <resources>
          <resource>
            <directory>src/main/resources</directory>
            <filtering>true</filterineg>
          </resource>
        </resources>
      </build>
    </project>
    

    但是如果你想过滤资源,不要把它们放在一个包装类型为pom的项目中,这没有意义(因为你给自己的原因)。实际上,我不明白你想要达到什么目的(因为你知道这不是事情的运作方式)。

    【讨论】:

    • 嘿帕斯卡首先感谢您的关注。实际上我需要使用多模块项目,这就是我使用 pom 包装类型的原因。此外,要过滤的文件也不存在于 src/main/resources 文件夹中,它位于父文件夹的根目录中。我无法更改文件的层次结构,这就是我遇到所有这些问题的原因。
    • @Hamit pom 打包对于聚合多模块设置的模块来说很好(并且实际上是必需的),但恐怕您将无法过滤此类模块中的资源。我不明白这些“过滤”的资源应该如何使用。既然它们在 pom 类型的模块中,你打算如何处理它们?
    • 这些资源实际上是属性文件。这些文件(file1 和 file2)将与过滤和编译后生成的其他文件一起复制到远程位置。这些配置文件也被子模块使用。我需要手动设置这些文件中的值,所以我正在考虑使用过滤。但恐怕有什么办法可以做到。
    猜你喜欢
    • 2014-05-04
    • 1970-01-01
    • 1970-01-01
    • 2013-10-14
    • 2011-06-17
    • 1970-01-01
    • 1970-01-01
    • 2013-10-18
    • 1970-01-01
    相关资源
    最近更新 更多