如何使用 plexus-archiver 为条目设置额外字段

Posted

技术标签:

【中文标题】如何使用 plexus-archiver 为条目设置额外字段【英文标题】:How to set extra fields for entries using plexus-archiver 【发布时间】:2016-01-06 18:18:11 【问题描述】:

我正在使用一个使用 plexus-archiver 的 maven 插件来创建一个 zip 文件。 基本上,我是通过 Sisu 获得组件注入,然后我正在遍历指定的文件集并注册所需的文件集:

zipArchiver.addFile(from_file, to_file);

并且 zip 正在正确生成。

但我需要在一些要添加到 zip 的文件中为文件 mime 类型添加一个额外字段。

如何使用 plexus-archiver 做到这一点?

【问题讨论】:

为什么不使用现有的插件,比如 maven-assembly-plugin ? 好吧,因为这个 mojo 是插件的一部分,它定义了自己的生命周期和包装类型,并且目标与组装插件不同。这个包 mojo 运行良好,但我需要遵循一个规范,说明某些文件需要为其 mime 类型包含一个额外字段。 【参考方案1】:

当前的 plexus-archiver (3.0) 似乎不支持额外字段。 为了继续使用 plexus-archive,我必须进行一些修改。

解决方案是扩展 ZipArchiver 类并覆盖提供来自 ZipArchiveOutputStream 类的对象的方法 initZipOutputStream

有了它,我可以创建条目及其额外字段:

@Override
protected void initZipOutputStream(ZipArchiveOutputStream pZOut)
        throws ArchiverException, IOException 
    super.initZipOutputStream(pZOut);

ZipArchiveEntry ae = new ZipArchiveEntry(pFile,
            pFile.getName());
ZipExtraField zef = new ContentTypeExtraField(
            Constants.MIME_STRING);
    ae.addExtraField(zef);
    pZOut.putArchiveEntry(ae);
    pZOut.write(content);
    pZOut.closeArchiveEntry();

【讨论】:

以上是关于如何使用 plexus-archiver 为条目设置额外字段的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 cron 为日志输出条目添加时间戳?

c_cpp 设s是一个字符串数组。写函数以找到任何最近的相等条目对的距离。例如,如果s = [“全部”,“单词”,“和”,“

Mongo:如何将所有使用 long timeStamp 的条目转换为 ISODate?

如何使用 react native reanimated v2 为多个条目设置动画?

如何在条目控件为空时检测退格键

Clojure:如何将映射条目的惰性序列转换为结构映射?