You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@maven.apache.org by "Benjamin Bentmann (JIRA)" <ji...@codehaus.org> on 2010/01/28 18:58:55 UTC

[jira] Closed: (MNG-4536) Long build time - enforcer running too many times

     [ http://jira.codehaus.org/browse/MNG-4536?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Benjamin Bentmann closed MNG-4536.
----------------------------------

       Resolution: Fixed
    Fix Version/s: 3.0-alpha-7
         Assignee: Benjamin Bentmann

Fixed in [r904188|http://svn.apache.org/viewvc?view=revision&revision=904188]. Thanks for the example project!

> Long build time - enforcer running too many times
> -------------------------------------------------
>
>                 Key: MNG-4536
>                 URL: http://jira.codehaus.org/browse/MNG-4536
>             Project: Maven 2 & 3
>          Issue Type: Bug
>    Affects Versions: 3.0-alpha-6
>         Environment: Apache Maven 3.0-alpha-6 (r896384; 2010-01-06 11:00:46+0000)
> Java version: 1.6.0_16
> Java home: C:\Java\jdk1.6.0_16\jre
> Default locale: en_GB, platform encoding: Cp1252
> OS name: "windows xp" version: "5.1" arch: "x86" Family: "windows"
>            Reporter: James Nord
>            Assignee: Benjamin Bentmann
>             Fix For: 3.0-alpha-7
>
>         Attachments: m3.0-a6.zip
>
>
> A simple mvn clean validate has more than tripled in time on a multi module project I'm working on (when compared to 2.2.1).
> From what I've read on the list the 3.0-alpha-6 is supposed to be quicker than 2.x so I'm quite surprised by this.
> The project is a multi-module project, with a corporate pom at the top of the tree.
> From my interpretation of the build log the enforcer plugin is now validating more than just the current module's pom for each module build.
> e.g.
> Corp Pom (defines validation rules)
> ProjA (parent is corp pom)
>  + ModA
>  + Mod B
>  + Mod C
> That is when mvn validate is run on proj A when the reactor moves to a mod A it runs the enforcer rules on ProjA ModA, ModB and ModC, and again when it builds Mod B it runs the enforecer rules again on all these modules  etc...
> I would only expect the enforcer to run against the project/module that it is currently building (like maven 2.2.1).
> Note: the test project attached does not show the massive slowdown but does show the enforcer running too many times (mvn clean validate | grep enforce).  The massive slowdown is due to the company enfrcer rules that perform a svn status for each invocation of the enforcer rules - but any enforcer rule which takes some time to complete will show the same results when run needlessly.
> mvn 2.2.1 output ("mvn validate")
> [INFO] ------------------------------------------------------------------------
> [INFO] Reactor Summary:
> [INFO] ------------------------------------------------------------------------
> [INFO] Project : Parent ...................................... SUCCESS [4.704s]
> [INFO] Project : Mod A ....................................... SUCCESS [2.225s]
> [INFO] Project : Mod B ....................................... SUCCESS [2.225s]
> [INFO] Project : Mod C ....................................... SUCCESS [2.225s]
> [INFO] Project : Mod D ....................................... SUCCESS [2.215s]
> [INFO] ------------------------------------------------------------------------
> [INFO] ------------------------------------------------------------------------
> [INFO] BUILD SUCCESSFUL
> [INFO] ------------------------------------------------------------------------
> [INFO] Total time: 14 seconds
> mvn 3.0-alpha-6 output ("mvn validate")
> [INFO] ------------------------------------------------------------------------
> [INFO] Reactor Summary:
> [INFO]
> [INFO] Project : Parent .................................. SUCCESS [7.361s]
> [INFO] Project : Mod A ................................... SUCCESS [6.079s]
> [INFO] Project : Mod B ................................... SUCCESS [6.068s]
> [INFO] Project : Mod C ................................... SUCCESS [6.069s]
> [INFO] Project : Mod D ................................... SUCCESS [6.029s]
> [INFO] ------------------------------------------------------------------------
> [INFO] BUILD SUCCESS
> [INFO] ------------------------------------------------------------------------
> [INFO] Total time: 31.866s
> The reason by looking at the logs seems the enforcer rule is run for each module in the build for every module build.
> [INFO] ------------------------------------------------------------------------
> [INFO] Building Project : Mod C 0.0.1-SNAPSHOT
> [INFO] ------------------------------------------------------------------------
> [INFO]
> [INFO] --- maven-enforcer-plugin:1.0-beta-1:enforce (enforce-rules) @ modc ---
> [INFO] complex enforcer rule starting
> [INFO] complex enforcer rule finished
> [INFO]
> [INFO] --- maven-enforcer-plugin:1.0-beta-1:enforce (enforce-rules) @ parent ---
> [INFO] complex enforcer rule starting
> [INFO] complex enforcer rule finished
> [INFO]
> [INFO] --- maven-enforcer-plugin:1.0-beta-1:enforce (enforce-rules) @ moda ---
> [INFO] complex enforcer rule starting
> [INFO] complex enforcer rule finished
> [INFO]
> [INFO] --- maven-enforcer-plugin:1.0-beta-1:enforce (enforce-rules) @ modb ---
> [INFO] complex enforcer rule starting
> [INFO] complex enforcer rule finished
> [INFO]
> [INFO] --- maven-enforcer-plugin:1.0-beta-1:enforce (enforce-rules) @ modc ---
> [INFO] complex enforcer rule starting
> [INFO] complex enforcer rule finished
> [INFO]
> [INFO] --- maven-enforcer-plugin:1.0-beta-1:enforce (enforce-rules) @ modd ---
> [INFO] complex enforcer rule starting
> [INFO] complex enforcer rule finished
> [INFO]
> [INFO] --- maven-scm-plugin:1.2:validate (validate) @ modc ---
> [INFO]
> Whilst in Maven 2.2.1 the rules are run twice for each module (due to the build forking by the scm validate) they are run N times where N == number of modules in reactor for each module in the reactor.
> to reproduce.
> extract attachment
> mvn install long_running_enforcer
> mvn install corp_pom
> mvn validate project (repeat with mavan 2.2.1 and maven 3.0-alpha-6)

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira