Blogs
Many UI teams prefer building Liferay DXP Theme using gulp instead of the Liferay Theme Builder. For example,
cd themes/my-themenpm installgulp build |
However, Liferay has not documented ways to integrate the above to a Maven project pom.xml. Here is a sample solution:
{ "name": "my-theme", "version": "1.0.0", "main": "package.json", "keywords": [ "liferay-theme" ], "liferayTheme": { "baseTheme": "styled", "fontAwesome": false, "screenshot": "", "templateLanguage": "ftl", "version": "7.3" }, "devDependencies": { "compass-mixins": "0.12.10", "gulp": "4.0.2", "liferay-frontend-common-css": "1.0.4", "liferay-frontend-theme-styled": "6.0.31", "liferay-frontend-theme-unstyled": "6.0.27", "liferay-theme-tasks": "11.2.2" }, "scripts": { "init": "gulp init", "build": "gulp build", "deploy": "gulp deploy", "extend": "gulp extend", "kickstart": "gulp kickstart", "status": "gulp status", "upgrade": "gulp upgrade", "watch": "gulp watch" }, "dependencies": {} } |
Here is the pom.xml file, which includes calling 'gulp
build:clean
' for command 'mvn clean
':
<?xml version="1.0"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" > <modelVersion>4.0.0</modelVersion> <groupId>my-theme</groupId> <artifactId>my-theme</artifactId> <version>1.0.0</version> <name>My Theme</name> <packaging>war</packaging> <build> <plugins> <plugin> <groupId>com.github.eirslett</groupId> <artifactId>frontend-maven-plugin</artifactId> <version>1.9.1</version> <configuration> <workingDirectory>./</workingDirectory> </configuration> <executions> <execution> <id>install node and npm</id> <goals> <goal>install-node-and-npm</goal> </goals> <phase>generate-resources</phase> <configuration> <nodeVersion>v11.15.0</nodeVersion> <npmVersion>6.7.0</npmVersion> </configuration> </execution> <execution> <id>npm install</id> <goals> <goal>npm</goal> </goals> <phase>generate-resources</phase> <configuration> <arguments>install</arguments> </configuration> </execution> <execution> <id>gulp build</id> <goals> <goal>gulp</goal> </goals> <phase>generate-resources</phase> <configuration> <arguments>build</arguments> </configuration> </execution> <execution> <id>gulp clean</id> <goals> <goal>gulp</goal> </goals> <phase>clean</phase> <configuration> <arguments>build:clean</arguments> </configuration> </execution> </executions> </plugin> <plugin> <artifactId>maven-war-plugin</artifactId> <version>3.3.2</version> <configuration> <outputDirectory>${project.basedir}/dist</outputDirectory> <warSourceDirectory>${project.basedir}/build</warSourceDirectory> <failOnMissingWebXml>false</failOnMissingWebXml> <packagingExcludes>.tmp/**</packagingExcludes> </configuration> </plugin> </plugins> </build> </project> |
With above two files, your theme can now be built by Maven comand:
mvn package
which creates 'dist/my-theme-1.0.0.war
' side by side
with the version created by gulp 'dist/my-theme.war
'.
This command also does its job:
mvn clean
.