maven:添加任意文件作为servlet上下文资源

时间:2010-09-22 17:41:52

标签: maven-2 servlets maven-war-plugin

我有一个maven war项目,它生成webapp.war,以及一个maven'skin'项目,它生成skin.zip(一个充满资源和XML文件的文件)。现在我想将此zip文件添加为servlet上下文资源(例如WEB-INF / skin.zip)。

我尝试使用叠加层,但它将zip文件扩展为WEB-INF,而不是将未展开的文件放在那里:

    <plugin>
        <artifactId>maven-war-plugin</artifactId>
        <configuration>
            <overlays>
                <overlay>
                    <groupId>com.mycompany</groupId>
                    <artifactId>skin</artifactId>

                    <type>zip</type>
                    <targetPath>WEB-INF</targetPath>
                </overlay>
            </overlays>
        </configuration>
    </plugin>

有没有办法阻止它扩展资源 - 或以某种方式将文件粘贴在那里(不使用ant-plugin)。

注意:type是一个完全不必要且无用的配置元素 - 它没有告诉插件如何扩展工件,正如您所料 - 它告诉它如何 FIND 它。例如,如果您将类型从zip更改为jar,则会抱怨它无法找到工件(以最无助的方式)。

1 个答案:

答案 0 :(得分:2)

  

我尝试使用叠加层,但它将zip文件扩展为WEB-INF

是的,这就是覆盖层的作用,内容被解压缩以与战争合并。在你的情况下,这不是正确的工具。

  

有没有办法阻止它扩展资源 - 或以某种方式将文件粘贴在那里

我会使用Maven Dependency Plugin及其dependency:copy目标:

  
      
  • dependency:copy获取插件配置部分中定义的工件列表,并将它们复制到指定位置,根据需要重命名或剥离版本。如果远程存储库中的工件不存在于本地,则此目标可以解决这些工件。
  •   

并将其绑定在prepare-package阶段。下面是一些起点:

<project>
  [...]
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-dependency-plugin</artifactId>
        <executions>
          <execution>
            <id>copy-prepare-package</id>
            <phase>prepare-package</phase>
            <goals>
              <goal>copy</goal>
            </goals>
            <configuration>
              <artifactItems>
                <artifactItem>
                  <groupId>com.mycompany</groupId><!-- or ${project.groupId} -->
                  <artifactId>skin</artifactId>
                  <version>X.Y.Z</version><!-- or ${project.version} -->
                  <type>zip</type>
                </artifactItem>
              </artifactItems>
              <outputDirectory>${project.build.directory}/${project.build.finalName}/WEB-INF</outputDirectory>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
  [...]
</project>

有关更多示例,请参阅Copying specific artifacts