> Markdown version of [Installing Commercial Vaadin Add-on Licenses](https://vaadin.com/docs/v7/framework/addons/addons-cval). Section index: [llms.txt](https://vaadin.com/docs/v7/framework/llms.txt)

# <a id="addons.cval"></a>Installing Commercial Vaadin Add-on Licenses

The commercial Vaadin add-ons require installing a license key before using them. The license keys are development licenses and checked during widget set compilation, or in Vaadin TestBench when executing tests, so you do not need them when deploying the application.

## <a id="addons.cval.obtaining"></a>Obtaining License Keys

You can purchase add-ons or obtain a free trial key from the Vaadin website. You need to register in the website to obtain a key.

You can get license keys from [vaadin.com/pro/licenses](https://vaadin.com/pro/licenses).

1. Select in the Vaadin website **My Account** **›** **Licenses** or directly Licenses if you are a Pro Tools subscriber.

   [Image: cval pro licenses 5]

2. Click on a license key to obtain the purchased or trial key.

   [Image: cval pro licenses 3]

## <a id="addons.cval.installing"></a>Installing License Key in License File

To install the license key in a development workstation, you can copy and paste it verbatim to a file in your home directory.

License for each product has a separate license file as follows:

- Vaadin Charts

  .vaadin.charts.developer.license

- Vaadin Spreadsheet

  .vaadin.spreadsheet.developer.license

- Vaadin TestBench

  .vaadin.testbench.developer.license

- Vaadin TouchKit

  .vaadin.touchkit.developer.license

For example, in Linux and OS X:

```
$ echo "L1cen5e-c0de" > ~/.vaadin.#<product>#.developer.license
```

## <a id="addons.cval.systemproperty"></a>Passing License Key as System Property

You can also pass the key as a system property to the widget set compiler, usually with a -D option. For example, on the command-line:

```
$ java -Dvaadin.<product>.developer.license=L1cen5e-c0de …​
```

where the `<product>` is the product ID, such as `charts`, `spreadsheet`, `designer`, or `testbench`.

See [the CVAL license key installation instructions](https://vaadin.com/directory/help/installing-cval-license) for more details.

### <a id="addons.cval.systemproperty.environments"></a>Passing License Key in Different Environments

How you actually pass the parameter to the widget set compiler depends on the development environment and the build system that you use to compile the widget set. Below are listed a few typical environments:

- Eclipse IDE

  To install the license key for all projects, select **Window** **›** **Preferences** and navigate to the **Java** **›** **Installed JREs** section. Select the JRE version that you use for the application and click Edit. In the Default VM arguments, give the -D expression as shown above.

- Apache Ant

  If compiling the project with Apache Ant, you could set the key in the Ant script as follows:

  ```
  <sysproperty key="vaadin.<product>.developer.license"
               value="L1cen5e-c0de"/>
  ```

  However, you should never store license keys in a source repository, so if the Ant script is stored in a source repository, you should pass the license key to Ant as a property that you then use in the script for the value argument of the \<sysproperty> as follows:

  ```
  <sysproperty key="vaadin.<product>.developer.license"
      value="${vaadin.<product>.developer.license}"/>
  ```

  When invoking Ant from the command-line, you can pass the property with a -D parameter to Ant.

- Apache Maven

  If building the project with Apache Maven, you can pass the license key with a -D parameter to Maven:

  ```
  $ mvn -Dvaadin.<product>.developer.license=L1cen5e-c0de package
  ```

  where the `<product>` is the product ID, such as `charts`, `spreadsheet`, `designer`, or `testbench`.

- Continuous Integration Systems

  In CIS systems, you can pass the license key to build runners as a system property in the build configuration. However, this only passes it to a runner. As described above, Ant does not pass it to sub-processes implicitly, so you need to forward it explicitly as described earlier.
