To run Open Liberty in dev mode, enable the Liberty Maven plug-in or the Liberty Gradle plug-in and run one of the following commands:
Maven: mvn liberty:dev
Gradle: gradle libertyDev
Detect, recompile, and deploy code changes
Dev mode can automatically detect, recompile, and deploy code changes whenever you save a new change in your IDE or text editor. Dev mode automatically detects the following changes to your application source:
Java source file and test file changes
Resource file changes
Configuration directory and configuration file changes
New dependency additions to your
pom.xml
file for Maven users orbuild.gradle
file for Gradle usersNew feature additions in the Open Liberty server configuration
Resource file, configuration file, and configuration directory changes are copied into your target directory. New dependencies in your pom.xml
file or build.gradle
file are added to your class path.
When you turn on automatic feature generation, Liberty features that your application requires are automatically generated in your server configuration. New features, whether added manually or generated, are installed and enabled automatically. Automatic feature generation is turned off by default.
Some changes, such as adding certain configuration directories or files, do not take effect until you restart dev mode. To enable these changes, restart dev mode when prompted. To restart, first exit dev mode by pressing CTRL+C
, or by typing q
and pressing Enter
. Then, run the mvn liberty:dev
command or the gradle libertyDev
command to restart. After the server restarts, the changes are detected, recompiled, and picked up by the running server.
You can configure how dev mode handles changes to your code by specifying parameters when you start dev mode. After you start dev mode, you can also view a help menu of dev mode console actions by typing h
and pressing Enter
. For more information about configuration parameters and console actions, see the dev goal of the Liberty Maven plug-in or the libertyDev task of the Liberty Gradle plug-in.
Automatically generate Liberty features in your server configuration
When you turn on automatic feature generation, dev mode detects the Liberty features that your application requires based on API usage and generates a feature list in a new server configuration file. The file is named generated-features.xml
and is created in the src/main/liberty/config/configDropins/overrides
directory. Java source file changes, server configuration changes, and build file changes might result in new Liberty features being generated. Generated features are installed and enabled automatically.
Automatic feature generation is turned off by default. When dev mode is running, you can toggle the automatic generation of features on and off by typing g
and pressing Enter
.
Alternatively, when you start dev mode from the command line, you can set the generateFeatures
parameter to true
. This setting, as shown in the following examples, enables automatic feature generation from dev mode startup.
Maven: mvn liberty:dev -DgenerateFeatures=true
Gradle: gradle libertyDev --generateFeatures=true
When automatic feature generation is turned on, dev mode has a runtime dependency on IBM WebSphere Application Server Migration Toolkit for Application Binaries, which is separately licensed under IBM License Agreement for Non-Warranted Programs. For more information, see the IBM License Agreement.
You do not need to purchase a license or install IBM WebSphere Application Server Migration Toolkit for Application Binaries to use automatic feature generation.
Run unit and integration tests on demand
You can run unit and integration tests on demand by pressing Enter
in the command window where dev mode is running. Dev mode runs the unit tests and integration tests that are configured for your project. If you add a test to your project, dev mode compiles and includes it the next time that you run tests.
You can get immediate feedback on your changes by configuring dev mode to run hot tests. Hot tests are unit or integration tests that run automatically whenever you start dev mode or make a code change. To configure hot testing, specify the hot test parameter when you start dev mode, as shown in the following examples:
Maven: mvn liberty:dev -DhotTests
Gradle: gradle libertyDev --hotTests
You can also add parameters to specify whether to skip tests. For Maven, you can add parameters to skip unit tests, skip integration tests, or skip all tests. For Gradle, you can add a parameter to skip all tests. For more information about configuration parameters, see the dev goal of the Liberty Maven plug-in or the libertyDev task of the Liberty Gradle plug-in.
Attach a debugger to the running server
You can attach a debugger to the running server to step through your code at any time. You can specify breakpoints in your source code to locally debug different parts of your application. The default port for debugging is 7777
. If the default port is not available, dev mode selects a random port to use as the port for debugging.