【问题标题】:Maven resource filtering not working from 'resources' folderMaven 资源过滤不能从“资源”文件夹中工作
【发布时间】:2015-07-22 18:03:57
【问题描述】:

我在使用 Maven 的资源过滤时遇到了一些问题。目录结构为:

src
 |-main
    |-filters
    |-java
    |-resources
    |-webapp

POM 包含以下内容:

<build>
    <filters>
        <filter>src/main/filters/${environment}/filter.properties</filter>
    </filters>
    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <filtering>true</filtering>
        </resource>
    </resources>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-war-plugin</artifactId>
        <version>2.6</version>
        <configuration>
                <filteringDeploymentDescriptors>true</filteringDeploymentDescriptors>
                <failOnMissingWebXml>false</failOnMissingWebXml>
        </configuration>
    </plugin>

    ...

</build>

我正在使用带有“保存时复制静态资源”的 NetBeans,但它只会在 filtering 设置为 false 时复制资源。这迫使我每次更改 resources 文件夹中的文件时都进行构建,而不仅仅是保存更改的文件。

运行mvn resources:resources 给出以下输出:

[INFO] Scanning for projects...
[INFO]
[INFO]     ------------------------------------------------------------------------
[INFO] Building core 1.0
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-cli) @ core ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 77 resources
[INFO] Copying 31 resources
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.618 s
[INFO] Finished at: 2015-07-22T21:24:32+01:00
[INFO] Final Memory: 9M/155M
[INFO] ------------------------------------------------------------------------

但是当我查看目标文件夹时,修改后的struts.xml 文件没有更新。我以前从未使用过mvn resources:resources,所以也许我对此有错误的想法。它不应该将文件从src/main/resources复制到target/[FOLDER]/WEB-INF/classes吗?

有人有解决办法吗?

【问题讨论】:

  • 您的目录结构是“src/filters”,但您将其称为“src/main/filters”。哪里出错了?
  • 很好看。错误在我的描述中,我已经更新了问题。
  • mvn resources:resources 不起作用”是什么意思?是不会将src/main/resources的资源复制到目标目录还是过滤不起作用?
  • 我更新了问题。 mvn resources:resources 似乎什么也没做。我从target 文件夹中删除了我的struts.xml 并重新运行,但struts.xml 没有被复制到target

标签: java maven


【解决方案1】:

不应该将文件从 src/main/resources 复制到 target/[FOLDER]/WEB-INF/classes

不,它应该将这些文件复制到target/classes。 maven-war-plugin 负责将此文件夹的内容复制到WEB-INF/classes(在打包阶段)。所以改为运行mvn package

【讨论】:

    【解决方案2】:

    感谢 cmets。使用命令行时,一切都按预期工作。问题出在 NetBeans 上。我发现了一个 bug report(从 2012 年开始),指出 IDE 在某些情况下不能使用过滤的资源,它会在文件夹上放置一个标记来表明这一点。

    要解决这个问题,我有:

    • 打开了项目属性;
    • 点击Action
    • 点击Add custom并将其命名为mvn:resources
    • execute goals我输入了resources:resources package
    • 现在我可以右键单击项目并选择custom > mvn:resources 以便将修改复制到package 目录。

    JRebel 现在接受了更改,所以我很高兴。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-05-02
      • 2016-08-16
      • 1970-01-01
      • 1970-01-01
      • 2017-05-25
      • 2015-10-25
      • 2013-12-21
      相关资源
      最近更新 更多