我有Maven 3.0.4并且正在尝试用其他几个工件制作一个组件。当使用maven-assembly-plugin时,如果我使用它,则会在正确的位置解压缩工件内容,但会丢失对文件的可执行权限(例如在/ bin目录中)。我已经尝试将依赖包解压缩到target /(我看到权限仍然可以),然后使用将它们复制到程序集中,但同样,文件权限也会丢失。如果我必须手动检查依赖项以确定哪些文件是可执行的,那将是非常糟糕的。
任何人都有办法解决这些明显的错误?甚至可以将文件从临时目录直接复制到程序集最终位置并维护权限吗?如果是这样,怎么样?
答案 0 :(得分:4)
我终于找到了答案。作为构建程序集的子项目的父pom的pom文件在几年前宣布了maven-assembly-plugin bug MASSEMBLY-449的解决方法。作为建议的解决方法的一部分,输入了一个块,默认的fileMode为644.当maven在2.2上并且m-a-p也在2.2时,这又回来了。几个月前我们切换到maven 3.0.4并将m-a-p更新为2.4。到那时,错误已得到修复。显然,修复意味着不再需要解决方法,实际上干扰了执行位设置。当我删除块时,两个和条目的所有执行权限再次正确。
答案 1 :(得分:1)
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>
有相同的选项。