[ http://jira.codehaus.org/browse/MNG-5104?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=268426#action_268426 ]
Ancoron Luciferis commented on MNG-5104: ---------------------------------------- Well, yes. I think everyone does that in some way (the common API vs implementation thing at least) and as Maven calls itself a software project management tool I wondered that there is no such option already. > 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