8.3 KiB
Raw Blame History

title
IntelliJ Platform Artifacts Repositories

JetBrains maintains public repositories that host artifacts related to the IntelliJ Platform, such as binaries and source code. These repositories make artifacts more accessible for plugin developers.

The IntelliJ Platform artifacts repositories are:

Both the Releases and Snapshots repositories have two types of content:

  • Binary and source code artifacts for cross-platform, ZIP distributions of IntelliJ Platform-based IDEs, such as IntelliJ IDEA, CLion, Rider, and MPS. These artifacts are not intended to be accessed directly from a plugin project's build.gradle file. The gradle-intellij-plugin will access them as-needed for a plugin project.
  • Artifacts for individual modules from the IntelliJ Platform. These may be downloaded, or accessed directly from a build.gradle file, as explained below.

Artifacts for IntelliJ Platform third-party dependencies are hosted at the Bintray repository. A link to this repository should be added to pom.xml/build.gradle files when individual modules from an IntelliJ Platform artifacts repository are used.

Using IntelliJ Platform Module Artifacts

IntelliJ Platform module artifacts are utilized by adding information to a project's build.gradle file. More information about Gradle support is available in the IntelliJ IDEA Help documentation.

To setup dependencies on a module there are two types of information needed:

  1. Specify the corresponding repository URL for the artifact.
  2. Specify the Maven coordinates for the artifact.

Specify the Repository URL

The URL for the desired artifact needs to be added to a Maven or Gradle script:

  • For release or EAP versions, use https://www.jetbrains.com/intellij-repository/releases
  • For EAP candidate snapshots, use https://www.jetbrains.com/intellij-repository/snapshots
  • For dependencies on individual modules from the IntelliJ Platform, also use https://jetbrains.bintray.com/intellij-third-party-dependencies

Specify the Maven Coordinates for the Artifact

Describing a desired IntelliJ Platform module artifact is done with Maven coordinates: groupId, artifactId, and version. The Maven coordinates are based on the names of modules.

The groupId for a module is the prefix com.jetbrains. concatenated with the first two parts of the module name.
For example, the module intellij.xml would have the groupId com.jetbrains.intellij.xml.

The artifactId is the second..n parts of the module name separated by "-" characters. For example, the module intellij.xml would have the artifactId xml. There are some special cases to artifactId names. If the second part of the module name is a common group like platform, vcs, or cloud, the second part of the module name is dropped, and the artifactId becomes the third..n parts of the module name, separated by "-" characters. Portions of the module name expressed in camelCase format are divided and used in the artifactId as (all lower case) camel-case.

The table below shows some module names and their corresponding groupId and artifactId.

Module Name groupId artifactId Module Name Length, Comments About artifactId
intellij.xml com.jetbrains.intellij.xml xml n=2
intellij.xml.impl com.jetbrains.intellij.xml xml-impl n=3, name is parts 2nd-3rd
intellij.java.debugger com.jetbrains.intellij.java java-debugger n=3
intellij.platform.util com.jetbrains.intellij.platform util n=3 but drop "platform"
intellij.platform.testFramework com.jetbrains.intellij.platform test-framework n=3 but drop "platform" and hyphenate camel case
intellij.platform.annotations com.jetbrains.intellij.platform annotations n=3 but drop "platform"
intellij.platform.annotations.java5 com.jetbrains.intellij.platform annotations-java5 n=4, but drop "platform"
intellij.java.compiler.antTasks com.jetbrains.intellij.java java-compiler-ant-tasks n=4, but hyphenate camel case
intellij.platform.vcs.log com.jetbrains.intellij.platform vcs-log n=4, but drop "platform"
intellij.spring com.jetbrains.intellij.spring spring n=2
intellij.spring.boot com.jetbrains.intellij.spring spring-boot n=3
----------------- ------------- ---------------- -------------------------------

Note

The intellij.platform.annotations modules arent related to the IntelliJ Platform per se, and potentially may be used in any Java project. The module org.jetbrains.intellij.platform.annotations will move from IntelliJ IDEA sources to a separate Git repository and publish them with special Maven coordinates.

The artifact version can be specified in one of several ways because each artifact at the Repository URLs has multiple versions available:

  • A branch build is specified as BRANCH.BUILD[.FIX]. For example, a branch build such as 141.233, or a branch build with a fix such as 139.555.1
  • Release numbers are specified as MAJOR[.MINOR][.FIX]. For example 14, or 14.1, or 14.1.1
  • A snapshot of a branch from which the next EAP/release build will be produced is specified as BRANCH-EAP-SNAPSHOT. For example 141-EAP-SNAPSHOT

Example Artifact Specification

For example, to specify the jps-model-serialization module:

  • groupId = com.jetbrains.intellij.platform
  • artifactId = jps-model-serialization
  • classifier = ""
  • packaging = jar

Gradle Example for an Individual Module from the IntelliJ Platform

This section presents an example of using a Gradle script to incorporate an IntelliJ Platform module and repository in a build.gradle file. The example illustrates declaring the artifact URL, Maven coordinates, and version for the jps-model-serialization module artifact. There are two parts to the example: the repository and the dependency sections.

Repositories Section

This code snippet selects the release repository with the first URL, and repository of IntelliJ Platform dependencies with the second URL. The second URL is needed because this example selects individual modules.

repositories {
	maven { url "https://www.jetbrains.com/intellij-repository/releases" }
	maven { url "https://jetbrains.bintray.com/intellij-third-party-dependencies" }
}

Dependencies Section

This code snippet specifies the desired module artifacts.

dependencies {
	compile "com.jetbrains.intellij.platform:jps-model-serialization:182.2949.4"
	compile "com.jetbrains.intellij.platform:jps-model-impl:182.2949.4"
}

Note:

  • The artifact version (182.2949.4) must match in both statements.
  • In this example jps-model-serialization declares the APIs and jps-model-impl provides the implementation, so both are required dependencies.