Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

iTechGuides is reader-supported. When you buy through links on our site, we may earn an affiliate commission. As an Amazon Associate I earn from qualifying purchases. Learn more

To create a Liferay Client Extension, put a project in a Liferay Workspace’s client-extensions/ directory, define the extension in client-extension.yaml, implement its use case, and build it into a Liferay Universal File Format Archive (LUFFA) ZIP. Then deploy that archive using the workflow for your hosting model: SaaS, PaaS, or self-hosted.

What a Client Extension project does

Liferay describes Client Extensions as a way to extend the platform without deploying code directly to Liferay. They integrate with Liferay APIs while aiming to remain loosely coupled from the platform implementation. That makes them a different approach from deploying OSGi modules directly; it does not mean every kind of customization can be implemented identically.

In a workspace, a Client Extension project belongs under client-extensions/. Its client-extension.yaml file declares one or more extensions, and each extension’s type tells Liferay how to handle it. The project must also contain the implementation and configuration its particular use case requires. [Liferay Client Extensions overview; Getting started]

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Choose a project type before generating files

The Liferay CLI’s liferay new flow can start a Client Extension or Liferay Platform project. It is a project starter, not a command that automatically completes and deploys an extension for every use case. The choice affects the project setup: the selected target platform sets default dependencies and build rules. [Liferay getting-started guide]

Remote App Client Extension

Choose a Remote App when the application runs outside Liferay and connects to the platform through the supported integration points. This keeps the application’s runtime separate from DXP or Portal.

Liferay Platform project

Choose a Liferay Platform project when the extension is intended to be deployed to DXP or Portal. Confirm that the project type and extension configuration are compatible with your target release before building.

Prepare the workspace and declare the extension

Start with a Liferay Workspace and use the Java release supported for your target DXP or Portal version. The required Java version is version-dependent; check Liferay’s compatibility matrix rather than assuming one release works for every workspace. SaaS deployment also requires the lcp CLI. [Liferay getting-started guide]

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
  1. Create or use a Liferay Workspace, then place the project in its client-extensions/ directory.

  2. Use liferay new if its project starter fits your needs, and select the appropriate project type and target platform. You can also adopt an existing project, provided it follows the workspace and configuration requirements.

  3. In the project’s client-extension.yaml, declare the extension or extensions and configure each one for its intended type and use case.

  4. Implement the extension’s assets or application behavior. A generated project does not replace this step.

    Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
  5. Build the project using the workspace Gradle wrapper. The resulting deployable artifact is a LUFFA ZIP archive.

Project grouping has compatibility constraints: placing incompatible extension types together can cause a build to fail. Check the current documentation for the chosen extension types and target platform before grouping projects. [Liferay getting-started guide]

Deploy according to your Liferay hosting model

The archive format does not make the deployment process interchangeable. Use the path for the environment where the extension will run. The exact commands and pipeline conventions can change with the Liferay release and service configuration, so verify them against the documentation for your target. [Deploying Client Extensions]

Hosting model Documented deployment path
SaaS Build from client-extensions/ with the workspace Gradle wrapper, then deploy the generated archive using lcp deploy --extension [extension-zip-file]. The lcp CLI is required. [Liferay getting-started guide]
PaaS Commit the projects under the service workspace’s client-extensions/ directory, push the changes, and use the service’s normal build and deployment workflow. The Client Extension pipeline creates a distinct build. [Deploying Client Extensions]
Self-hosted For a workspace bundle, the guide documents clean distBundleZip. For manual archive deployment, run clean build, then copy the project ZIPs from dist/ to Liferay Home/osgi/client-extensions. [Liferay getting-started guide]

Use a small CSS extension as a first example

Liferay’s CSS walkthrough demonstrates the workflow in a manageable case: begin with its sample workspace, build and deploy the CSS extension with Gradle, and check the change in a local Liferay instance. It is useful for understanding the sequence from workspace project to visible result, even if your eventual extension uses another type. [Customizing Liferay with a Client Extension]

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

The walkthrough’s example container tag is liferay/portal:7.4.3.132-ga132. Treat that as the version used in the example, not as a recommendation for a current production deployment. Use a Portal or DXP version that matches your environment and verify its compatibility requirements.

Best Value
Sale
1,000 Books to Read Before You Die: A Life-Changing List
  • Book - 1, 000 books to read before you die: a life-changing list (1000 before you die)
  • Language: english
  • Binding: hardcover
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Check these details when a build or deployment fails

Why use the documented project workflow?

Hand-assembling extension files leaves you to manage the workspace layout, extension declaration, build configuration, and deployment artifact yourself. A workspace project and client-extension.yaml provide the documented structure, while the project build produces the archive expected by the deployment process. The CLI can help start a suitable project, but the extension still needs correct configuration and an implementation designed for its use case.

Quick Recap

Bestseller No. 1
SaleBestseller No. 5
1,000 Books to Read Before You Die: A Life-Changing List
1,000 Books to Read Before You Die: A Life-Changing List
Book - 1, 000 books to read before you die: a life-changing list (1000 before you die); Language: english
$19.37

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.