[ 
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

        

Reply via email to