2

我有 Maven 3.0.4 并试图用其他几个工件制作一个程序集。使用 maven-assembly-plugin 时,如果我使用 a 它会在正确的位置解压缩工件内容,但会丢失文件的可执行权限(例如在 /bin 目录中)。我已经尝试将依赖项解压缩到 target/ (我看到权限仍然可以),然后使用将它们复制到程序集中,但同样,文件权限丢失了。如果我必须手动检查依赖项以确定哪些文件是可执行的,那将是非常糟糕的。

有人有办法解决这些明显的错误吗?甚至可以将文件从他们的临时目录直接复制到程序集的最终位置并保持权限吗?如果是这样,怎么做?

4

2 回答 2

4

我终于找到了答案。作为正在构建程序集的子项目的父 pom 文件,几年前已经宣布了针对 maven-assembly-plugin 错误 MASSEMBLY-449 的解决方法。作为建议的解决方法的一部分,输入了一个块,默认文件模式为 644。当 maven 在 2.2 上并且地图也在 2.2 上时,这又回来了。我们切换到 maven 3.0.4 并且地图在几个月前更新到了 2.4。到那时,该错误已修复。显然,该修复意味着不再需要该解决方法,并且实际上干扰了执行位设置。当我删除该块时,两者的所有执行权限和条目再次正确。

于 2013-08-05T18:28:11.400 回答
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>有相同的选项。

于 2013-08-01T01:19:07.797 回答