我终于找到了答案。作为正在构建程序集的子项目的父pom的pom文件几年前已经声明了maven程序集插件错误MASSEMBLY-449的解决方法。作为建议的解决方法的一部分,输入了一个块,默认fileMode为644。这是在maven为2.2,m-a-p也为2.2的时候。我们改用maven 3.0.4,几个月前m-a-p更新为2.4。到那时,错误已经修复。显然,该修复意味着不再需要变通方法,事实上干扰了执行位设置。当我删除该块时,和条目的所有执行权限都再次正确。
我有Maven 3.0.4,正试图用其他几个工件制作一个程序集。当使用maven汇编插件时,如果我使用,它会在正确的位置打开工件内容,但会丢失对文件(例如/bin目录)的可执行权限。我曾尝试将依赖项解压缩到target/中(我认为权限仍然可以),然后使用将它们复制到程序集中,但文件权限再次丢失。如果我必须手动检查依赖项以确定哪些文件是可执行的,那将是非常糟糕的。
有人能解决这些明显的错误吗?是否可以将文件从临时目录直接复制到程序集的最终位置并维护权限?如果是,如何?
pom在这里会很有帮助。您是否在依赖项集中使用<directoryMode>
和/或<fileMode>
,例如:
<dependencySet>
<outputDirectory>someDir</outputDirectory>
<outputFileNameMapping></outputFileNameMapping>
<unpack>true</unpack>
<useTransitiveDependencies>false</useTransitiveDependencies>
<useProjectArtifact>false</useProjectArtifact>
<useProjectAttachments>true</useProjectAttachments>
<includes>
<include>artifactA</include>
</includes>
<directoryMode>0755</directoryMode>
<fileMode>0755</fileMode>
</dependencySet>
<fileSet>
具有相同的选项。