我们使用manifestjava插件的属性将MANIFEST.MF文件写入我们的jar工件.
我们还使用gradle来构建GWT项目,我们为这些项目定义的输出是zip.我想MANIFEST.MF在该zip文件的根目录中包含一个文件.
我已经尝试过使用任务,type: Jar所以我可以使用它的manifest属性,但问题当然是清单文件被写入META-INF/MANIFEST.MF,我不想要.原因是我们将存档解压缩到主应用程序中,我需要能够MANIFEST.MF在运行时引用该文件以用于我自己的恶意目的.
所以现在档案看起来像这样:
/gwtdirectory/
/gwtdirectory/file1
/gwtdirectory/file2
/gwtdirectory/...
/gwtdirectory/filen
Run Code Online (Sandbox Code Playgroud)
我需要它像这样:
/gwtdirectory/
/gwtdirectory/MANIFEST.MF
/gwtdirectory/file1
/gwtdirectory/file2
/gwtdirectory/...
/gwtdirectory/filen
Run Code Online (Sandbox Code Playgroud)
我已经成功地让它看起来像:
/gwtdirectory/
/gwtdirectory/META-INF/MANIFEST.MF
/gwtdirectory/file1
/gwtdirectory/file2
/gwtdirectory/...
/gwtdirectory/filen
Run Code Online (Sandbox Code Playgroud)
通过如下定义:
task pack(type: Jar){
manifest {
attributes(...)
}
extension = 'zip'
from gwt.destinationDir
}
Run Code Online (Sandbox Code Playgroud)
该writeTo方法看起来很有希望,除了我找不到我可以使用的那个接口的实现,我试图避免编写自己的.
思考?
查看Jar 任务,清单文件的位置似乎不可配置。
您可能想要使用 gradle 自己的DefaultManifest实现来创建清单,然后将此文件包含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)
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11997 次 |
| 最近记录: |