maven war plugin把我的资源放在war根目录下

时间:2015-11-16 09:46:24

标签: maven war maven-war-plugin

我不明白为什么当我将webResources条目放在maven-war-plugin中时,资源会放在war根目录中。我认为它应该只放在WEB-INF/classes中。 这是我的maven-war-plugin配置:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <version>2.2</version>
    <!-- <configuration> <webXml>target/web.xml</webXml> </configuration> -->
    <configuration>
       <webResources>
            <resource>
                <excludes>
                    <exclude>dbre.xml</exclude>
                </excludes>
                <directory>src/main/resources</directory>
            </resource>
        </webResources>
        <archive>
            <manifest>
                <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
            </manifest>
        </archive>
    </configuration>
</plugin>

如果删除<webResources>条目,则只将默认src/main/resources文件复制到WEB-INF/classes,但不在根目录目录中。

1 个答案:

答案 0 :(得分:4)

这是预期的行为。引用maven-war-plugin文档:

  

WAR插件还能够通过webResources参数包含默认资源目录中找不到的资源。
  ...
  external-resource2.jpgimage2被复制到WAR的根目录,保留了目录结构。

后来:

  

默认情况下,Web资源被复制到WAR的根目录

如果要覆盖默认目标路径,可以指定<targetPath>属性。例如,如果您希望Web资源位于WEB-INF内,您可以像这样配置插件:

<webResources>
  <resource>
    <excludes>
      <exclude>dbre.xml</exclude>
    </excludes>
    <directory>src/main/resources</directory>
    <targetPath>WEB-INF</targetPath>
  </resource>
</webResources>