[
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