Hi everyone,

I'm Hitesh, a CS student planning to apply for GSoC 2027 with Apache Maven.
I wanted to share my proposal idea early and get community input before
writing the full application.

The proposal: add a dependency:insight goal to the maven-dependency-plugin
that answers the question "Why is artifact X on my classpath?"

Current situation:
  Users run `mvn dependency:tree` and manually scan hundreds of lines to
find a transitive dependency's origin. There is no direct command for this.

Proposed solution:
  $ mvn dependency:insight -Dartifact=guava

  guava:32.1-jre  (declared: 32.0, overridden by spring-boot-dependencies)
  └─ spring-context:6.1.2
     └─ spring-core:6.1.2
        └─ com.example:my-app (root)

Implementation approach:
  - Hook into the existing DependencyCollector/DependencyNode graph,
already built during the resolve phase
  - Perform a reverse BFS from the target artifact node back to the root
  - Surface version mediation info from DefaultDependencyCollector when the
resolved version differs from the declared one
  - Output both text and, optionally, a machine-readable format

Gradle's `dependencyInsight` task already solves this for Gradle users —
this proposal brings equivalent clarity to the Maven ecosystem. I am not
proposing to change any resolution logic, only to expose what Maven already
computes internally in a more accessible form.

I checked the GSoC 2025 and 2026 idea lists and found no existing Maven
proposals, so I believe this is new ground.

I'd appreciate:
  1. Feedback on the scope — too big, too small, or about right for 12
weeks?
  2. Whether a Maven committer would be willing to mentor this
  3. Any prior discussion or JIRA tickets I should be aware of

Thank you for reading. Happy to answer questions or share a draft write-up.

Best regards,
B.V. Hitesh Sai
https://github.com/Hiteshsai007
Sai Vidya Institute of Technology, India

Reply via email to