You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@maven.apache.org by "Slawomir Jaranowski (Jira)" <ji...@apache.org> on 2022/05/31 07:23:00 UTC
[jira] [Closed] (MENFORCER-420) Reuse getDependenciesToCheck results across rules
[ https://issues.apache.org/jira/browse/MENFORCER-420?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Slawomir Jaranowski closed MENFORCER-420.
-----------------------------------------
Assignee: Slawomir Jaranowski
Resolution: Fixed
> Reuse getDependenciesToCheck results across rules
> -------------------------------------------------
>
> Key: MENFORCER-420
> URL: https://issues.apache.org/jira/browse/MENFORCER-420
> Project: Maven Enforcer Plugin
> Issue Type: Improvement
> Components: Standard Rules
> Reporter: Joseph Walton
> Assignee: Slawomir Jaranowski
> Priority: Minor
> Fix For: 3.0.1
>
>
> We have a build with a significant number of dependencies, and also a large number of {{<bannedDependencies/>}} rules. Together, they lead to a build where Enforcer takes tens of minutes.
> Looking into bottlenecks, we found that {{AbstractBanDependencies#getDependenciesToCheck}} was taking a significant proportion of the build time (tens of percent). This method is called once per rule, so it's recalculating the dependencies for every rule across every execution.
> Introducing a cache, to reuse the dependencies one they'd been calculated for a module, dropped the time spent in banned dependency enforcement by about 75%, which was reflected as a 60% improvement in the time of that build.
> Our local implementation used the {{org.codehaus.plexus.context.Context}} to store the dependencies keyed by the concatenation of {{MavenProject#getId}} and {{searchTransitive}}; there may be a more appropriate scope to avoid edge cases with complex configurations.
--
This message was sent by Atlassian Jira
(v8.20.7#820007)