Enforcing build order... ------------------------ Key: MNG-5104 URL: http://jira.codehaus.org/browse/MNG-5104 Project: Maven 2 & 3 Issue Type: Improvement Components: Bootstrap & Build, Reactor and workspace Affects Versions: 2.2.1 Environment: Linux AMD64 Reporter: Ancoron Luciferis
Currently, building multi-module aka. reactor projects is working, but does not help the developers to ensure a certain level of isolation of their modules. E.g. imagine the following project tree: * <root> ** Component A *** A.api *** A.jpa *** A.ejb (depends on A.api, A.jpa) ** Component B *** B.api *** B.jpa *** B.ejb (depends on B.api, B.jpa, A.api) ** Component C *** C.api *** C.jpa *** C.ejb (depends on C.api, C.jpa, A.api) ...and all things are just fine. Now, some developer comes in, not fully aware of the "big picture", producing something like this: * <root> ** Component A *** A.api *** A.jpa (depends on B.jpa) *** A.ejb (depends on A.api, A.jpa) ** Component B *** B.api *** B.jpa *** B.ejb (depends on B.api, B.jpa, A.api, C.ejb) ** Component C *** C.api *** C.jpa *** C.ejb (depends on C.api, C.jpa, A.api) ...so in an old-school build with tools like Ant this would fail to build as the build order is clear and strict, according to best-practices. Not so with Maven. In the first case Maven might (although unlikely and yet to be seen) come up with a clear build order like this: # <root> # Component A # A.api # A.jpa # A.ejb # Component B # B.api # B.jpa # B.ejb # Component C # C.api # C.jpa # C.ejb ...however, in the second case Maven will not fail to build and instead come up with something like this: # <root> # Component A # A.api # Component B # B.jpa # A.jpa # A.ejb # B.api # Component C # C.api # C.jpa # C.ejb # B.ejb All artifacts are build correctly, but it is no longer guaranteed that e.g. "Component A" could be used without "Component B", therefore introducing a requirement and eventually a lot of changes to the build-/tool-/test-chain. So we would like to have an option to disable the Maven "magic" here and just stupidly build according to the {{<module>}} tags we've carefully written. -- 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