Node.js package that wraps Apache Maven.
npm install maven
const mvn = require('maven').create({
cwd: '/path/to/your/maven-project'
});
mvn.execute(['clean', 'install'], { 'skipTests': true }).then(() => {
// As mvn.execute(..) returns a promise, you can use this block to continue
// your stuff, once the execution of the command has been finished successfully.
});
Creating a Maven wrapper instance is pretty much straight forward:
const mvn = require('maven').create(options);
The following options can be passed to the create
method:
This parameter can be used to define the working directory when invoking the Maven command line.
Can be used to pass a specific POM file to the Maven command line. If nothing is specified, the Maven process itself will look for a file called pom.xml
in the base directory.
An array that can be used to enable or disable profiles.
You can either explicitly enable a profile by adding it's name or disable a
profile by pre-pending !
to it's name.
Will be passed to Java/Maven as -PprofileEnabled,!profileDisabled
parameter.
Can be used to override the default settings file when invoking Maven.
If nothing is specified, the Maven process itself will load .m2/settings.xml
in the user's home directory.
Quiet output - only show errors if set to true
.
Produce execution debug output if set to true
.
Forces a check for missing releases and updated snapshots on
remote repositories if set to true
.
Produce execution offline if set to true
.
Thread count, for instance 2.0C where C is core multiplied
Executing Maven commands is simple, too:
mvn.execute(commands, defines);
commands
is just a list of lifecycle phases and/or goals, e.g. 'compile'
, [ 'clean', 'install' ]
or [ 'release:prepare', 'release:perform' ]
.
defines
is an object that represents the various definitions that will be passed to Java/Maven via -Dkey=value
parameters.