gpt4 book ai didi

maven - 哪些格式可以依赖:unpack-dependencies goal unpack?

转载 作者:行者123 更新时间:2023-12-04 02:10:23 24 4
gpt4 key购买 nike

dependencies:unpack-dependencies 可以解压哪些存档格式?例如,据我所知,它无法解压 RPM 包。是否有它支持的格式列表?有什么技巧可以让 maven 解压 RPM 包吗?

最佳答案

Maven 依赖插件在内部使用 Plexus Archiver 来归档和取消归档文件。截至今天,maven-dependency-plugin 2.10 版 depends on version 2.9plexus-archiver .

Plexus 组件是在 META-INF/plexus/components.xml 文件的帮助下配置的。对于 Dependency Plugin,您可以看到此文件 in the source code并为以下扩展声明 unarchiver:zipjarwarearswc, nar, esb, sar, car, par, rar。它们都使用相同的 ZipUnArchiver 组件,这意味着它们都被提取为 ZIP 文件。

Plexus Archiver 2.9 还附带了一组预定义的解压器,它添加了:bzip2gziptartgz , tar.gz, tbz2, tar.bz2 到列表中。最新版本还添加了 snappyxz 文件。


如果您希望能够解压自定义扩展,您将需要创建一个能够解压它的新项目并将其注册为 Plexus 组件。对于 RPM 包,您可以创建一个 rpm-archiver Maven 项目并在 META-INF/plexus/components.xml 中包含以下内容:

<component-set>
<components>
<component>
<role>org.codehaus.plexus.archiver.UnArchiver</role>
<role-hint>rpm</role-hint>
<implementation>class.able.to.unpack.rpm.packages</implementation>
<instantiation-strategy>per-lookup</instantiation-strategy>
</component>
</components>
</component-set>

其中 class.able.to.unpack.rpm.packages 是能够解压 RPM 文件的自定义类的完全分类名称。这个类必须实现接口(interface)org.codehaus.plexus.archiver.UnArchiver,但是为了简化,你可以让这个类继承自org.codehaus.plexus.archiver.AbstractUnArchiver .然后您需要做的就是覆盖 execute()execute(path, outputDirectory) 方法。前者需要将getSourceFile()获取的文件解压到getDestDirectory()获取的目录中,而后者只解压指定的路径在源文件中放入给定的 outputDirectory

编译并安装这个新项目后,你可以将它作为依赖添加到maven-dependency-plugin:

<plugin>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.10</version>
<!-- rest of your configuration -->
<dependencies>
<dependency>
<groupId>my.archiver</groupId>
<artifactId>rpm-archiver</artifactId>
<version>0.0.1</version>
</dependency>
</dependencies>
</plugin>

这样,当插件运行时,它将知道如何解压具有 rpm 扩展名的文件,并将使用您在 components.xml 中配置的类。

关于maven - 哪些格式可以依赖:unpack-dependencies goal unpack?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39142730/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com