Manifest

2018-07-01 17:20 更新

每個(gè) jar 或 war 對(duì)象有一個(gè) manifest 屬性做為Manifest單獨(dú)的實(shí)例, 當(dāng)生成存檔, 一個(gè)對(duì)應(yīng)MANIFEST.MF文件被寫(xiě)入到檔案中.

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

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

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

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

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

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

例22.17.獨(dú)立的MANIFEST.MF一個(gè)特定的歸檔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()
                }
            }
        }
    }
}

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

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


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

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)