Skip to content

Gradle Application Workflow

The org.j7m.application Gradle plugin packages, signs, verifies and publishes J7M bundles to a local application repository. Its runtime lifecycle tasks currently report unavailable state; use a live host's application manager or Nugget administration for real activation and shutdown.

Configure packaging

This Groovy build fragment assumes the J7M plugin is available to the build through the project's configured plugin resolution:

plugins {
    id 'java'
    id 'org.j7m.application'
}

j7m {
    manifest.set(layout.projectDirectory.file(
        'src/main/resources/META-INF/j7m-application.json'))
    bundleFile.set(layout.buildDirectory.file('distributions/crawler.j7m'))
    repositoryDir.set(layout.buildDirectory.dir('j7m-repository'))
    verificationProfile.set('development')
    libraries.from(configurations.runtimeClasspath)
    documentation.from(layout.projectDirectory.dir('manual'))
    configurationFiles.from(layout.projectDirectory.file('config/application.properties'))
}

The manifest must match the actual libraries or JPMS modules in the bundle. libraries, modules, documentation and configurationFiles are file collections evaluated when the task executes. Keep secrets out of packaged configuration and documentation.

Task semantics

Task Current behavior
j7mPackage Builds required JARs, validates the manifest and writes the bundle.
j7mSign Depends on packaging and signs through the bundled signing implementation.
j7mVerify Depends on signing and verifies the selected profile.
j7mDeployLocal Depends on verification and publishes the immutable coordinate to the local repository.
j7mPlanLocal / j7mRunLocal Depend on publication / planning and write explicit unavailable runtime state.
j7mStatusLocal Reads the local workflow state file; depends on the run task.
j7mStopLocal / j7mUnloadLocal Continue the dependency chain and report unavailable lifecycle execution.
./gradlew j7mDeployLocal

This executes the package → sign → verify → publish chain. It does not start an application server or prove that a service is running. The lifecycle/status dependency chain is not a remote operator console.

Profiles are development, strict-production and strict-regulated. Selecting a strict profile does not provision a production signing authority or trusted key material. signingKeyId is safe configuration metadata, not a private-key store; the bundled local signing workflow must not be presented as a production KMS integration. See signed applications, repositories and enterprise integrations.