IntelliJ IDEA 2024.3 Help

Gradle projects

IntelliJ IDEA lets you manage Gradle projects. You can link, ignore projects, work with profiles, and synchronize changes in Gradle and IntelliJ IDEA projects. You can also configure a Gradle composite build, Gradle source sets, the build and run actions.

  1. In the Gradle tool window, right-click a linked project.

  2. From the context menu, select Open Gradle config F4.

    IntelliJ IDEA navigates to the appropriate Gradle configuration file and the related build.gradle file opens in the editor.

IntelliJ IDEA supports a navigation to subprojects inside the parent build script of a multi-module Gradle project.

  1. Open build.gradle of the parent project.

  2. Use the Ctrl+Click shortcut to navigate to a subproject.

    Navigate inside the build script

    You can also see the usages of a subprojects with the Alt+F7 and check the results in the Find tool window.

    the Find tool window

Unlink a linked Gradle project

When you unlink a Gradle project, IntelliJ IDEA removes all relevant modules and content roots, removes the Gradle project from the Gradle tool window and stops its synchronization. It might be helpful if you need to fully remove the previously linked Gradle project from the current IntelliJ IDEA project.

  1. In the Gradle tool window, right-click a linked project.

  2. From the context menu, select Unlink Gradle project (Delete). Alternatively, you can select the linked project and click the Remove icon on the tool window's toolbar.

  3. In the Import Gradle Projects popup, clear the checkbox against the modules if you don't want to delete the project from the IntelliJ IDEA Project tool window.

  4. Click OK.

    If you need to link back the project, in the Project tool window, right-click the project's build.gradle file or build.gradle.kts if it is a Kotlin project, and select Import Gradle Project.

Ignore a Gradle project

You can deactivate a Gradle project using the Ignore Gradle Project option. In this case, IntelliJ IDEA keeps the ignored Gradle projects and subprojects in the Gradle tool window, but stops their import (modules, content roots, tasks, and so on) to the project. However, IntelliJ IDEA synchronizes the ignored projects with the current one. It might be helpful if you need to skip an irrelevant subproject such as buildSrc.

  1. In the Gradle tool window, right-click the project that you want to ignore.

  2. From the context menu, select Ignore Gradle Project.

  3. In the window that opens, select projects and modules that you want to deactivate and click OK.

If you want to activate your Gradle projects or modules, select Unignore Gradle Projects from the context menu.

Orphan modules

Orphan modules are the IDE modules that were removed during the import process in the following cases:

  • when you manually deleted the modules in the build.gradle file and then re-imported your project.

  • when you used the Ignore Project action, on a module in the Gradle tool window and then re-imported your project.

In all these cases, IntelliJ IDEA prompts you to restore removed modules.

Orphan modules notification

You can select the ones you want to restore in the Orphan Modules dialog.

Orphan modules dialog

Usually you do not need to restore any modules since these are only the .iml files that contain the IDE modules settings. You only might want to restore them if you have some user-defined settings specified inside them.

Sync a linked Gradle project

When you open a Gradle project the synchronization is done automatically. Also, when IntelliJ IDEA detects any external changes to the build scripts, such as VCS updates or some edits made outside the IDE, the related projects will be reloaded automatically.

If you need, you can manually trigger the synchronization of your project.

  1. In the Gradle tool window, right-click a linked project.

  2. From the context menu, select Sync Gradle Project the Synchronize icon.

    On invoking this action, IntelliJ IDEA parses the project structure in the Gradle tool window.

    IntelliJ IDEA cannot reload only a part of your project, it reloads the whole project including modules and dependencies.

    If you configure a dependency through the Project Structure dialog (Ctrl+Alt+Shift+S), the dependency will only appear in the IntelliJ IDEA Project tool window, not in the Gradle tool window. Note that the next time you re-import your project, IntelliJ IDEA will remove the added dependency since IntelliJ IDEA considers the Gradle configuration as a single source of truth.

  3. Click the Build icon on the status bar to view the results of the sync in the Build tool window.

Configure the auto-reload

  1. In the Settings dialog (Ctrl+Alt+S) , go to Build, Execution, Deployment | Build Tools.

    Alternatively, In the Gradle tool window, click Build Tools Settings and select the Auto-Sync Settings option.

    the Gradle tool window
  2. In the Build tools settings, specify the following options:

    the Build Tools settings
    • Sync project after changes in the build scripts: this option is selected by default. If you want to disable the auto-sync and manually control the synchronization process, unselect this checkbox.

    • Any changes: select this option if you want to automatically synchronize the project after any changes you make to build.gradle or external changes.

      Every time you manually change the Gradle build script in the editor, you need to sync the changes. IntelliJ IDEA displays a notification icon in the right part of the editor suggesting to Sync Gradle Changes made to the project (Ctrl+Shift+O).

      With the Any changes option, IntelliJ IDEA synchronizes all the changes automatically.

    • External changes: when you select this option, IntelliJ IDEA automatically synchronizes the project only after the VCS changes and changes made to the build files outside the IDE.

Configure Gradle Composite Build

Before you start configuring your composite build, make sure you have the Gradle version 4.5 or later configured for your project.

You can use the settings.gradle file to include Gradle builds for your Gradle composite build.

  1. Open the settings.gradle file in the editor.

  2. Using the includeBuild command, specify the location of the builds you want to add as dependencies to your project.

You can also use the Gradle tool window to configure the composite build.

  1. Open a Gradle project.

  2. Link other Gradle projects that you want to use for the composite build.

  3. In the Gradle tool window, right-click your main project and from the context menu select Composite Build Configuration.

  4. In the Gradle Project Build Composite dialog, select projects that you want to include in your Gradle composite build.

  5. Re-import your main Gradle project.

    IntelliJ IDEA finds the included Gradle projects and treats them as IntelliJ IDEA modules.

Use Gradle source sets

IntelliJ IDEA lets you use Gradle source sets in resolving Gradle projects. The source set is treated as a module in an IntelliJ IDEA project. You can declare a custom source set, and IntelliJ IDEA adds it as a module to the project.

When you create a Gradle project, IntelliJ IDEA automatically creates a main Source Sets directory that contains two source sets - main and test. IntelliJ IDEA also displays compile and runtime configurations in the Dependencies node in the Gradle tool window.

Gradle tool window: dependencies

Add a custom source set

  1. Open the gradle.build file in the editor.

  2. Declare a custom source set (In our example, it's api).

    sourceSets { api } dependencies { compile sourceSets.api.output }

    (This source set contains interfaces without implementations. The implementations for the interfaces are in the default main source set.)

  3. Open the Gradle tool window to see that IntelliJ IDEA added the api compile and runtime configurations.

    Gradle tool window: api Source Set

    The test source set contains the appropriate dependencies. Note that the default main source set has the compile dependency on the output of the api source set.

  4. In the main menu, go to File | Project Structure Ctrl+Alt+Shift+S to open the project structure. Notice that all source sets are represented as separate modules that are grouped into a single module. If you click the test module and select the Dependencies tab, you will see a list of dependencies for the source set.

    Project Structure dialog / Dependencies tab

Use source sets for custom tests

You can add custom tests and run them separately from the main ones using a source set feature.

  1. Declare a source set the same way as you would declare the custom source set. Besides the name of your source set, specify an output directory and a task that will run the declared test. For example, declare an integration test integrationTest.

    sourceSets { integrationTest { java { srcDir 'src/integrationtest/java' } resources { srcDir 'src/integrationtest/resources' } compileClasspath += sourceSets.main.runtimeClasspath } } task integrationTest(type: Test) { description = "Runs Integration Tests" testClassesDirs = sourceSets.integrationTest.output.classesDirs classpath += sourceSets.integrationTest.runtimeClasspath }
  2. In the Gradle tool window, click Tasks | other.

  3. In the list that opens, double-click the integrationTest to run it.

    Gradle tool window: tasks

Add package prefixes in the Gradle project

If you use package prefixes in your Gradle project, specify them in the build.gradle file. That way, everything is saved when you reimport your project.

For more information, refer to https://github.com/JetBrains/gradle-idea-ext-plugin.

  1. Open the build.gradle file.

  2. Add the following plugin to support package prefixes:

    plugins { id "org.jetbrains.gradle.plugin.idea-ext" version "0.5" }
  3. Add the package prefixes. For example, you have the following set of source sets:

    sourceSets { main.java.srcDirs = [] main.java.srcDirs += "src" main.java.srcDirs += "src/main/java" main.java.srcDirs += "../other-root/src/main/java" }

    Add the package prefixes (in our case it is "org.example") to them with the following code:

    idea { module { settings { packagePrefix["src"] = "org.example" packagePrefix["src/main/java"] = "org.example" packagePrefix["../other-root/src/main/java"] = "org.example" } } }
  4. Reimport your changes or use the auto-import.

Specify IDE-specific settings in the build.gradle file

Using the gradle-idea-ext plugin, you can describe project settings such as project encodings, and the encoding for properties files inside the build.gradle file.

  1. Open the build.gradle file.

  2. Add the following plugin to support the encodings configuration:

    plugins { id "org.jetbrains.gradle.plugin.idea-ext" version "0.5" }
  3. Describe the project encodings with the following code:

    import org.jetbrains.gradle.ext.EncodingConfiguration.BomPolicy idea { project { settings { encodings { encoding = 'windows-1251' bomPolicy = BomPolicy.WITH_NO_BOM properties { encoding = '<System Default>' transparentNativeToAsciiConversion = false } mapping['../sample-gradle-free/module'] = 'windows-1251' mapping['module'] = 'windows-1251' mapping['module2/src/main/java'] = 'windows-1251' } } } }
  4. Reimport your changes or use the auto-import.

Use buildSrc

If you have a large Gradle script that includes several Java, Groovy, or Kotlin classes, you can move such classes to the buildSrc directory and refer to them from your main Gradle script. In this case you ensure the readability of the build.gradle file.

  1. If you don't have and existing buildSrc, add it as a Gradle module to your main project.

    Project tool window: buildSrc module
  2. Open your main build.gradle file in the editor and move the classes you need to the main subdirectory of the buildSrc directory.

    Project tool window: buildSrc
  3. Run your task from your project's build.gradle file.

    gradle_main_build_file.png

Configure the build and run actions

By default, IntelliJ IDEA uses Gradle for building and running projects.

When you build a project (Build | Build Project), IntelliJ IDEA invokes the corresponding tasks using Gradle. Gradle also executes the Run and Debug actions from the Run menu. HotSwap is also gets triggered and the classes are reloaded during a debugging process.

If you have linked projects, you can configure how to build each linked project.

  1. In the Settings dialog (Ctrl+Alt+S) , go to Build, Execution, Deployment | Gradle.

  2. On the Gradle settings page, in the Gradle Projects section, select a Gradle project you need.

  3. In the Build and run using list, select the appropriate option and click OK to save the changes.

If you want to use IntelliJ IDEA for building a Gradle project, you need to explicitly specify so.

Delegate a build to IntelliJ IDEA

It might be helpful to use IntelliJ IDEA for building a pure Java or Kotlin project. It could speed up the building process since IntelliJ IDEA supports the incremental build. Yet, keep in mind that the IntelliJ IDEA compiler does not support some parts of the Gradle project build processing and might cause problems in building your project correctly.

  1. Click Gradle settings in the Gradle tool window.

    Alternatively, in the Settings dialog (Ctrl+Alt+S) , go to Build, Execution, Deployment |Build Tools |Gradle.

  2. On the Gradle page, from the Build and run using list, select Intellij IDEA.

    the Gradle settings

    Note that the Run test using option stays active, and you can select how you want to run your tests even if you delegated all build and run actions to IntelliJ IDEA.

  3. Click OK.

Now if you build your Gradle project, it will be built with IntelliJ IDEA.

Last modified: 25 November 2024