This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
Azure Toolkits for Java — IDE plugins for IntelliJ IDEA and Eclipse that help Java developers create, develop, configure, test, and deploy applications to Azure. The primary focus of active development is the IntelliJ plugin.
- Java 17 (required for IntelliJ plugin; set
JAVA_HOMEaccordingly) - The shared toolkit libraries from azure-maven-plugins must be installed to local Maven repo first
# Clone and build azure-toolkit-libs into local Maven repo
git clone https://github.com/microsoft/azure-maven-plugins.git
cd azure-maven-plugins/azure-toolkit-libs
mvn clean install -B -T 4 -Dmaven.test.skip=true# From repo root — builds the IDE-specific wrapper libraries
mvn clean install -f Utils/pom.xml
# Or via the root Gradle task:
./gradlew buildUtils -x buildToolkitsLibcd PluginsAndFeatures/azure-toolkit-for-intellij
./gradlew clean buildPlugin -sOutput ZIP: PluginsAndFeatures/azure-toolkit-for-intellij/build/distributions/
mvn clean install -f Utils/pom.xml
mvn clean install -f PluginsAndFeatures/AddLibrary/AzureLibraries/pom.xml
mvn clean install -f PluginsAndFeatures/azure-toolkit-for-eclipse/pom.xml./gradlew buildAllOpen PluginsAndFeatures/azure-toolkit-for-intellij in IntelliJ and use the Gradle runIde task. Remote debug port: 5005.
# IntelliJ plugin tests (run from the IntelliJ plugin dir)
cd PluginsAndFeatures/azure-toolkit-for-intellij
./gradlew test
# Utils tests (Maven)
mvn test -f Utils/pom.xml
# Skip tests during build
./gradlew buildAll -PskipTest=true
# Or for Maven modules:
mvn install -f Utils/pom.xml -Dmaven.test.skip=trueCheckstyle runs by default on Maven builds. Skip with:
mvn install -f Utils/pom.xml -Dcheckstyle.skip=trueIntelliJ plugin checkstyle config: PluginsAndFeatures/azure-toolkit-for-intellij/config/checkstyle/checkstyle.xml
-
azure-toolkit-libs (external repo:
azure-maven-plugins) — Core SDK wrappers for Azure services. IDE-agnostic. Must bemvn installed to local repo before building this project. -
Utils/ (this repo, Maven) — IDE-specific wrapper libraries (
azure-toolkit-ide-libsandazure-toolkit-ide-hdinsight-libs). Each Azure service has a correspondingazure-toolkit-ide-*-libmodule (e.g.,azure-toolkit-ide-appservice-lib,azure-toolkit-ide-cosmos-lib). Built with Maven and published to local repo for the Gradle IntelliJ build to consume. -
PluginsAndFeatures/ (this repo) — IDE plugin implementations:
azure-toolkit-for-intellij/— IntelliJ plugin (Gradle + Kotlin DSL, ~40 submodules)azure-toolkit-for-eclipse/— Eclipse plugin (Maven/Tycho)
The IntelliJ plugin is a single composite plugin built from ~40 Gradle submodules, each declared in settings.gradle.kts. Key module categories:
azure-intellij-plugin-lib— Core IntelliJ integration: UI components (AzureComboBox, AzureDialog, Tree), action framework, auth, messager, task manager, telemetry. This is the foundation module.azure-intellij-plugin-lib-java— Java-specific IntelliJ utilities (run configs, artifact handling).azure-intellij-plugin-base— Plugin entry point (AzurePluginasStartupActivity), lifecycle management.azure-intellij-plugin-service-explorer— Azure Explorer tool window.azure-intellij-resource-connector-lib— Resource connection framework (connecting Azure resources to project modules).- Service modules — One per Azure service (e.g.,
azure-intellij-plugin-appservice,azure-intellij-plugin-cosmos,azure-intellij-plugin-database,azure-intellij-plugin-storage, etc.) -javasuffix modules — Java-language-specific features for that service (e.g.,azure-intellij-plugin-appservice-java,azure-intellij-plugin-database-java).
The plugin uses an IntelliJ extension point com.microsoft.tooling.msservices.intellij.azure.actions with the IActionsContributor interface. Each service module registers its own ActionsContributor implementation via its META-INF/*.xml descriptor. These are composed into the main plugin.xml using xi:include.
To add a new service module:
- Create the module directory under
PluginsAndFeatures/azure-toolkit-for-intellij/ - Add it to
settings.gradle.kts - Add an
implementation(project(":module-name"))dependency in the rootbuild.gradle.kts - Create a
META-INF/<module-name>.xmldescriptor - Include it in
src/main/resources/META-INF/plugin.xmlviaxi:include
- Root Gradle (
build.gradleat repo root) — Orchestrates cross-project builds. Uses Groovy DSL with Gradle 8.8. - IntelliJ Gradle (
PluginsAndFeatures/azure-toolkit-for-intellij/build.gradle.kts) — Uses Kotlin DSL with IntelliJ Platform Gradle Plugin 2.3.0. Targets IntelliJ IDEA Ultimate for compilation. Version catalog atgradle/libs.versions.toml. - Maven (
Utils/pom.xml) — Builds the IDE wrapper libraries. Uses AspectJ for cross-cutting concerns (viaazure-toolkit-common-lib). - AspectJ weaving is used at both Maven (aspectj-maven-plugin) and Gradle (io.freefair.aspectj.post-compile-weaving) levels.
- Java 17 source/target for all modules.
- Lombok is used project-wide (
@Data,@Builder, etc.). - All Java source files require the MIT license header (enforced by checkstyle).
- LF line endings required (no CRLF).
- No tabs — spaces only.
- TODOs must be named:
TODO (name): description. - Base package:
com.microsoft.azure.toolkit.intellijfor IntelliJ modules,com.microsoft.azure.toolkit.libfor library modules.