Build Jobs & Repositories

Most Studio resources go live the moment a revision is activated. Two things go further: build jobs compile what can’t be live (JPA entities, WAR packaging), and repositories push a project’s sources to git.

When a build is needed

Activation deploys views, custom models, actions, menus, selections, queries and workflows instantly — no build. You need a build only when the project

  • contains compiled resources — JPA entities and enums (Models), or

  • should be packaged as a deployable WAR (the Build button on the revision — Lifecycle).

Following a build

  1. Click Build on the revision. A job is submitted.

  2. Open Studio → Build Jobs to follow it — each job shows its status, a progress bar and the current stage.

  3. Open a job to read its live output. A running job can be cancelled from its form.

  4. On success, the produced WAR is attached to the job as a downloadable artifact.

Build jobs grid

The statuses: Pending (queued), Running, Success, Failed, Cancelled. On failure, the output and error message tell you why — typically a compilation error in an entity definition.

If the project already has a build pending or running, clicking Build returns that job instead of queuing a second one. Jobs keep their output and artifacts, so the build history stays inspectable.

Connecting a project to git

  1. Open Studio → Configuration → Repositories and click New.

  2. Set the repository Path (URI), the auth token (and user), and the committer name and email.

  3. Click Test Connection… to validate the credentials.

  4. On the project form, pick the repository under Settings.

Syncing

Click Sync on the revision: the revision is exported as source files, committed, and pushed to a dev-<version> branch of the repository (e.g. dev-1.0.0).

Sync is one-way — Studio stays the source of truth; the repository is the reviewable, diffable history of what each revision contains.

Configuration

Build and export behavior is tuned in axelor-config.properties (defaults shown):

# local build executor: gradle arguments and timeout in minutes
studio.build.local.args = -x test
studio.build.local.timeout = 30

# where exported apps are written
studio.export.dir = {user.dir}/data/studio/apps

# path to the webapp sources used to assemble the application WAR;
# required for the Build (WAR export) button
studio.export.source.webapp =

The Studio feature itself is enabled with features.studio = true — see Projects & Resources.