【发布时间】:2015-04-14 13:00:53
【问题描述】:
从一些程序集插件版本开始,maven 构建发出以下警告:
[警告] 程序集描述符包含一个文件系统根相关文件 参考,不兼容跨平台/
对此是否有任何推荐的即用型解决方案?直接谷歌搜索给我提供了很多垃圾,没有真正的帮助。重新检查 Maven 程序集插件帮助没有为我提供答案,也许其他人有更好的搜索技能并且可以提供帮助。
更新
是的,这可能是因为类似于 Linux 的outputDirectory,但我应该如何重写它以使其可移植?看了汇编插件文档,没有找到任何可移植性指南。
<fileSets>
<fileSet>
<directory>${basedir}/src/main/resources</directory>
<outputDirectory>/</outputDirectory>
</fileSet>
</fileSets>
【问题讨论】:
-
你能显示程序集描述符吗?它可能会表明您以某种方式引用了绝对路径(/a/b/c),这是为了确保跨环境构建可移植性而应避免的事情
-
是的,如果您正在创建一个不能包含文件系统根条目的 tar 文件...顺便说一句,就是这种情况。真的没有意义。
-
如您所见, outputDirectory 定义了一个
/,这意味着将所有内容提取到始终相同的位置。除此之外,此位置仅限于 root 帐户。此外,问题是您为什么使用fileSets来获取src/main/resources文件夹?有什么特殊原因? -
是的,这是生成的 .tar.gz 程序集,因此“/”对 root 帐户没有任何影响,
src/main/resources不会进入生成的工件 JAR,而是转到包含所需附加内容的 .tar.gz 包脚本之类的东西。我只是从未尝试过不通过<outputDirectory/>提供任何东西。所以@Torsten 的回答100% 适合我。 -
几天前不得不挠痒痒,所以我想我不妨分享一下。很高兴我能帮上忙。
标签: maven cross-platform maven-3 maven-assembly-plugin