pentaho-ce-bundle-parent-pom
Used in:
components
- OverviewOverview
- VersionsVersions
- DependentsDependents
- DependenciesDependencies
<dependency> <groupId>org.pentaho</groupId> <artifactId>pentaho-ce-bundle-parent-pom</artifactId> <version>8.1.0.0-365</version> </dependency>
<?xml version="1.0" encoding="UTF-8"?> <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> <parent> <groupId>org.pentaho</groupId> <artifactId>pentaho-ce-jar-parent-pom</artifactId> <version>8.1.0.0-365</version> </parent> <groupId>org.pentaho</groupId> <artifactId>pentaho-ce-bundle-parent-pom</artifactId> <version>8.1.0.0-365</version> <packaging>pom</packaging> <name>Pentaho Community Edition Project Parent POM For Bundle Projects</name> <description>parent pom for Pentaho CE osgi projects</description> <url>http://wwww.pentaho.org</url> <licenses> <license> <name>Apache License, Version 2.0</name> <url>http://www.apache.org/licenses/LICENSE-2.0</url> <distribution>repo</distribution> </license> </licenses> <properties> <!-- These properties need to be redefined here or profile activation will not work with them --> <build.javascriptConfigDirectory>${basedir}/src/main/config/javascript</build.javascriptConfigDirectory> <requirejs.build.file>build.js</requirejs.build.file> </properties> <build> <plugins> <plugin> <groupId>org.apache.felix</groupId> <artifactId>maven-bundle-plugin</artifactId> <extensions>true</extensions> <executions> <execution> <id>generate-bundle-manifest</id> <phase>${generate-bundle-manifest-phase}</phase> <goals> <goal>manifest</goal> </goals> <configuration> <!-- override to specify import/export packages --> </configuration> </execution> </executions> </plugin> </plugins> </build> <!-- Profile: bundle-javascript Description: This profile is to be used in CE OSGI bundles. As a default behaviour, it minifies and uglifies javascript code with rjs and then adds the result as a resource to the bundle. By default no AMD bundling occurs, meaning that each javascript file is minified in place with ufligy2 and sourcemaps are generated. To override the default parameters a new <configuration> element for the plugin must be specified. Parameters that are not specified in the default <configuration> may be specified in a javascript build file located at ${build.javascriptConfigDirectory}/osgi/${requirejs.build.file}. The profile also supports javascript and sass pre-processing before the minification takes place. This feature needs to be activated and by setting ,for javascript, js.transpile.project pom property to true and, for sass, css.sass.project pom property to true, in the child pom of the module that requires pre-processing. By doing so, the module clien src will be pre-processed before the minification takes placed. This provides support for new client side technologies such as es2015 and SASS. The scripts fro pre-processing are defined in the project package.json, js-transpile for javascript and sass-transpile SASS. Here is a sample package.json to support es2015 and react jsx transpiling and SASS transpiling: { "name": "pentaho-react-sass", "version": "0.0.1", "description": "Pentaho Boga", "private": true, "scripts": { "js-transpile": "cross-var babel $npm_config_src_folder ‑‑out-dir $npm_config_out_folder ‑‑source-maps=$npm_config_generate_src_map ‑‑presets=env,react ‑‑plugins=transform-es2015-modules-amd", "sass-transpile": "cross-var node-sass $npm_config_src_folder $npm_config_out_folder" }, "devDependencies": { "babel-cli": "^6.24.1", "babel-plugin-transform-es2015-modules-amd": "^6.24.1", "babel-preset-env": "^1.5.2", "babel-preset-react": "^6.24.1", "cross-var": "^1.0.3", "node-sass": "^4.5.3", } } When using javascript pre-processing, sourcemaps should be handled by the pre-processor --> <profiles> <profile> <id>bundle-javascript</id> <activation> <file> <exists>${build.javascriptConfigDirectory}/osgi/${requirejs.build.file}</exists> </file> </activation> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-antrun-plugin</artifactId> <executions> <execution> <id>set-custom-properties</id> <phase>${javascript_transpile_custom_properties-phase}</phase> <goals> <goal>run</goal> </goals> <configuration> <exportAntProperties>true</exportAntProperties> <target> <condition property="optimize-javascript-src-dir" value="${build.transpiledJavascriptOutputDirectory}"> <equals arg1="${js.transpile.project}" arg2="true" /> </condition> <property name="optimize-javascript-src-dir" value="${build.javascriptSourceDirectory}" /> <condition property="skip.js-transpile" value="false"> <equals arg1="${js.transpile.project}" arg2="true" /> </condition> <property name="skip.js-transpile" value="true" /> <condition property="skip.sass-transpile" value="false"> <equals arg1="${css.sass.project}" arg2="true" /> </condition> <property name="skip.sass-transpile" value="true" /> <condition property="skip.npm-install" value="false"> <equals arg1="${js.transpile.project}" arg2="true" /> </condition> <condition property="skip.npm-install" value="false"> <equals arg1="${css.sass.project}" arg2="true" /> </condition> <property name="skip.npm-install" value="true" /> <echo message="optimize-javascript-src-dir = ${optimize-javascript-src-dir}" /> <echo message="skip.js-transpile = ${skip.js-transpile}" /> <echo message="skip.sass-transpile = ${skip.sass-transpile}" /> </target> </configuration> </execution> <execution> <id>cleanup-temp-transpile-folder</id> <phase>${javascript-transpile_cleanup-phase}</phase> <goals> <goal>run</goal> </goals> <configuration> <target> <delete dir="${build.transpiledJavascriptOutputDirectory}" includeemptydirs="true" /> </target> <skip>${skip.js-transpile}</skip> </configuration> </execution> </executions> </plugin> <plugin> <groupId>com.github.eirslett</groupId> <artifactId>frontend-maven-plugin</artifactId> <executions> <execution> <id>node-npm_install</id> <phase>${node-npm_install-phase}</phase> <goals> <goal>install-node-and-npm</goal> </goals> </execution> <execution> <id>npm install</id> <goals> <goal>npm</goal> </goals> <phase>${node-npm_install-phase}</phase> <configuration> <arguments>install</arguments> <skip>${skip.npm-install}</skip> </configuration> </execution> <execution> <id>transpile-sass</id> <goals> <goal>npm</goal> </goals> <phase>${bundle-sass_optimize-phase}</phase> <configuration> <arguments>run sass-transpile -src_folder=${build.javascriptSourceDirectory} -out_folder=${build.javascriptOutputDirectory}</arguments> <skip>${skip.sass-transpile}</skip> </configuration> </execution> <execution> <id>transpile-js-release</id> <goals> <goal>npm</goal> </goals> <phase>${bundle-javascript_transpile_optimize-phase}</phase> <configuration> <arguments>run js-transpile -generate_src_map=true -src_folder=${build.javascriptSourceDirectory} -out_folder=${build.transpiledJavascriptOutputDirectory}</arguments> <skip>${skip.js-transpile}</skip> </configuration> </execution> </executions> </plugin> <plugin> <artifactId>maven-dependency-plugin</artifactId> <executions> <execution> <id>bundle-javascript_unpack-rjs</id> <phase>${bundle-javascript_unpack-rjs-phase}</phase> <goals> <goal>unpack</goal> </goals> <configuration> <artifactItems> <artifactItem> <groupId>org.webjars</groupId> <artifactId>rjs</artifactId> <version>${rjs.version}</version> </artifactItem> </artifactItems> </configuration> </execution> </executions> </plugin> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>build-helper-maven-plugin</artifactId> <executions> <execution> <id>bundle-javascript_add-resource</id> <phase>${bundle-javascript_add-resource-phase}</phase> <goals> <goal>add-resource</goal> </goals> <configuration> <resources> <resource> <directory>${build.javascriptOutputDirectory}</directory> <includes> <include>**/*</include> </includes> </resource> </resources> </configuration> </execution> </executions> </plugin> <plugin> <groupId>com.github.bringking</groupId> <artifactId>requirejs-maven-plugin</artifactId> <executions> <execution> <id>bundle-javascript_optimize</id> <phase>${bundle-javascript_optimize-phase}</phase> <goals> <goal>optimize</goal> </goals> <configuration> <nodeExecutable>${frontend-maven-plugin.installDirectory}/node/node</nodeExecutable> <optimizerFile>${rjs.webjar.file}</optimizerFile> <configFile>${build.javascriptConfigDirectory}/osgi/${requirejs.build.file}</configFile> <optimizerParameters> <parameter>appDir=${optimize-javascript-src-dir}</parameter> <parameter>baseUrl=.</parameter> <parameter>dir=${build.javascriptOutputDirectory}</parameter> <parameter>optimize=uglify2</parameter> <parameter>generateSourceMaps=true</parameter> <parameter>preserveLicenseComments=false</parameter> </optimizerParameters> </configuration> </execution> </executions> </plugin> </plugins> </build> </profile> </profiles> </project>