# frontend-maven-plugin **Repository Path**: mirrors_andyglick/frontend-maven-plugin ## Basic Information - **Project Name**: frontend-maven-plugin - **Description**: "Maven-node-grunt-gulp-npm-node-plugin to end all maven-node-grunt-gulp-npm-plugins." A Maven plugin that downloads/installs Node and NPM locally, runs NPM install, Grunt, Gulp and/or Karma. - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-09-24 - **Last Updated**: 2026-02-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README OS X Build: (Travis CI) [![Build Status](https://travis-ci.org/eirslett/frontend-maven-plugin.png?branch=master)](https://travis-ci.org/eirslett/frontend-maven-plugin) Windows Build: (Appveyor) [![Build status](https://ci.appveyor.com/api/projects/status/vxbccc1t9ceadhi9)](https://ci.appveyor.com/project/eirslett/frontend-maven-plugin) Linux Build: (CloudBees) [![Build status](https://eirslett.ci.cloudbees.com/buildStatus/icon?job=Frontend%20maven%20plugin)](https://eirslett.ci.cloudbees.com/job/Frontend%20maven%20plugin/) # Frontend maven plugin This plugin downloads/installs Node and NPM locally for your project, runs NPM install, and then any combination of [Bower](http://bower.io/), [Grunt](http://gruntjs.com/), [Gulp](http://gulpjs.com/), [Jspm](http://jspm.io), [Karma](http://karma-runner.github.io/), or [Webpack](http://webpack.github.io/). It's supposed to work on Windows, OS X and Linux. #### What is this plugin meant to do? - Let you keep your frontend and backend builds as separate as possible, by reducing the amount of interaction between them to the bare minimum; using only 1 plugin. - Let you use Node.js and its libraries in your build process without installing Node/NPM globally for your build system - Let you ensure that the version of Node and NPM being run is the same in every build environment #### What is this plugin not meant to do? - Not meant to replace the developer version of Node - frontend developers will still install Node on their laptops, but backend developers can run a clean build without even installing Node on their computer. - Not meant to install Node for production uses. The Node usage is intended as part of a frontend build, running common javascript tasks such as minification, obfuscation, compression, packaging, testing etc. ## Show me an example! [Here is an example for you!](https://github.com/eirslett/frontend-maven-plugin/tree/master/frontend-maven-plugin/src/it/example%20project) # Installing Include the plugin as a dependency in your Maven project. ## Maven 3 ```xml com.github.eirslett frontend-maven-plugin 1.0 ... ... ``` For *Maven 2* support take a look at the [wiki](https://github.com/eirslett/frontend-maven-plugin/wiki#maven-2). # Usage Have a look at the example project, to see how it should be set up! https://github.com/eirslett/frontend-maven-plugin/blob/master/frontend-maven-plugin/src/it/example%20project/pom.xml ### Working directory The working directory is where you've put `package.json` and your frontend configuration files (`Gruntfile.js` or `gulpfile.js` etc). The default working directory is your project's base directory (the same directory as your `pom.xml`). You can change the working directory if you want: ```xml com.github.eirslett frontend-maven-plugin ... src/main/frontend ... ``` ### Installation Directory The installation directory is the folder where your dependencies are installed e.g. node.exe. You can set this property on the different goals. ```xml npm install npm install target ``` Or choose to set it for all the goals, in the maven configuration. ```xml com.github.eirslett frontend-maven-plugin 0.0.27 target ``` ### Installing node and npm The versions of Node and npm are downloaded from https://nodejs.org/dist, extracted and put into a `node` folder created in your working directory. (Remember to gitignore the `node` folder, unless you actually want to commit it) Node/npm will only be "installed" locally to your project. It will not be installed globally on the whole system (and it will not interfere with any Node/npm installations already present.) ```xml ... install node and npm install-node-and-npm generate-resources v0.10.18 1.3.8 http://myproxy.example.org/nodejs/dist/ target ``` You can also specify separate download roots for npm and node as they are now stored in separate repos. ```xml ... ... v0.12.1 2.7.1 https://nodejs.org/nodejs/dist/ https://registry.npmjs.org/npm/-/ ``` ### Proxy settings If you have [configured proxy settings for Maven](http://maven.apache.org/guides/mini/guide-proxies.html) in your settings.xml file, the plugin will automatically use the proxy for downloading node and npm, as well as [passing the proxy to npm commands](https://docs.npmjs.com/misc/config#proxy). __Non Proxy Hosts:__ npm does not currently support non proxy hosts - if you are using a proxy and npm install is is not downloading from your repository, it may be because it cannot be accessed through your proxy. If that is the case, you can stop the npm execution from inheriting the Maven proxy settings like this: ```xml npm install npm false ``` ### Running npm All npm modules will be installed in the `node_modules` folder in your working directory. By default, colors will be shown in the log. ```xml npm install npm generate-resources install ``` ### Running bower All bower dependencies will be installed in the `bower_components` folder in your working directory. ```xml bower install bower install ``` ### Running jspm All jspm dependencies will be installed in the `jspm_packages` folder in your working directory. ```xml jspm install jspm install ``` ### Running Grunt It will run Grunt according to the `Gruntfile.js` in your working directory. By default, colors will be shown in the log. ```xml grunt build grunt generate-resources build ``` ### Running gulp Very similar to the Grunt execution. It will run gulp according to the `gulpfile.js` in your working directory. By default, colors will be shown in the log. ```xml gulp build gulp generate-resources build ``` ### Running Karma ```xml javascript tests karma test src/test/javascript/karma.conf.ci.js ``` __Skipping tests:__ If you run maven with the `-DskipTests` flag, karma tests will be skipped. __Ignoring failed tests:__ If you want to ignore test failures run maven with the `-Dmaven.test.failure.ignore` flag, karma test results will not stop the build but test results will remain in test output files. Suitable for continuous integration tool builds. __Why karma.conf.ci.js?__ When using Karma, you should have two separate configurations: `karma.conf.js` and `karma.conf.ci.js`. (The second one should inherit configuration from the first one, and override some options. The example project shows you how to set it up.) The idea is that you use `karma.conf.js` while developing (using watch/livereload etc.), and `karma.conf.ci.js` when building - for example, when building, it should only run karma once, it should generate xml reports, it should run only in PhantomJS, and/or it should generate code coverage reports. __Running Karma through Grunt or gulp:__ You may choose to run Karma [directly through Grunt](https://github.com/karma-runner/grunt-karma) or [through gulp](https://github.com/karma-runner/gulp-karma) instead, as part of the `grunt` or `gulp` execution. That will help to separate your frontend and backend builds even more. ### Running Webpack ```xml webpack build webpack generate-resources -p ``` # Eclipse M2E support This plugin contains support for M2E, including lifecycle mappings and support for incremental builds in Eclipse. The `install-node-and-npm` goal will only run on a full project build. The other goals support incremental builds to avoid doing unnecessary work. During an incremental build the `npm` goal will only run if the `package.json` file has been changed. The `grunt` and `gulp` goals have new `srcdir` and `triggerfiles` optional configuration options; if these are set they check for changes in your source files before being run. See the wiki for more information. # Helper scripts During development, it's convenient to have the "npm", "bower", "grunt", "gulp" and "karma" commands available on the command line. If you want that, use [those helper scripts](https://github.com/eirslett/frontend-maven-plugin/tree/master/frontend-maven-plugin/src/it/example%20project/helper-scripts)! ## To build this project: `mvn clean install` ## Issues, Contributing Please post any issues on the Github's Issue tracker. Pull requests are welcome! ### License Apache 2.0