Manifest

2018-07-01 17:20 更新

每個 jar 或 war 對象有一個 manifest 屬性做為Manifest單獨的實例, 當生成存檔, 一個對應MANIFEST.MF文件被寫入到檔案中.

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

jar {
    manifest {
        attributes("Implementation-Title": "Gradle",
                   "Implementation-Version": version)
    }
}

你可以創(chuàng)建一個 manifest 的獨立實例. 您可以使用如共享 jar 之間的 manifest 的信息.

例22.16.創(chuàng)建一個manifest對象build.gradle

ext.sharedManifest = manifest {
    attributes("Implementation-Title": "Gradle",
               "Implementation-Version": version)
}
task fooJar(type: Jar) {
    manifest = project.manifest {
        from sharedManifest
    }
}

您可以合并其他 manifest 到任何 Manifest 對象. 其它清單可能是通過文件路徑描述或著像上所述, 引用另一個Manifest對象.

例22.17.獨立的MANIFEST.MF一個特定的歸檔build.gradle

task barJar(type: Jar) {
    manifest {
        attributes key1: 'value1'
        from sharedManifest, 'src/config/basemanifest.txt'
        from('src/config/javabasemanifest.txt',
             'src/config/libbasemanifest.txt') {
            eachEntry { details ->
                if (details.baseValue != details.mergeValue) {
                    details.value = baseValue
                }
                if (details.key == 'foo') {
                    details.exclude()
                }
            }
        }
    }
}

清單合并的順序與聲明語句的順序相同,如果基本清單和合并的清單都為相同的密鑰定義值,那么那么合并清單將會被合并,您可以通過添加在其中您可以使用一個ManifestMergeDetails實例為每個條目實體完全自定義的合并行為。聲明不會立即被來自觸發(fā)合并。這是延遲執(zhí)行的,要么產(chǎn)生jar時,或要求寫入effectiveManifest時. 你可以很容易地寫一個清單到磁盤。 例22.17.獨立的MANIFEST.MF一個特定的存檔 build.gradle

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


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號