Migrating IntelliJ’s build to use Maven project libraries

Historically, all libraries used for building IntelliJ have been stored, as JAR files, directly in the IntelliJ git repositories. This approach has several downsides, such as increasing the size of the git repo whenever we need to update to a new version. Also, who wants to manually manage dependencies and versions these days? We’ve recently made some changes to try and improve this situation.

Ideally, moving the IntellIJ IDEA project to a modern dependency management system such as Gradle would allow us to solve these problems. Unfortunately, the IntelliJ project is very large, and right now, there are performance issues when synchronising a Gradle project of that size with IntelliJ’s project model. This is something we’re working on with the folks from Gradle, and hope to make this happen at some point in the future.

In the meantime, we’re taking small steps, and have started migrating our libraries to be Maven project libraries. This is a feature that IntelliJ has had for a while, and we improved it in IntelliJ 2017.2.

Project libraries dialog

Instead of storing the JAR files as part of the source tree, we can now simply store the Maven coordinates of the dependency, and IntelliJ will automatically download any JARs and source zips when you open or build the project. As part of the updates for IntelliJ 2017.2, the build scripts for IntelliJ-based products are also aware of repository libraries and will also download the JAR files if necessary.

The master branch of the IntelliJ IDEA Community Edition sources already has some repository libraries. We’re going to use this approach for any new libraries we add, and we’ll be gradually migrating existing libraries over time. Please make sure you’re using IntelliJ 2017.2.1 or newer to work with the IntelliJ sources, as stated in the README.