# IDEs

Both Intellij and Eclipse are supported out of the box.

For Solr 9x and later, executing "gradlew tasks" will list a section "IDE tasks" to get you started.
The dev mailing list or the slack solr-dev channel are good places for detailed questions.

## IntelliJ IDEA

Importing the project as a gradle project should just run out of the box.

## Eclipse

Run the following to set up Eclipse project files:

`./gradlew eclipse`

then import the project into Eclipse with:

File -> Import... -> Existing Project into Workspace

Please note that Eclipse does not distinguish between sub-projects
and package sets (main/ test) so pretty much all the sources and dependencies
are available in one large bin.
