frontend
frontend
This plugin downloads/installs Node and NPM locally for your project, runs npm
install
If you prefer Yarn over NPM for your node package fetching, this plugin can also
download Node and Yarn and then run yarn install for your project.
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
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.
Notice: This plugin does not support already installed Node or npm
versions. Use the exec-maven-plugin instead.
Requirements
Installation
<plugin>
...
<executions>
<execution>
<!-- optional: you don't really need execution ids, but it looks
nice in your build log. -->
<goals>
<goal>install-node-and-npm</goal>
</goals>
<phase>generate-resources</phase>
</execution>
</executions>
<configuration>
<nodeVersion>v4.6.0</nodeVersion>
<!-- optional: with node version greater than 4.0.0 will use npm
provided by node distribution -->
<npmVersion>2.15.9</npmVersion>
<downloadRoot>http://myproxy.example.org/nodejs/</downloadRoot
>
</configuration>
</plugin>
npm Registry
Introduction
The command line tool npm is a package management solution for Javascript-
based development. It is used to create and use node packaged modules
and is built into the Javascript platform Node.js.
Notice: Remember to gitignore the node folder, unless you actually want to
commit it.
Running npm
All node packaged modules will be installed in the node_modules folder in
your working directory. By default, colors will be shown in the log.
<execution>
<id>npm install</id>
<goals>
<goal>npm</goal>
</goals>
<configuration>
<!-- optional: The default argument is actually
"install", so unless you need to run some other npm command,
you can remove this whole <configuration> section.
-->
<arguments>install</arguments>
</configuration>
</execution>
Notice: Remember to gitignore the node_modules folder, unless you actually
want to commit it.
Npm packages will always be installed in node_modules next to
your package.json, which is default npm behavior.
Optional Configuration
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:
<plugin>
<groupId>com.github.eirslett</groupId>
<artifactId>frontend-maven-plugin</artifactId>
<configuration>
<workingDirectory>src/main/frontend</workingDirectory>
</configuration>
</plugin>
Installation Directory
The installation directory is the folder where your node and npm are
installed. You can set this property on the different goals. Or choose to set it
for all the goals, in the maven configuration.
<plugin>
<groupId>com.github.eirslett</groupId>
<artifactId>frontend-maven-plugin</artifactId>
<configuration>
<installDirectory>target</installDirectory>
</configuration>
</plugin>
Proxy settings
If you have configured proxy settings for Maven 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.
Non Proxy Hosts: npm does not currently support non proxy hosts - if you
are using a proxy and npm install 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:
<configuration>
<npmInheritsProxyConfigFromMaven>false</npmInheritsProxyConfigFromM
aven>
</configuration>
Environment variables
If you need to pass some variable to Node, you can set that using the
property environmentVariables in configuration tag of an execution like this:
<configuration>
<environmentVariables>
<!-- Simple var -->
<Jon>Snow</Jon>
<Tyrion>Lannister</Tyrion>
Ignoring Failure
Skipping Execution
Each frontend build tool and package manager allows skipping execution.
This is useful for projects that contain multiple builds (such as a module
containing Java and frontend code).
Note that if the package manager (npm or yarn) is skipped, other build tools
will also need to be skipped because they would not have been downloaded.
For example, in a project using npm and gulp, if npm is skipped, gulp must
also be skipped or the build will fail.
npm -Dskip.npm
yarn -Dskip.yarn
bower -Dskip.bower
grunt -Dskip.grunt
gulp -Dskip.gulp
jspm -Dskip.jspm
karma -Dskip.karma
webpack -Dskip.webpack
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
https://docs.npmjs.com/cli/v8/commands
https://maven.apache.org/guides/mini/guide-proxies.html
https://maven.apache.org/guides/mini/guide-configuring-maven.html
https://github.com/FraktonDevelopers/spring-boot-angular-maven-build
https://www.baeldung.com/spring-boot-angular-web
https://frakton.com/utilizing-maven-front-end-plugin-for-angular-spring-boot/
https://www.javacodegeeks.com/2018/03/4-ways-to-deploy-spring-boot-
angular-app-maven-tomcat.html
https://www.javacodegeeks.com/2018/03/4-ways-to-deploy-spring-boot-
angular-app-maven-tomcat.html
https://www.bezkoder.com/pagination-spring-boot-angular-12/
https://www.google.com/search?
q=spring+boot+angular+integration+maven&oq=spring+boot+Angular+int
egartion&aqs=chrome.2.69i57j0i13j0i22i30l3j0i8i13i30l2j69i60.5813j0j7&so
urceid=chrome&ie=UTF-8