Liferay DXP 7.4 – Custom Development Environment Setup
1. Prerequisites
Required Software
JDK 11 or 17 (DXP 7.4 supported versions)
Gradle (comes with workspace)
Node.js (for frontend modules)
Git
MySQL / PostgreSQL
Application Server (usually Apache Tomcat 9)
Blade
2. Create Liferay Workspace
blade
init -v 7.4 dxp-workspace-demo
cd my-dxp-workspace-demo
Blade Installing from the Graphical Installer
If you’re more comfortable with an installer, download the latest Liferay Project SDK Installer and run it.
Select your Java runtime. This should be auto-detected.
After the introduction, click Next.
You can initialize a Liferay Workspace during the install. Liferay Workspace is an environment (a set of folders) on your system for Liferay projects. Set its location if you wish to initialize it now.
If you’re initializing a Liferay Workspace, you must next choose Liferay DXP or Community Edition.
Choose the product type and click Next.
Click Next to install Blade CLI.
Configure DXP 7.4 Product
Open:
gradle.properties
Check or update this line:
liferay.workspace.product=dxp-7.4-uXX
Replace uXX with your update version, for example:
liferay.workspace.product=dxp-7.4-u92
If you're using Community instead:
liferay.workspace.product=portal-7.4-ga92
Next Step – Initialize Bundle
From inside:
dxp-workspace-demo
Run:
gradlew initBundle
This will:
Download DXP/CE
Setup Tomcat
Create bundles folder
After completion, you’ll see:
bundles/
Folder & File Explanation (Liferay 7.4 Bundle)
data/
🔹 Stores runtime data generated by Liferay.
Contains:
Document Library files
Search indexes
HSQL database (if default DB)
OSGi state cache
deploy/
🔹 Hot deploy folder.
If you drop:
JAR (OSGi module)
WAR
LPKG
Liferay auto-deploys it.
Used mostly for quick manual deployments.
elasticsearch-sidecar/
🔹 Embedded Elasticsearch instance.
Used when:
You are not using external Elasticsearch
Default dev setup
In production, you should use external Elasticsearch cluster.
glowroot/
🔹 Performance monitoring tool (APM).
Used for profiling
JVM performance tracking
Thread & memory monitoring
Enterprise teams use this for debugging performance issues.
license/
🔹 Stores DXP license files (not used in Community Edition).
logs/
🔹 All server logs go here.
Important files:
liferay.log
catalina.out
First place to check if server fails.
osgi/
🔹 Core of Liferay 7.4 architecture.
Contains:
modules/
configs/
marketplace/
state/
This is where OSGi runtime lives.
Your custom modules get deployed here.
routes/
🔹 Used for React / SPA routing.
Modern Liferay front-end routing support.
tomcat/
🔹 Application server (Apache Tomcat).
Contains:
bin/
conf/
lib/
logs/
webapps/
Start server from:
tomcat/bin/startup.bat
tools/
🔹 Internal utilities & scripts used by Liferay.
work/
🔹 Temporary compiled JSP files and Tomcat cache.
Can be deleted if server has issues.
Important Files
.liferay-home
Marks this directory as Liferay Home
.liferay-version
Stores current portal version.
.githash
Internal build reference.
portal-ext.properties
🔹 Most important customization file.
Used to override:
Database config
Mail config
CAS config
LDAP
Clustering
Cache settings
Example DB config:
Configure Database
Edit:
bundles/osgi/configs/com.liferay.portal.store.db.configuration.DBStoreConfiguration.config
Or set in portal-ext.properties:
jdbc.default.driverClassName=com.mysql.cj.jdbc.Driver
jdbc.default.url=jdbc:mysql://localhost:3306/lportal
jdbc.default.username=root
jdbc.default.password=yourpassword
Start DXP Server
cd
bundles/tomcat/bin
startup.bat
Access:
Create Custom Module
Create MVC Portlet
blade create -t mvc-portlet -p com.sgc.demo demo-portlet
Project structure:
demo-portlet/
├── bnd.bnd
├── build.gradle
├──
src/main/java
├── src/main/resources
└──
src/main/webapp
Deploy:
gradlew deploy
gradlew :modules:demo-portlet:deploy
Comments