如何使用 plexus-archiver 为条目设置额外字段
How to set extra fields for entries using plexus-archiver
我正在使用一个使用 plexus-archiver 的 maven 插件来创建一个 zip 文件。
基本上,我通过 Sisu 获取组件注入,然后遍历指定的文件集并注册所需的文件集:
zipArchiver.addFile(from_file, to_file);
并且正在正确生成 zip。
但我需要在添加到 zip 中的某些文件中为文件 mime 类型添加一个额外字段。
我如何使用 plexus-archiver 做到这一点?
目前的plexus-archiver (3.0) 似乎不支持extra-fields。
我必须修改一下才能继续使用 plexus-archive。
解决方案是扩展 ZipArchiver class 并覆盖 initZipOutputStream 方法,该方法提供来自 ZipArchiveOutputStream class.
的对象
有了它,我可以创建条目及其额外字段:
@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 的 maven 插件来创建一个 zip 文件。 基本上,我通过 Sisu 获取组件注入,然后遍历指定的文件集并注册所需的文件集:
zipArchiver.addFile(from_file, to_file);
并且正在正确生成 zip。
但我需要在添加到 zip 中的某些文件中为文件 mime 类型添加一个额外字段。
我如何使用 plexus-archiver 做到这一点?
目前的plexus-archiver (3.0) 似乎不支持extra-fields。 我必须修改一下才能继续使用 plexus-archive。
解决方案是扩展 ZipArchiver class 并覆盖 initZipOutputStream 方法,该方法提供来自 ZipArchiveOutputStream class.
的对象有了它,我可以创建条目及其额外字段:
@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();
}