I agree that version ranges are pretty much worthless in maven right now, but
I'm not sure I understand how the better range handling would help in your example.
So you're example says that EJB3 goes GA with Logging CR1, and then the AS
forces EJB3 GA to upgrade to Logging GA? And then this causes a bug because of
some incompatibility between EJB3 GA and Logging GA.
But the same thing could happen if EJB3 and/or the component-matrix was using a
version range. In the end you have to choose a single version of each component
and if there are incompatibilities then you have to resolve them, regardless of
what it says in the pom.
Carlo de Wolf wrote:
Exactly, so it doesn't matter which component you choose as a
starting
point for the shared base. It'll always be the wrong one.
Short example:
- component-matrix CR1 has EJB 3 CR1 and Logging CR1
- EJB3 goes GA with component-matrix CR1 (there is no GA for that one yet)
- component-matrix goes GA with EJB 3 GA and Logging GA
- see EJB3 fail (because of some weird change in Logging GA)
So in effect AS can't dictate the version of Logging in any way. It can
only consume its dependencies and spot inconsistencies, where it not
that Maven fails horribly here.
Now suppose the version of Logging in all components would be set to:
[1.0,1.1). And we add an extra component here:
AS -> Web -> Logging
Then I would like to see two builds: one with snapshots (continuous
integration) and one with released artifacts (latest greatest stable).
But this requires two conditions:
1. Snapshot artifacts must be static (
http://jira.codehaus.org/browse/MDEPLOY-77 ) and might be reproducible.
2. All other artifacts (Alpha, Beta, CR, GA) must be static and must be
reproducible (
http://jira.codehaus.org/browse/MDEPLOY-82 ).
It also requires me to be able to choose whether snapshots can be part
of my build.
(related:
http://jira.codehaus.org/browse/MNG-3092 )
Not to mention the fact that all JBoss version numbers (except JBoss
EJB3) are incompatible with Maven.
So all in all I think we've reached the end of the line with Maven.
Unless someone can think of anything else to try, we should start using
a tool that addresses our needs, not the hype.
Carlo
Paul Gier wrote:
> I think the reason we moved it back into AS was because of the
> circular dependencies. So if EJB3 uses version 5.1 of the component
> matrix and the component matrix points to version 1.0 GA of EJB3,
> which one gets released first? Also, the component matrix doesn't
> work well as a snapshot, because if you make a groupId or componentId
> change it breaks the build.
>
>
http://www.jboss.com/index.html?module=bb&op=viewtopic&t=132452
>
> But I think it could still work even if separated from the app
> server. But we'll have to release it pretty often and probably only
> use snapshot versions of it locally.
>
> Maven won't download all the dependencies as long as we keep them in
> <dependencyManagement> like they are now. Maven will only download
> the dependencies listed in <dependencies> and all the trasitive deps
> in the tree.
>
>
>
> Dimitris Andreadis wrote:
>> A very practical problem is if you move component-matrix out of AS,
>> you need to tag a new version of it with every change, and this file
>> changes quite often.
>>
>> Then every project that depends on it, will download all the
>> dependencies, even if it's not using them (I think that's how maven
>> works).
>>
>> Carlo de Wolf wrote:
>>> Almost practical example:
>>>
>>> AS -> EJB3 -> JPA -> Hibernate -> Logging (let's assume the
Logging
>>> component is jboss-logging for this scenario)
>>>
>>> Which component(s) compromise the shared base?
>>>
>>> Carlo
>>>
>>> Andrew Lee Rubinger wrote:
>>>> Back in March, I introduced the idea of a "Shared Component
Matrix"
>>>> to be the authority over which versions AS would use.
>>>>
>>>> JIRA -
>>>>
https://jira.jboss.org/jira/browse/JBAS-5324
>>>>
>>>> Forum -
>>>>
http://www.jboss.com/index.html?module=bb&op=viewtopic&t=131748
>>>>
>>>> The intention was for this to be a component scoped outside of the
>>>> Application Server such that it could be relied upon by outside
>>>> projects. In other words, both AS and jbossas/projects/* could
>>>> rely upon the same 3rdparty components.
>>>>
>>>> The Threads stop and don't explain why it was decided that
>>>> component-matrix should live inside AS, therefore ineligible to be
>>>> consumed outside due to cyclic dependencies. I believe the reason
>>>> was "it makes it easier to tag AS altogether".
>>>>
>>>> I was opposed to this at the time, and it's still unacceptable. :)
>>>>
>>>> Concrete example of why:
>>>>
>>>> The last update to jboss-ejb3-proxy defined a dependency upon
>>>> jboss-metadata:1.0.0.CR8. At the time, this was in sync between AS
>>>> and ejb3-proxy.
>>>>
>>>> Over the past few months, AS has updated jboss-metadata, now at
>>>> 1.0.0.CR14. The dependency declared in ejb3-proxy is orphaned, and
>>>> has stayed constant.
>>>>
>>>> We've therefore been unit testing ejb3-proxy against stale
>>>> jboss-metadata.
>>>>
>>>> Tonight I go to update in preparation for a GA *RELEASE*, and guess
>>>> what? Regression was introduced sometime in the past 4 months, I'm
>>>> just seeing it now, and this blocks the whole release process until
>>>> I can find and fix this bug.
>>>>
>>>> Please, let's re-open the discussion about a shared dependency
policy.
>>>>
>>>> S,
>>>> ALR
>>>>
>>>
>>> _______________________________________________
>>> jboss-development mailing list
>>> jboss-development(a)lists.jboss.org
>>>
https://lists.jboss.org/mailman/listinfo/jboss-development
>> _______________________________________________
>> jboss-development mailing list
>> jboss-development(a)lists.jboss.org
>>
https://lists.jboss.org/mailman/listinfo/jboss-development
>
> _______________________________________________
> jboss-development mailing list
> jboss-development(a)lists.jboss.org
>
https://lists.jboss.org/mailman/listinfo/jboss-development
_______________________________________________
jboss-development mailing list
jboss-development(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/jboss-development