如何在使用Maven Assembly插件解压tar文件时保留符号链接

10

我正在编写一个Maven程序集描述符,其中一个任务是在创建多个组件的最终tar包之前下载tar文件并将其解压缩。

我无法弄清楚如何使用Maven程序集插件保留tar文件中的符号链接。有人之前遇到过这个问题吗?

<assembly>
    <id>myassembly</id>
    <formats>
            <format>dir</format>
    </formats>
    <includeBaseDirectory>false</includeBaseDirectory>
    <dependencySets>
            <dependencySet>
                    <useProjectArtifact>false</useProjectArtifact>
                    <outputDirectory>.</outputDirectory>
                    <unpack>true</unpack>
            </dependencySet>
    </dependencySets>

</assembly>

不幸的是,目前没有办法通过maven-assembly-plugin创建符号链接,也没有我知道的插件能够实现这一点。也许你可以使用groovy插件或exec-maven-plugin来解决这个问题? - khmarbaise
2个回答

6

现在一切都变得更好了。我看到maven依赖插件和集成插件都能正确支持符号链接。使用以下版本和定义:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <version>2.10</version>
</plugin>
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-assembly-plugin</artifactId>
    <version>2.5.4</version>
</plugin>

我可以确认maven-dependency-plugin 2.10与OSX上的压缩符号链接可以直接使用。谢谢! - Oscar Hierro
我正在使用maven-assembly-plugin的2.6版本,但是在解压缩时我的符号链接仍然会被断开。我有什么遗漏的吗? - radlan
如果这是解包操作,可能是依赖插件版本的问题。 - Roman Nikitchenko
这对我也起作用。如果您遇到符号链接未持久化的任何问题,请确保它们在创建时存在,打包之前以及解压缩时也存在。 - Sylvester Loreto

2

目前,任何maven插件都不支持保留符号链接。我通过使用maven executor插件来解决这个问题,该插件会执行一个shell脚本,并为我打包和解压工件。


仍然有效的语句? - user2124712
2
@user2124712 版本 2.10 支持符号链接。 - Alex thunder Shevchenko
Maven assembly >= 2.5.4 也支持符号链接(当然 2.6.0 也是)- https://issues.apache.org/jira/browse/MASSEMBLY-750 - paulcm

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接