gpt4 book ai didi

manifest - 如何使用 Gradle 的 Manifest API 将 `MANIFEST.MF` 文件插入 zip 文件的根目录

转载 作者:行者123 更新时间:2023-12-02 19:12:31 25 4
gpt4 key购买 nike

我们使用 java 插件的 manifest 属性将 MANIFEST.MF 文件写入我们的 jar 工件。

我们还使用 gradle 构建 GWT 项目,并且我们为这些项目定义的输出是 zip。我想在该 zip 文件的根目录中包含一个 MANIFEST.MF 文件。

我尝试使用 type: Jar 的任务,这样我就可以使用它的 manifest 属性,但问题当然是 list 文件被写入META-INF/MANIFEST.MF,我不想要。原因是我们将存档解压缩到主应用程序中,并且我需要能够在运行时引用 MANIFEST.MF 文件以达到我自己的邪恶目的。

现在存档看起来像这样:

/gwtdirectory/
/gwtdirectory/file1
/gwtdirectory/file2
/gwtdirectory/...
/gwtdirectory/filen

我需要这样:

/gwtdirectory/
/gwtdirectory/MANIFEST.MF
/gwtdirectory/file1
/gwtdirectory/file2
/gwtdirectory/...
/gwtdirectory/filen

我已经成功地让它看起来像:

/gwtdirectory/
/gwtdirectory/META-INF/MANIFEST.MF
/gwtdirectory/file1
/gwtdirectory/file2
/gwtdirectory/...
/gwtdirectory/filen

通过这样的定义:

task pack(type: Jar){
manifest {
attributes(...)
}
extension = 'zip'
from gwt.destinationDir
}

writeTo方法看起来很有前途,只是我找不到可以使用的该接口(interface)的实现,并且我试图避免编写自己的接口(interface)。

想法?

最佳答案

查看Jar task , list 文件的位置看起来不可配置。

你可能想使用gradle自己的DefaultManifest实现创建 list ,然后将此文件与 from 一起包含在您的 zip 文件中。

你可以试试这个:

import org.gradle.api.java.archives.internal.DefaultManifest
import org.gradle.api.internal.file.IdentityFileResolver

File manifestFile = file('build/myAwesomeManifest.mf')

task generateManifest << {
manifest = new DefaultManifest(new IdentityFileResolver())

// add some attributes
manifest.attributes(["attr1":"value1", "attr2":"value2"])

// write it to a file
manifest.writeTo(manifestFile)
}

关于manifest - 如何使用 Gradle 的 Manifest API 将 `MANIFEST.MF` 文件插入 zip 文件的根目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8973638/

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