Référence Gradle DSL
Le bloc `nucleus { … }` complet — chaque propriété, chaque sous-bloc.
Le plugin Gradle Nucleus (id("dev.nucleusframework")) expose une seule extension top-level : nucleus. Elle reflète le DSL Compose Desktop de JetBrains et l'étend avec des formats, des surfaces de signature, des paramètres GraalVM, des pipelines store, et du wiring runtime. Cette page liste chaque propriété dans l'ordre où elle apparaît dans les sources du plugin.
Top-level : nucleus { }
dev.nucleusframework.NucleusExtension :
val application: JvmApplication— configuration app JVM (nucleus { application { … } }).val nativeApplication: NativeApplication— cibles macOS Kotlin/Native.val dependencies: NucleusPlugin.Dependencies— coordonnées / notations des modules runtime.
application { } — JvmApplication
from(SourceSet)/from(KotlinTarget)disableDefaultConfiguration()dependsOn(vararg tasks: Task | String)fromFiles(vararg files: Any)var mainClass: String?val mainJar: RegularFilePropertyvar javaHome: Stringval args: MutableList<String>/args(vararg args: String)val jvmArgs: MutableList<String>/jvmArgs(vararg jvmArgs: String)val nativeDistributions: JvmApplicationDistributions— voir ci-dessousval buildTypes: JvmApplicationBuildTypesval graalvm: GraalvmSettings— voir GraalVM
nativeDistributions { } — JvmApplicationDistributions
| Propriété | Type | Notes |
|---|---|---|
modules: ArrayList<String> | — | Défauts : java.base, java.desktop, java.logging, java.net.http, jdk.accessibility, jdk.crypto.ec |
var includeAllModules: Boolean | — | Embarquer chaque module JDK |
var cleanupNativeLibs: Boolean | — | Stripper les libs natives hors cible |
var splashImage: String? | — | Chemin de l'image splash |
var enableAotCache: Boolean | — | Cache AOT JDK 25+ |
var artifactName: String | défaut "${name}-${version}-${os}-${arch}.${ext}" | Template de sortie |
var compressionLevel: CompressionLevel? | — | Store, Normal, Maximum |
val trustedCertificates: ConfigurableFileCollection | — | Certificats CA → cacerts du JDK livré (voir certificats de confiance) |
val protocols: MutableList<UrlProtocol> | — | Protocoles de deep link |
targetFormats: ... | hérité | Les 16 formats |
val linux: LinuxPlatformSettings | — | Voir Linux |
val macOS: JvmMacOSPlatformSettings | — | Voir macOS |
val windows: WindowsPlatformSettings | — | Voir Windows |
val publish: PublishSettings | — | Voir publish |
Méthodes :
fun fileAssociation(mimeType, extension, description, linuxIconFile?, windowsIconFile?, macOSIconFile?)fun protocol(name, vararg schemes)- Communes (de
AbstractPlatformSettings) :iconFile,packageVersion,fileAssociation(...)
Enum TargetFormat
Dmg, Pkg, Msi, Exe, Nsis, NsisWeb, AppX, Portable, Deb, Rpm, AppImage, Flatpak, Snap, Zip, Tar, SevenZip, plus l'intermédiaire RawAppImage.
macOS { } — JvmMacOSPlatformSettings
Étend AbstractMacOSPlatformSettings. Identification :
packageName: String?,packageVersion,packageBuildVersiondmgPackageVersion,dmgPackageBuildVersion,pkgPackageVersion,pkgPackageBuildVersiondockName: String?,setDockNameSameAsPackageName: Boolean = truebundleID: String?,appCategory: String?,minimumSystemVersion: String?installationPath: String? = "/Applications"iconFile,layeredIconDir(répertoire.iconmacOS 26+)
Signature & sandbox :
entitlementsFile: RegularFileProperty,runtimeEntitlementsFileprovisioningProfile: RegularFileProperty,runtimeProvisioningProfilesigning { … }— voir Signaturenotarization { … }— voir Notarisation
macOS 26 :
macOsSdkVersion: String? = "26.0"—vtoolpatche leLC_BUILD_VERSIONdu launcher Mach-O pour activer Liquid Glass au SDK 26.
Composition :
launchAgents { agent(plistName) { bundleProgram; arguments; startInterval } }infoPlist { extraKeysRawXml }dmg { … }— voir DMG
macOS.signing { } — MacOSSigningSettings
sign: Property<Boolean>(défautfalse)identity: Property<String>keychain: Property<String>prefix: Property<String>
macOS.notarization { } — MacOSNotarizationSettings
Trois modes mutuellement exclusifs :
- Apple ID :
appleID,password,teamID - Profil keychain
notarytool:keychainProfile, optionnelkeychainPath - Clé API App Store Connect :
apiKey,apiKeyId,apiIssuer
macOS.dmg { } — DmgSettings
title: String?,iconSize: Int?,iconTextSize: Int?format: DmgFormat?(UDRW,UDRO,UDCO,UDZO,UDBZ,ULFO)size: String?,shrink: Boolean?,sign: Booleanbackground: RegularFileProperty,backgroundColor: String?icon: RegularFileProperty,badgeIcon: RegularFilePropertywindow { x; y; width; height }content(x, y, type: DmgContentType?, name: String?, path: String?)—DmgContentType:File,Link,Dir
windows { } — WindowsPlatformSettings
iconFile,packageNameconsole: Boolean,dirChooser: Boolean,perUserInstall: Booleanshortcut,menu,menuGroupupgradeUuid: String?,msiPackageVersion,exePackageVersionnsis { … }— voir NSISappx { … }— voir AppXsigning { … }— voir Signature
windows.nsis { } — NsisSettings
oneClick: BooleanallowElevation: Boolean,perMachine: BooleanallowToChangeInstallationDirectory: BooleancreateDesktopShortcut: Boolean,createStartMenuShortcut: BooleanrunAfterFinish: Boolean,deleteAppDataOnUninstall: BooleanmultiLanguageInstaller: Boolean,installerLanguages: List<String>installerIcon,uninstallerIcon,installerHeader,installerSidebarlicense,script,includeScript
windows.appx { } — AppXSettings
applicationId,publisherDisplayName,displayName,publisher,identityNamelanguages: List<String>backgroundColor: String?,showNameOnTiles: BooleanstoreLogo,square44x44Logo,square150x150Logo,wide310x150LogominVersion: String?,maxVersionTested: String?addAutoLaunchExtension: Boolean,setBuildNumber: Boolean
windows.signing { } — WindowsSigningSettings
enabled: BooleancertificateFile,certificatePassword,certificateSha1,certificateSubjectNamealgorithm: SigningAlgorithm(Sha1,Sha256,Sha512)timestampServer: String?- Azure Artifact Signing :
publisherName,azureTenantId,azureEndpoint,azureCertificateProfileName,azureCodeSigningAccountName
linux { } — LinuxPlatformSettings
iconFile,shortcut: Boolean,packageName,packageVersionappRelease: String?,appCategory: String?,menuGroup: String?startupWMClass: String?debMaintainer: String?,debPackageVersion,debDepends: List<String>rpmLicenseType: String?,rpmPackageVersion,rpmRequires: List<String>appImage { … }— voir AppImagesnap { … }— voir Snapflatpak { … }— voir Flatpaksigning { … }— voir Signature
linux.signing { } — LinuxSigningSettings
Signe en GPG les DEB/RPM pour la distribution hors store. Voir Signature de code.
enabled: Property<Boolean>(défautfalse)keyId: Property<String>— id de clé GPG, empreinte ou emailkeyFile: RegularFileProperty— clé privée ASCII-armored, importée dans un trousseau jetable (optionnel si la clé est déjà dans le trousseau de signature)passphrase: Property<String>debMethod: DebSignMethod(défautDetached; aussiDpkgSig,Debsig)
Valeurs par défaut lues depuis compose.desktop.linux.sign et compose.desktop.linux.signing.{keyId,keyFile,passphrase}.
linux.appImage { } — AppImageSettings
category: AppImageCategory?(AudioVideo,Development,Education,Game,Graphics,Network,Office,Science,Settings,System,Utility)genericName: String?,synopsis: String?desktopEntries: Map<String, String>
linux.snap { } — SnapSettings
confinement: SnapConfinement(défautStrict; aussiClassic,Devmode)grade: SnapGrade(défautStable; aussiDevel)summary: String?,base: String?plugs: List<SnapPlug>— 11 par défautautoStart: Booleancompression: SnapCompression?(Xz,Lzo)
SnapPlug : Desktop, DesktopLegacy, Home, X11, Wayland, Unity7, BrowserSupport, Network, NetworkBind, Gsettings, AudioPlayback, AudioRecord, Opengl, RemovableMedia, Cups.
linux.flatpak { } — FlatpakSettings
runtime: String = "org.freedesktop.Platform"runtimeVersion: String = "23.08"sdk: String = "org.freedesktop.Sdk"branch: String = "master"finishArgs: List<String>— défauts :--share=ipc,--socket=x11,--socket=wayland,--socket=pulseaudio,--device=drilicense: RegularFileProperty
publish { } — PublishSettings
publishMode: PublishMode(Never,Auto,Always)github { enabled, owner, repo, token, channel, releaseType }s3 { enabled, bucket, region, path, acl }generic { enabled, url, channel, useMultipleRangeRequest }
ReleaseChannel : Latest, Beta, Alpha.
ReleaseType : Release, Draft, Prerelease.
GraalVM — GraalvmSettings
isEnabled: Property<Boolean>(défautfalse)javaLanguageVersion: Property<Int>(défaut25)jvmVendor: Property<JvmVendorSpec>imageName: Property<String>march: Property<String>(défaut"native")buildArgs: ListProperty<String>nativeImageConfigBaseDir: DirectoryPropertyval macOS: GraalvmMacOSSettings—cStubsSrc,minimumSystemVersion = "12.0",macOsSdkVersion = "26.0"val metadataRepository: MetadataRepositorySettings:enabled: Boolean = trueversion: String = "0.10.6"excludedModules: SetProperty<String>moduleToConfigVersion: MapProperty<String, String>
App native — NativeApplication
Pour l'instant macOS Kotlin/Native uniquement.
targets(vararg targets: KotlinTarget)— doivent êtreKotlinNativeTargetsurFamily.OSXval distributions: NativeApplicationDistributions
Annotations
@ExperimentalNucleusLibrary— marqueur opt-in pour la surface instable du DSL.
Autres types
class FileAssociation(mimeType, extension, description, iconFile?)class UrlProtocol(name, schemes: List<String>)class LaunchAgentSettingsclass JvmApplicationBuildTypesclass ProguardSettingsenum class CompressionLevelenum class SigningAlgorithmenum class ReleaseType,enum class ReleaseChannel,enum class PublishModeenum class SnapGrade,enum class SnapConfinement,enum class SnapCompressionenum class AppImageCategoryenum class DmgFormat,enum class DmgContentType
Notes
Le plugin injecte une ressource nucleus/nucleus-app.properties dans l'app packagée contenant app.id, app.version, app.vendor, app.aumid, startup.task.id, etc. L'objet NucleusApp au runtime les lit au démarrage — c'est ainsi que la config DSL coule vers le code lib.