預設情況下,專案會匯出包含其資源和已編譯類別檔案的目錄。將 exportJars
設定為 true 以匯出封裝的 jar。例如,
exportJars := true
jar 將由 run
、test
、console
和其他使用完整類別路徑的任務使用。
預設情況下,sbt 會從 organization
和 mainClass
等設定建構二進位封裝的 manifest。可以將其他屬性新增至由組態和封裝任務範圍設定的 packageOptions
設定中。
可以使用 Package.ManifestAttributes
新增主要屬性。此方法有兩種變體,一種接受重複的引數,將 java.util.jar.Attributes.Name
類型的屬性對應到字串值,另一種將屬性名稱 (字串類型) 對應到字串值。
例如,
Compile / packageBin / packageOptions +=
Package.ManifestAttributes(java.util.jar.Attributes.Name.SEALED -> "true")
可以使用 Package.JarManifest
新增其他屬性。
Compile / packageBin / packageOptions += {
import java.util.jar.{Attributes, Manifest}
val manifest = new Manifest
manifest.getAttributes("foo/bar/").put(Attributes.Name.SEALED, "false")
Package.JarManifest( manifest )
}
或者,從檔案讀取 manifest
Compile / packageBin / packageOptions += {
val file = new java.io.File("META-INF/MANIFEST.MF")
val manifest = Using.fileInputStream(file)( in => new java.util.jar.Manifest(in) )
Package.JarManifest( manifest )
}
artifactName
設定控制產生的封裝名稱。請參閱 構件 頁面以了解詳細資訊。
封裝的內容由 mappings
任務定義,類型為 Seq[(File,String)]
。mappings
任務是從要包含在封裝中的檔案到封裝中的路徑的對應序列。請參閱 對應檔案 以取得產生這些對應的便利函數。例如,若要將檔案 in/example.txt
新增至主要二進位 jar,路徑為「out/example.txt」,
Compile / packageBin / mappings += {
(baseDirectory.value / "in" / "example.txt") -> "out/example.txt"
}
請注意,mappings
的範圍是由組態和特定的封裝任務所決定。例如,測試來源封裝的對應是由 Test / packageSrc / mappings
任務定義。