Re: [GSoC 2027] Proposal idea: dependency:insig ht — tracing why an artifact is on the classpath

Maarten Mulders <[email protected]> Thu, 18 Jun 2026 08:26:18 +0200
Newsgroups gmane.comp.jakarta.turbine.maven.devel
Organization Apache Software Foundation
Message-ID <[email protected]>
Hi Hitesh,

Great to hear you're interested in contributing to Apache Maven through 
GSoC!


About your proposal: the output you suggest looks quite like that of 
dependency:tree [1], especially with the includes parameter applied. 
Could you please highlight where your proposal differs from existing 
functionality? Also, there is an existing (old, but still relevant) 
proposal on GitHub [3] that maybe relates to what you're trying to 
achieve. I'm not 100% sure, but it might be good to check that one, too.


Please note that this reply does not promise I would be available as a 
mentoring committer. At this point, I'm trying to help you write a 
relevant proposal for GSoC.


Good luck,


Maarten


[1] 
https://maven.apache.org/plugins/maven-dependency-plugin/usage.html#dependency.3Atree
[2] https://maven.apache.org/plugins/maven-dependency-plugin/tree-mojo.html
[3] https://github.com/apache/maven-help-plugin/issues/303

On 18/06/2026 06:35, Hitesh Sai wrote:
> 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
>