Documentation versions (currently viewingVaadin 23)
Check out the new styling guides

Maven Configuration Properties

All the ways how to configure the Vaadin Maven plugin.

The Vaadin Maven plugin contains configuration for most configurable properties. These can be set either as system properties or configuration parameters for the plugin.

Using Maven Plugin Configuration

The best way to set persistent configuration properties for a Maven project is to set them in the plugin.


Plugin Configuration Options

The following list shows all the configuration options and their default values:


Location of the file in a Spring project. Defaults to ${project.basedir}/src/main/resources/


Whether or not to insert the initial UIDL object in the bootstrap index.html. Defaults to false.


The directory with the project’s front-end source files. Defaults to "${project.basedir}/frontend".


The folder where Flow will put generated files that will be used by Vite. Defaults to "${}/frontend".


The folder where Flow will put TypeScript API files for client projects. Defaults to "${project.basedir}/frontend/generated".


Java source folders for scanning. Defaults to "${project.basedir}/src/main/java".


Java resource folder. Defaults to "${project.basedir}/src/main/resources".


URL to use for downloading Node.js. In environments behind a firewall, the Node.js download can be provided from an intranet mirror. Defaults to null, which will download Node.js from


The Node.js version to be used when Node.js is installed automatically. Should be in the format "v16.0.0". Defaults to FrontendTools.DEFAULT_NODE_VERSION.


Flag to enable automatic update of the Node.js version installed in ~/.vaadin if it is older than the default or defined nodeVersion. Note: any installed version below should work (at the moment, 8.9) will be automatically updated regardless of this flag. Defaults to false.


The folder where the package.json file is located. Defaults to ${project.basedir}.


Default generated path of the OpenAPI JSON. Defaults to ${}/generated-resources/openapi.json.


Specifies to use pnpm to install npm front-end resources. Defaults to true.


Specifies to use the globally installed pnpm tool or the default supported pnpm version. Defaults to false.


Define whether the application is running in production mode. Defaults to false. For production, the front end is transpiled for older browsers and optimized, as described in Deploying to Production.


The folder where the package.json file is located. Defaults to ${project.basedir}.


Whether Vaadin home node executable usage is forced. If it is set to true, the Vaadin home 'node' is checked, and installed if absent. This is then used instead of a globally or locally installed 'node'. Defaults to false.


Defines the output directory for generated non-served resources, such as the token file. Defaults to ${}/vaadin-generated.


Whether or not we are running in legacy V14 bootstrap mode. Defaults to false.


The folder where Vite (the default frontend build tool) should output index.js and other generated files. Defaults to ${}/META-INF/VAADIN/webapp/.


Build directory for the project. Defaults to ${}.

Build Front-End Goal Parameters

The following parameters are used with the build-frontend goal, in addition to the parameters described above.


Whether or not to generate a bundle from the project front-end sources. Defaults to true.


Whether to run the npm install task after updating dependencies. This does not necessarily execute npm install if everything seems to be up to date. Defaults to true.


Whether to generate embeddable web components from WebComponentExporter inheritors. Defaults to true.


Defines the project front-end directory from where resources should be copied to use with Vite. Defaults to ${project.basedir}/src/main/resources/META-INF/resources/frontend.


Whether to use a byte code scanner strategy to discover front-end components. Defaults to true.