| Compatible Runners |
Works with any runner |
|---|---|
| Linters |
N/A |
| Commands |
N/A |
Table of Contents
Description
This preset allows you to use crafty within a Maven build (with
frontend-maven-plugin). This will discover you pom.xml and get the right
folder in target for you.
You can use it either with Webjars or Webapps.
Installation
npm install @swissquote/crafty-preset-maven --save
module.exports = {
presets: ["@swissquote/crafty-preset-maven"],
mavenType: "webapp", // or "webjar"
};
Usage
The destination directory is calculated using crafty-preset-maven and the
mavenType option.
You can set the destination path manually but it’s recommended to change the
mavenType of your bundle to either webapp or webjar instead.
This is the default for each:
-
webapp:${project.build.directory}/${project.build.finalName}/resources -
webjar:${project.build.outputDirectory}/META-INF/resources/webjars
This preset’s role is to replace config.destination which is used to create
the destination for each bundleType (destination_js, destination_css …)
Example
If we take the following configuration:
module.exports = {
presets: [
"@swissquote/preset-maven",
"@swissquote/crafty-preset-babel",
"@swissquote/crafty-runner-webpack"
],
mavenType: "webjar",
js: {
library: {
source: 'js/index.js',
}
}
}
The path of the final file will be :
↓ "js" or "css" is added depending on bundle type
<maven_root>/target/classes/META-INF/resources/webjars/js/library.min.js
↑ Default path for webjars ↑ Inferred from the bundle name
Override destination with an environment variable
If your build is running from within Maven, it’s pointless to re-calculate the
destination path, you can pass it using the TARGET_BASEDIR environment
variable.
This is how to do it in frontend-maven-plugin
<plugin>
<artifactId>frontend-maven-plugin</artifactId>
...
<configuration>
...
<environmentVariables>
...
<!-- This values is for webapps -->
<TARGET_BASEDIR>${project.build.directory}/${project.build.finalName}</TARGET_BASEDIR>
<!-- This value is for webjars -->
<TARGET_BASEDIR>${project.build.outputDirectory}</TARGET_BASEDIR>
</environmentVariables>
</configuration>
...
</plugin>
Options
| Option | Type | Optional ? | Description |
|---|---|---|---|
mavenType |
String | No | Must be "webjar" or "webapp" decides where to put the files. |