> Markdown version of [Maven](https://vaadin.com/docs/v23/configuration/maven). Section index: [llms.txt](https://vaadin.com/docs/v23/configuration/llms.txt)

# Maven Configuration Properties

The Vaadin Maven plugin contains configuration for most configurable properties. These can be set either as [system properties](https://vaadin.com/docs/v23/configuration/properties.md#system-properties) or configuration parameters for the plugin.

## <a id="using-maven-plugin-configuration"></a>Using Maven Plugin Configuration

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

Enabling Node.js auto update

```xml
<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>
```

See the [full list of properties](#properties).

## <a id="properties"></a>Plugin Configuration Options

The following list shows all the 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 to insert the initial User Interface Definition Language (UIDL) object in the bootstrap `index.html`. Defaults to `false`.

- `frontendDirectory`

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

- `generatedFolder`

  The folder where Flow puts generated files that are used by Vite. Defaults to `"${project.build.directory}/frontend"`.

- `generatedTsFolder`

  The folder where Flow puts 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. In environments behind a firewall, the Node.js download can be provided from an intranet mirror. Defaults to `null`, which downloads 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’s older than the default or defined `nodeVersion`. Note: any installed version below `should work` is automatically updated regardless of this flag. Defaults to `false`.

- `npmFolder`

  The folder where the `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`

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

- `useGlobalPnpm`

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

- `productionMode`

  Define whether the application is running in production mode. Defaults to `false`. For production, the frontend is transpiled for older browsers and optimized, as described in [Deploying to Production](https://vaadin.com/docs/v23/production.md).

- `projectBasedir`

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

- `requireHomeNodeExec`

  Whether Vaadin home node executable usage is forced. If it’s 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`.

- `resourceOutputDirectory`

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

- `useDeprecatedV14Bootstrapping`

  Optionally use the legacy V14 bootstrap mode. Defaults to `false`.

- `frontendBundleOutput`

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

- `projectBuildDir`

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

### <a id="build-front-end-goal-parameters"></a>Build Front-End 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 front-end sources. Defaults to `true`.

- `runNpmInstall`

  Whether to run the `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 front-end directory from where resources should be copied to use with Vite. Defaults to `${project.basedir}/src/main/resources/META-INF/resources/frontend`.

- `optimizeBundle`

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

`CD6D2FC7-ED44-442C-B32F-FABA5AF7294F`
