我在使用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
吗?
有没有人有解决方案?
答案 0 :(得分:3)
不应该将文件从src / main / resources复制到target / [FOLDER] / WEB-INF / classes
不,它应该将这些文件复制到target/classes
。 maven-war-plugin负责将此文件夹的内容复制到WEB-INF/classes
(在打包阶段)。因此,请运行mvn package
。
答案 1 :(得分:1)
感谢您的评论。使用命令行时,一切都按预期工作。问题出在NetBeans上。我发现bug report(从2012年开始)说明IDE在某些情况下无法使用过滤后的资源,并在文件夹上放置了一个徽章来表示。
为了解决这个问题,我有:
Action
; Add custom
并将其命名为mvn:resources
; execute goals
我输入了resources:resources package
; custom
&gt; mvn:resources
以将修改复制到package
目录。 JRebel现在接受了这些变化,所以我很高兴。