Maven Configuration Properties

The Vaadin Maven plugin contains configuration for most configuration 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>
    <groupId>com.vaadin</groupId>
    <artifactId>vaadin-maven-plugin</artifactId>
    <version>${vaadin.version}</version>
    <executions>
        <execution>
            <goals>
                <goal>prepare-frontend</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <nodeAutoUpdate>true</nodeAutoUpdate>
    </configuration>
</plugin>

Plugin Configuration Options

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

applicationProperties

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

eagerServerLoad

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

frontendDirectory

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

generatedFolder

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

generatedTsFolder

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

javaSourceFolder

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

javaResourceFolder

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

nodeDownloadRoot

URL to use for downloading Node.js from. 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 https://nodejs.org/dist/.

nodeVersion

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.

nodeAutoUpdate

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.

npmFolder

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

openApiJsonFile

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

pnpmEnable

Instructs to use pnpm for installing npm frontend resources. Defaults to true.

useGlobalPnpm

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

productionMode

Define if application is running in productionMode. Defaults to false. For production, the frontend is transpiled for older browsers and optimized, as described in Deploying to Production.

projectBasedir

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

requireHomeNodeExec

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

resourceOutputDirectory

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

useDeprecatedV14Bootstrapping

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

webpackOutputDirectory

The folder where webpack should output index.js and other generated files. Defaults to ${project.build.outputDirectory}/META-IND/VAADIN/webapp/.

projectBuildDir

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

Build Frontend Goal Parameters

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

generateBundle

Whether to generate a bundle from the project frontend sources or not. Defaults to true.

runNpmInstall

Whether to run npm install task after updating dependencies. This doesn’t necessarily execute npm install if everything seems to be up to date. Defaults to true.

generateEmbeddableWebComponents

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

frontendResourcesDirectory

Defines the project frontend directory from where resources should be copied from for using with webpack. Defaults to ${project.basedir}/src/main/resources/META-INF/resources/frontend.

optimizeBundle

Whether to use byte code scanner strategy to discover frontend components. Defaults to true.

webpackTemplate

Copy the webpack.config.js from the specified URL if missing. Default is the template provided by this plugin. Set it to empty string to disable the feature. Defaults to webpack.config.js.

webpackGeneratedTemplate

Copy the webpack.generated.js from the specified URL. Default is the template provided by this plugin. Set it to empty string to disable the feature. Defaults to webpack.generated.js.