How is ProjectOpenProcessor supposed to be used?

2025.3+

ProjectOpenProcessor allows to create and configure a project when a directory is opened as project for the first time.

To implement ProjectOpenProcessor.openProjectAsync, it seems like we have to always delegate to PlatformProjectOpenProcessor.getInstance().openProjectAsync(...) because an otherwise an instance OpenProjectTask would be needed and that class is pretty much inaccessible for 3rd-party plugins. (see How can I use OpenProjectTask?)

Now, in IntelliJ IDEA, SetupJavaProjectFromSourcesActivity displays a notification “… build script found” at startup. I don’t want it because it’s not a Java project, unexpected and distracting.

This notification is only shown if PlatformProjectOpenProcessor was used to create the new project.
But because PlatformProjectOpenProcessor is the only way I can see this notification is always shown.

Is ProjectOpenProcessor supposed to be implemented in plugins?

How can I get rid of the notification shown by SetupJavaProjectFromSourcesActivity?
I also don’t want any changes by this activity for Java projects, because it does not apply.

Perhaps I just don’t understand the intentions or I’m missing other extension points, but it currently seems not be be possible to provide a good project import and the whole import API seems undocumented, complex and not made for external plugins :pensive_face:

Thanks!

But what kind of build scripts are found and why?

Well, I don’t know, but SetupJavaProjectFromSourcesActivity treats any supported file as a “build script”.

SetupJavaProjectFromSourcesActivity iterates the project directory and thinks any file importable by any `ProjectOpenProcessor is a “build script”, regardless of file type, project type, etc.

If there’s any importable file, then the notification is shown.

See method searchImporters in file SetupJavaProjectFromSourcesActivity.kt in intellij-community.
It would make sense for Gradle or Maven build files in purely Java projects, but in my case it’s completely unrelated to Java and I can’t suppress it unless I forcefully remove key PROJECT_OPENED_BY_PLATFORM_PROCESSOR from the project, which is used under the hood. But it’s @Internal :face_exhaling: