Introducing Package Search EAP

We’re happy to announce a new plugin for IntelliJ IDEA that will provide you a better experience when it comes to finding and managing dependencies in your JVM projects. And if you’re a Kotlin developer, you’ll be getting an additional bonus!

Finding the right package

You’re starting a new project, or working on an existing one, and you want to make some HTTP calls…

Hmm. Which library is the one that most folks are using? Let me Google it. Well there’s a bunch of them. 

StackOverflow tells me this is the best and greatest. Wonder if it’s still maintained. Let me look at the Stars and Forks. 

OK, I’m going with this one. Right. Let me find it on Maven Central. 



We’ve all been there. Even if we know the library we want to use, we still go through the process of finding the latest version and referencing it in our project.

Welcome to Package Search

With Package Search this is now much simpler. From within the IDE, you can search, evaluate and manage all your dependencies. 

Pull up the Packages tool window or simply invoke the Package dependency action to search for new packages. 

Package Window Search

The Package Manager Window provides information such as the source code links, activity on StackOverflow, GitHub, and all accessible directly with links from the entry. In addition it provides a list of all currently installed packages. From here you can add, remove, and update packages.

Update All

We currently support Maven and Gradle, although the system is completely pluggable and we’ll be adding support for other build tools in the future.

Add Package


Code Completion Functionality 

If you prefer adding dependencies directly yourself in your build files, you’ll be pleased to know that for starting with the 2019.2 IDE, you’ve already been using Package Search. The code completion that IntelliJ IDEA provides since the latest version is based on the Package Search Server, making it not only more complete but faster in terms of performance also.   

Code Completion

Kotlin and Multiplatform discovery

If you’re a Kotlin user, you may have come across a certain scenario where you’re looking for a library and not sure which platforms it supports. Or in the case of developing multiplatform applications, you’d want something that supports all your target platforms. 

Package Search caters to this need by providing you additional information about target platforms for libraries. The example below shows the case of assertk, a multiplatform library with support for a variety of targets. On the right pane you can see the specific ones as tags. 

Search multiplatform

Trying it out

To get the Package Window and visual interface, you need to install the Package Search plugin that is available on the marketplace. 

If you’re using IntelliJ IDEA 2019.2 or later, you’re already using this functionality when it comes to code completion for packages. 

What’s in store

We have a ton of functionality planned for Package Search, amongst other things

  • Web Interface
  • Gradle Kotlin DSL
  • Additional package repository indexing
  • Support for multiple package formats
  • Enhanced package metadata, including ranking
  • Powerful query and sorting options

For those of you who have experience with NuGet and are using our .NET IDE Rider, this will definitely be familiar to you. The enhancements however are that we now have our own package index with additional metadata. 

But Package Search is all about making discovery and dependency management easier, avoiding you having to spend time searching, collecting information and copy/pasting code. Your time is valuable, so that last thing we want is for you to read long blog posts.

Try it out and and let us know if you have any feedback.

Comments below can no longer be edited.

9 Responses to Introducing Package Search EAP

  1. Avatar

    ADEV says:

    October 22, 2019

    Nice, i always felt like JAVA needed something like nuget UI on Rider/Visual Studio

    This is awesome, thanks!

  2. Avatar

    Matthias says:

    October 23, 2019

    Interesting, however, the code completion is, at least for me, a little bit “wonky”. I’m using IdeaVim, maybe it has something to do with it.

    For example, when I try to add a new Gradle dependency, I enter “implementation” and then start to type in the group id (e.g. org.springframework…). When I type “org” the the autocompletion starts, but after the first dot the popup is hidden again and Ctrl-Space yields “No suggestions”. Event typing “org.springfr….” does not open the auto completion. Sometimes it comes up near the end of the group id, but when I select an entry only the group id is inserted and I have to hope the further typing opens the popup again to let me chose the artifact id.

  3. Avatar

    jacky says:

    October 23, 2019

    Any plan to implement npm package search for Node? It’s really important for Node.js developers. Too many npm package, and too much example code to refer. 🙂

  4. Avatar

    dmitri says:

    October 24, 2019

    No good for Android Studio?

    Error executing task com.jetbrains.packagesearch.intellij.plugin.ui.toolwindow.PackageSearchToolWindowFactory$createToolWindowContent$1@db9d573

    java.lang.NoClassDefFoundError: com/jetbrains/rd/util/lifetime/Lifetime
    at com.jetbrains.packagesearch.intellij.plugin.ui.toolwindow.PackageSearchToolWindowViewKt.defineNestedLifetime(PackageSearchToolWindowView.kt:66)
    at com.jetbrains.packagesearch.intellij.plugin.ui.toolwindow.PackageSearchToolWindowViewKt.createLifetime(PackageSearchToolWindowView.kt:72)
    at com.jetbrains.packagesearch.intellij.plugin.ui.toolwindow.PackageSearchToolWindowViewKt.access$createLifetime(PackageSearchToolWindowView.kt:1)
    at com.jetbrains.packagesearch.intellij.plugin.ui.toolwindow.PackageSearchToolWindowView.initToolWindow(PackageSearchToolWindowView.kt:21)
    at com.jetbrains.packagesearch.intellij.plugin.ui.toolwindow.PackageSearchToolWindowFactory$createToolWindowContent$1.run(PackageSearchToolWindowFactory.kt:44)
    at com.intellij.openapi.project.DumbServiceImpl.doRun(DumbServiceImpl.java:380)
    at com.intellij.openapi.project.DumbServiceImpl.updateFinished(DumbServiceImpl.java:372)
    at com.intellij.openapi.application.TransactionGuardImpl.runSyncTransaction(TransactionGuardImpl.java:88)
    at com.intellij.openapi.application.TransactionGuardImpl.lambda$pollQueueLater$0(TransactionGuardImpl.java:74)
    at com.intellij.openapi.application.impl.LaterInvocator$FlushQueue.doRun(LaterInvocator.java:435)
    at com.intellij.openapi.application.impl.LaterInvocator$FlushQueue.runNextEvent(LaterInvocator.java:419)
    at com.intellij.openapi.application.impl.LaterInvocator$FlushQueue.run(LaterInvocator.java:403)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:764)
    at java.awt.EventQueue.access$500(EventQueue.java:98)
    at java.awt.EventQueue$3.run(EventQueue.java:715)
    at java.awt.EventQueue$3.run(EventQueue.java:709)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:734)
    at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:757)
    at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:706)
    at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:375)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
    Caused by: java.lang.ClassNotFoundException: com.jetbrains.rd.util.lifetime.Lifetime PluginClassLoader[com.jetbrains.packagesearch.intellij-plugin, 1.0.763-eap] com.intellij.ide.plugins.cl.PluginClassLoader@3944e815
    at com.intellij.ide.plugins.cl.PluginClassLoader.loadClass(PluginClassLoader.java:51)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    … 29 more

  5. Avatar

    Odd Christer says:

    October 25, 2019

    What would be great is integration with something like dependency-check or Snyk for vulnerability data. A great way to make it more visible to developers that are not already aware of or using these tools.

    • Avatar

      Hadi Hariri says:

      October 25, 2019

      Definitely something on the roadmap.

  6. Avatar

    chonger says:

    October 30, 2019

    Any plan for supporting custom hosted maven repository(like nexus)?

  7. Avatar

    Rupert Jung says:

    May 29, 2020

    Package search does only work in dedicated window but on in the gradle file itself, see https://i.imgur.com/mlAGq6J.png

Discover more