arena-portal

star 0

Workflow guide for the Arena Liferay portal fork (7.4.3.x GA). Use when working on portal-impl, portal-kernel, portal-web, or modules/ in this repo. Covers build routing, Service Builder, REST Builder, OSGi runtime, and verification steps. Never use blade gw here.

wsyski By wsyski schedule Updated 6/5/2026

name: arena-portal description: Workflow guide for the Arena Liferay portal fork (7.4.3.x GA). Use when working on portal-impl, portal-kernel, portal-web, or modules/ in this repo. Covers build routing, Service Builder, REST Builder, OSGi runtime, and verification steps. Never use blade gw here.

Build System Routing

Route by file location. Do not use blade gw — this is a portal fork, not a Blade workspace.

Location Tool Example
portal-impl/, portal-kernel/, portal-web/, util-*/ ant (repo root) ant compile
modules/** gradlew from module dir ../../../../gradlew jar

Service Builder Workflow

Source of truth: service.xml in a *-service module.

  1. Edit service.xml
  2. From the *-service module dir: ../../../../gradlew buildService
  3. Edit only *LocalServiceImpl, *ServiceImpl, and model impl classes — never hand-edit other generated output
  4. Regenerate before touching impl classes after any service.xml change

REST Builder Workflow

Source of truth: rest-config.yaml in a *-rest-impl module.

  1. Edit rest-config.yaml or the OpenAPI spec
  2. From the *-rest-impl module dir: ../../../../gradlew buildREST
  3. Patch handwritten impl code around the generated surface — never edit generated classes directly
  4. New resources: register in RestApiServerConfig via JAXRSServerFactoryBean (CXF does not auto-discover)

Module Anatomy

Standard OSGi app split:

  • *-api — public interfaces and constants; no implementation
  • *-service — Service Builder source (service.xml) and generated service layer
  • *-impl — DS @Component implementations
  • *-web — portlet or MVC layer
  • *-test — integration tests

OSGi marker files (do not delete):

  • .lfrbuild-portal — opts module into ant all
  • .lfrbuild-app-server-lib, .lfrbuild-static, .lfrbuild-tool — change deploy destination

Verification After Changes

What changed Run
Portal core Java ant compile
Module Java ../../../../gradlew jar
Module tests ../../../../gradlew test
Deploy module ../../../../gradlew deploy
service.xml buildService then jar
rest-config.yaml buildREST then jar

OSGi Runtime

  • OSGi shell: telnet localhost 11611
  • Tomcat log: ../bundles/tomcat-9.0.90/logs/catalina.out
  • Liferay log: ../bundles/logs/liferay.*.log
  • Check bundle state: lb <bundle-name> in OSGi shell — should be ACTIVE
  • Stalled bundle: refresh <bundle-id> in OSGi shell

Arena-Specific Discipline

  • All Arena customizations are tagged PLCB-* in commits
  • Before assuming a behavior is Arena-specific: git log --grep="PLCB" --oneline
  • Customizations are intentionally narrow — keep changes surgical
  • Check if a file is Arena-modified: git log --follow -p -- <file>
Install via CLI
npx skills add https://github.com/wsyski/blade-workspace --skill arena-portal
Repository Details
star Stars 0
call_split Forks 0
navigation Branch main
article Path SKILL.md
More from Creator