Maven 2 maven:将任意文件添加为servlet上下文资源
我有一个生成webapp.war的maven war项目,还有一个生成skin.zip(一个充满资源和XML文件的文件)的maven“skin”项目。现在我想将这个zip文件添加为servlet上下文资源(例如WEB-INF/skin.zip) 我尝试使用覆盖,但它将zip文件扩展为WEB-INF,而不是将未扩展的文件放在那里:Maven 2 maven:将任意文件添加为servlet上下文资源,maven-2,servlets,maven-war-plugin,Maven 2,Servlets,Maven War Plugin,我有一个生成webapp.war的maven war项目,还有一个生成skin.zip(一个充满资源和XML文件的文件)的maven“skin”项目。现在我想将这个zip文件添加为servlet上下文资源(例如WEB-INF/skin.zip) 我尝试使用覆盖,但它将zip文件扩展为WEB-INF,而不是将未扩展的文件放在那里: <plugin> <artifactId>maven-war-plugin</artifactId>
<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>
maven战争插件
com.mycompany
皮肤
拉链
WEB-INF
有没有办法阻止它扩展资源——或者以某种方式将文件粘贴在其中(不使用ant插件)
注意:type
是一个完全不必要的、没有帮助的配置元素——它没有告诉插件如何扩展工件,正如您所期望的那样——它告诉插件如何查找它。例如,如果您将类型从zip更改为jar,它会抱怨找不到工件(以最没有帮助的方式)
我尝试使用覆盖,但它将zip文件扩展为WEB-INF
是的,覆盖层就是这样做的,内容被解包以与战争合并。在你的情况下,这不是正确的工具
有没有办法阻止它扩展资源——或者以某种方式将文件粘贴在其中
我将使用以下方法及其目标:
获取插件配置部分中定义的工件列表,并将它们复制到指定位置,如果需要,重命名它们或剥离版本。如果本地存储库中不存在来自远程存储库的工件,则此目标可以解决这些工件dependency:copy
准备包装
阶段。以下是一些起点:
<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>
[...]
org.apache.maven.plugins
更多示例。这可以工作,尽管它的下半部被复制,而不是作为覆盖层包含;任何当前/未来的覆盖感知IDE插件(我想是m2eclipse)都不会知道依赖关系是war文件的一个组件,因此您会得到单独的deploytime和IDE调试/运行时行为。@Justin啊,我明白了。恐怕另一种选择是将您的skin.zip包含在另一个存档中,以使覆盖层正常工作。不过这是可能的。