返回介绍

Jar - Manifest

发布于 2020-07-06 13:41:00 字数 3433 浏览 1167 评论 0 收藏 0

22.14.1.Manifest

每个 jar 或 war 对象有一个 manifest 属性做为Manifest单独的实例,
当生成存档, 一个对应MANIFEST.MF文件被写入到档案中.

例22.15.MANIFEST.MF的定​​制
build.gradle

  1. jar {
  2. manifest {
  3. attributes("Implementation-Title": "Gradle",
  4. "Implementation-Version": version)
  5. }
  6. }

你可以创建一个 manifest 的独立实例.
您可以使用如共享 jar 之间的 manifest 的信息.

例22.16.创建一个manifest对象
build.gradle

  1. ext.sharedManifest = manifest {
  2. attributes("Implementation-Title": "Gradle",
  3. "Implementation-Version": version)
  4. }
  5. task fooJar(type: Jar) {
  6. manifest = project.manifest {
  7. from sharedManifest
  8. }
  9. }

您可以合并其他 manifest 到任何 Manifest 对象. 其它清单可能是通过文件路径描述或着像上所述, 引用另一个Manifest对象.

例22.17.独立的MANIFEST.MF一个特定的归档
build.gradle

  1. task barJar(type: Jar) {
  2. manifest {
  3. attributes key1: 'value1'
  4. from sharedManifest, 'src/config/basemanifest.txt'
  5. from('src/config/javabasemanifest.txt',
  6. 'src/config/libbasemanifest.txt') {
  7. eachEntry { details ->
  8. if (details.baseValue != details.mergeValue) {
  9. details.value = baseValue
  10. }
  11. if (details.key == 'foo') {
  12. details.exclude()
  13. }
  14. }
  15. }
  16. }
  17. }

清单合并的顺序与声明语句的顺序相同,如果基本清单和合并的清单都为相同的密钥定义值,那么那么合并清单将会被合并,您可以通过添加在其中您可以使用一个ManifestMergeDetails实例为每个条目实体完全自定义的合并行为。声明不会立即被来自触发合并。这是延迟执行的,要么产生jar时,或要求写入effectiveManifest时.
你可以很容易地写一个清单到磁盘。
例22.17.独立的MANIFEST.MF一个特定的存档
build.gradle

  1. jar.manifest.writeTo("$buildDir/mymanifest.mf")

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文