我对构建基础结构有一个非常具体的要求,即将另一个JAR依赖项的某些内容复制到我的Web应用程序的特定子文件夹中。我们使用的是maven-assembly-plugin,一种自然的方法就是使用<dependencySet>
和<unpackOptions>
。
代码示例(在汇编描述符中)我看起来如下:
<dependencySet>
<unpack>true</unpack>
<scope>runtime</scope>
<useProjectArtifact>false</useProjectArtifact>
<includes>
<include>my.group:artifact:jar</include>
</includes>
<unpackOptions>
<includes>
<include>subfolder/config.xml</include>
</includes>
</unpackOptions>
<outputDirectory>WEB-INF/otherfolder</outputDirectory>
</dependencySet>
问题在于我无法弄清楚如何指定我只想将单个文件artifact.jar/subfolder/config.xml
复制到目标WEB-INF/otherfolder
。实际结果为WEB-INF/otherfolder/subfolder/config.xml
。如您所见,/subfolder
被附加到最终路径。有没有办法更改<include>
表达式,以便/subfolder
不会被追加?
提前致谢!
答案 0 :(得分:2)
浏览源代码显示,这不可能通过maven-assembly插件实现。它获取在程序集描述符中指定的所有包含,然后将此信息传递给通过多个阶段使用的Plexus归档程序。包含模式也传递给Plexus归档器,然后它显然执行'unpack'保存目录结构。
答案 1 :(得分:1)
你有没有想过maven-dependency-plugin对解压缩档案有很好的支持。
答案 2 :(得分:0)
正如@khmarbaise所指出的,解决方案在于将dependency-plugin与assembly-plugin结合起来: