Liferay Workspace
Liferay Workspace is a predefined project structure that simplifies Liferay module development, providing:
- Standardized directory layout
- Built-in Gradle support
- Environment configuration management
- Deployment automation
- Tooling integration
Workspace Structure (Gradle)
Section titled “Workspace Structure (Gradle)”liferay-workspace/├── configs/ # Environment configurations│ ├── common/│ ├── dev/│ └── prod/├── gradle/ # Gradle wrapper files├── modules/ # Custom modules│ ├── apps/│ ├── core/│ └── themes/├── plugins-sdk/ # Legacy plugins (if needed)├── build.gradle # Main build file├── gradle.properties # Gradle properties├── gradlew # Gradle wrapper (Unix)└── gradlew.bat # Gradle wrapper (Windows)Key Features
Section titled “Key Features”1. Environment Management
Section titled “1. Environment Management”- configs/ folder holds environment-specific configurations
- Automatically applies settings based on active profile (
-Pliferay.workspace.environment=dev)
2. Module Organization
Section titled “2. Module Organization”- Logical separation of module types (apps, core, themes)
- Supports multiple module projects within one workspace
3. Gradle Integration
Section titled “3. Gradle Integration”- Preconfigured build scripts
- Dependency management
- Liferay-specific tasks
Setting Up a Workspace
Section titled “Setting Up a Workspace”-
Install prerequisites:
- Java JDK 8/11
- Gradle (or use wrapper)
- Liferay Blade CLI
-
Create workspace:
Terminal window blade init -v 7.4 my-liferay-workspace -
Import into IDE:
- IntelliJ: Open as Gradle project
- Eclipse: Import Gradle project
Best Practices for Developers
Section titled “Best Practices for Developers”1. Module Organization Strategy
Section titled “1. Module Organization Strategy”- Group related modules together
- Use clear naming conventions
- Separate by functionality (not by technical layer)
2. Dependency Management
Section titled “2. Dependency Management”- Use
build.gradlefor common dependencies - Leverage BOM (Bill of Materials) for version alignment:
dependencies {compileOnly group: "com.liferay", name: "com.liferay.portal.kernel"compileOnly group: "org.osgi", name: "org.osgi.service.component.annotations"}
3. Environment Configuration
Section titled “3. Environment Configuration”- Keep environment-specific settings in
configs/ - Use separate configurations for DB, portal properties, etc.
- Example structure:
configs/├── dev/│ ├── portal-ext.properties│ └── osgi/└── prod/├── portal-ext.properties└── osgi/
4. Build Optimization
Section titled “4. Build Optimization”- Use Gradle’s incremental builds
- Configure parallel execution in
gradle.properties:org.gradle.parallel=trueorg.gradle.daemon=true
5. Version Control Strategy
Section titled “5. Version Control Strategy”- Include in VCS:
build.gradlegradle.propertiesconfigs/(without secrets)
- Exclude:
build/folders.gradle/- Local deployment artifacts
Important Gradle Tasks
Section titled “Important Gradle Tasks”| Task | Description |
|---|---|
gradle deploy | Deploy all modules to Liferay |
gradle build | Build all modules |
gradle clean | Clean build artifacts |
gradle formatSource | Format Java sources |
gradle checkFormat | Verify source formatting |
gradle test | Run unit tests |
gradle watch | Continuous deployment mode |
Workspace Configuration
Section titled “Workspace Configuration”gradle.properties Essentials
Section titled “gradle.properties Essentials”liferay.workspace.bundle.url=https://releases-cdn.liferay.com/portal/7.4.3.4-ga4/liferay-ce-portal-tomcat-7.4.3.4-ga4-20210419214101527.tar.gzliferay.workspace.home.dir=/path/to/bundlesliferay.workspace.modules.dir=modulesliferay.workspace.themes.dir=themesbuild.gradle Customizations
Section titled “build.gradle Customizations”subprojects { apply plugin: "com.liferay.plugin"
dependencies { compileOnly group: "com.liferay", name: "com.liferay.portal.kernel" compileOnly group: "org.osgi", name: "osgi.cmpn" }
repositories { maven { url "https://repository.liferay.com/nexus/content/groups/public" } }}Advanced Workspace Techniques
Section titled “Advanced Workspace Techniques”1. Multi-Module Projects
Section titled “1. Multi-Module Projects”include 'modules:apps:my-app', 'modules:core:my-core'2. Custom Source Sets
Section titled “2. Custom Source Sets”sourceSets { main { resources { srcDirs += ["src/main/resources", "../configs/common"] } }}3. Profile-Specific Builds
Section titled “3. Profile-Specific Builds”./gradlew build -Pliferay.workspace.environment=prod4. Docker Integration
Section titled “4. Docker Integration”task buildDockerImage(type: Exec) { commandLine 'docker', 'build', '-t', 'my-liferay-app', '.'}Troubleshooting
Section titled “Troubleshooting”-
Deployment Issues:
- Check
[LIFERAY_HOME]/osgi/logs - Verify bundle status with
blade sh lb
- Check
-
Build Failures:
- Run with
--stacktraceflag - Check dependency versions
- Run with
-
Module Not Found:
- Verify
settings.gradleincludes the module - Check module directory structure
- Verify
Conclusion
Section titled “Conclusion”Liferay Workspace with Gradle provides:
- Standardized project structure
- Simplified build configuration
- Environment management
- Powerful development tools
Best practices include:
- Logical module organization
- Proper environment separation
- Consistent dependency management
- Leveraging Blade CLI for productivity
The combination of Liferay Workspace, Gradle, and Blade CLI creates a powerful development environment for building modular, maintainable Liferay applications.