Aug 25, 2026 · ishimoto

Deploying — the Deploy Editor & Build Types

Deploying

The last stop in the editor tour: getting your application onto a server. Two parts to it — where you deploy (the Deploy editor, backed by the .treasureboat file) and how you package it (the three build types).

The Deploy editor & the .treasureboat file

Every project has a .treasureboat file (from the Project Layout post — it also records whether the project is an APPLICATION or a FRAMEWORK). For an application it additionally holds your deploy configuration, and the Deploy editor edits it visually:

project.type=APPLICATION
deploy.server.app01.host=159.XXX.XXX.XXX
deploy.server.app01.user=centos
deploy.server.app01.base=/opt/TreasureBoat
deploy.server.app01.build=LEGACY
deploy.server.apache.host=159.XXX.XXX.XXX
deploy.server.apache.build=LEGACY
deploy.target.live.servers=app01\:app, apache\:wsr
  • Servers — each deploy server: its host, SSH user, install base, and which build type it takes.
  • Targets — a named profile (here live) that maps servers to roles: app01:app runs the application, apache:wsr serves the static web resources. Deploying the live target pushes each server its part over SSH.

DeployEditor


The three build types

You package the app one of three ways, depending on what the target server has and how self-contained you want the bundle. All three also produce a .tar.gz for transfer.

  Legacy (NLB) Maven Embedded (MEB) Maven Simple (MSB)
Folder App-version-timestamp.woa App_embedded_YYYYMMDD_HHmm App_YYYYMMDD_HHmm
Contains .woa bundle: JARs + full Resources + extracted WebServerResources + run scripts app + all dependency JARs in lib/, run scripts app JAR + pom.xml only, run scripts
Deps resolved bundled bundled Maven pulls them on the server
Needs on server Java Java Java + Maven + network
Best for classic production servers modern, self-contained, air-gapped dev / staging
  • Legacy (NLB) — the traditional WebObjects-style .woa bundle: JARs with full resources loaded at runtime, WebServerResources extracted to the filesystem, MacOS/UNIX run scripts. What long-running production boxes expect.
  • Maven Embedded (MEB) — self-contained: every dependency JAR sits in lib/, so the server needs nothing but Java. The best fit for locked-down or air-gapped servers (no outbound network to a Maven repo).
  • Maven Simple (MSB) — lightweight: just the app JAR + pom.xml. Maven on the server downloads the dependencies on first run. Smallest to transfer, but the server needs Maven and network access — handy for dev/staging.

The build type is per server in .treasureboat (deploy.server.<name>.build), so different targets in the same profile can package differently.


WebServerResources (WSR)

Alongside any of the three, a WSR build packages just the static resources (CSS, JS, images, fonts) for a front web server — Apache or nginx — to serve directly, instead of through the application. That’s the apache:wsr role in the target above.


And Docker

For containers, TreasureBoat also generates a Dockerfile and docker-compose.yml and can build/run locally — a separate topic, covered by the Docker help pages in the IDE.


  • Project Layout — the .treasureboat file and target/
  • The Application vs Framework section there — only applications carry deploy config

#IntelliJ

← Back to the blog