Files
spring-framework/import-into-eclipse.md
T
Sam Brannen 328def4b23 Update Eclipse IDE import instructions
This commit updates the Eclipse import instructions for modern versions
of Eclipse IDE and Spring Tools for Eclipse (STS no longer exists as a
product), and notes that the Eclipse IDE for Java Developers package
works as well.

- All references to Buildship have been removed, since we don't use it.
  Projects are now imported via "Existing Projects into Workspace"
  after running `./gradlew testClasses` and
  `./gradlew cleanEclipse eclipse`.
- Obsolete advice has been removed: Kotlin/AJDT compatibility notes,
  the manual JAXB source folder step, and the JDK 8 and `MaxPermSize`
  hints.
- The `--add-opens` and `-Xshare:off` VM options that the Gradle build
  applies to tests are now documented.
- The broken TestNG link has been replaced with the Eclipse Marketplace
  one.

Closes gh-37397
2026-10-05 15:11:10 +02:00

3.9 KiB

Spring Framework - Eclipse Project Import Guide

This document will guide you through the process of importing the Spring Framework projects into Eclipse IDE or the Spring Tools for Eclipse. It is recommended that you have a recent version of Eclipse. The build uses JDK 25 (see .sdkmanrc), so as a bare minimum you will need Eclipse with full Java 25 support.

The following instructions have been tested against Spring Tools for Eclipse 5.4.0 (based on Eclipse IDE 4.41). The instructions should also work with the latest release of the Eclipse IDE for Java Developers; Spring Tools is not required.

Steps

When instructed to execute ./gradlew from the command line, be sure to execute it within your locally cloned spring-framework working directory.

  1. Ensure that the Forbidden reference (access rule) in Eclipse is set to Info (Preferences → Java → Compiler → Errors/Warnings → Deprecated and restricted API → Forbidden reference (access rule)).
  2. Optionally install the Kotlin Plugin for Eclipse if you need to execute Kotlin-based tests or develop Kotlin extensions.
  3. Optionally install the AspectJ Development Tools (AJDT) if you need to work with the spring-aspects project.
  4. Optionally install the TestNG plugin in Eclipse if you need to execute individual TestNG test classes or tests in the spring-test module.
    • As an alternative to installing the TestNG plugin, you can execute the org.springframework.test.context.testng.TestNGTestSuite class as a "JUnit 6" test class in Eclipse.
  5. Compile all main and test classes from the command line first with ./gradlew testClasses. This pre-compiles spring-core and generates the JAXB types for spring-oxm (see Known Issues below).
  6. To apply Spring Framework specific settings, run ./gradlew cleanEclipse eclipse from the command line.
  7. Import all projects into Eclipse (File → Import → General → Existing Projects into Workspace → Navigate to the locally cloned spring-framework directory → Select Finish).
    • If you have not installed AJDT, exclude the spring-aspects project from the import, if prompted, or close it after the import.
  8. Code away!

Known Issues

  1. spring-core should be pre-compiled due to repackaged dependencies.
    • See *RepackJar tasks in the spring-core.gradle build file.
  2. spring-oxm should be pre-compiled due to JAXB types generated for tests.
    • Note that executing ./gradlew testClasses as explained in the Steps above will compile spring-core and generate JAXB types for spring-oxm.
  3. spring-aspects does not compile due to references to aspect types unknown to Eclipse.
    • If you installed AJDT into Eclipse it should work.
  4. While JUnit tests pass from the command line with Gradle, some may fail when run from the IDE.
    • Resolving this is a work in progress.
    • If attempting to run all JUnit tests from within the IDE, you may need to set the following VM option to avoid out of memory errors: -Xmx2048m
    • Tests run via Gradle are also configured with the following VM options (see TestConventions in buildSrc), which you may need to set in your Eclipse launch configuration as well: --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED -Xshare:off

Tips

In any case, please do not check in your own generated .classpath file, .project file, or .settings folder. You'll notice these files are already intentionally in .gitignore. The same policy holds for IntelliJ IDEA metadata.