6

我对我们的构建基础架构有一个非常具体的要求,将另一个 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到 target WEB-INF/otherfolder。实际结果是WEB-INF/otherfolder/subfolder/config.xml。如您所见,/subfolder被附加到最终路径。有没有办法改变<include>表达式,这样/subfolder就不会被附加?

提前致谢!

4

3 回答 3

2

你有没有想过maven-dependency-plugin对解压档案有很好的支持。

于 2012-06-22T14:24:34.757 回答
2

浏览源代码显示,通过 maven-assembly 插件这是不可能的。它获取程序集描述符中指定的所有包含,然后将此信息传递给通过多个阶段使用的 Plexus 归档器。包含模式也被传递给 Plexus 归档器,然后它显然会执行“解包”保存目录结构。

于 2012-12-10T13:08:27.507 回答
1

正如@khmarbaise 所指出的,解决方案在于将依赖插件与程序集插件相结合:

  • 在打包阶段,首先将您需要的依赖项解包到某个目标目录
  • 在包上(稍后在 pom 中)使用程序集从该目录中提取特定文件到您的工件中
于 2013-12-06T08:50:14.100 回答