Dimitris Andreadis wrote:
Paul Gier wrote:
> The way I imagine it would work kind of like this.
>
> The component-matrix would be set with each component version that
> will be used in the app server target release (and not with the latest
> release, alpha, beta, etc), even if those component releases don't
> exist yet. So for example we could release a component-matrix version
> 5.0.1.GA that contains all the GA releases of the components that will
> be available when the GA of the app server is ready.
I don't see how this solves the problem. First, in many cases the target
version of a component for inclusion in the AS changes (e.g. initial
plan says JBxxx 1.2.3 but then we go with 1.2.4.SP1), second everyone
will have to specify the intermediate JBxxx versions and then remember
to un-specify them so the default takes over.
We could do something like release 5.0.0.GA-1 of the component matrix, and then
if there are changes along the way release component-matrix 5.0.0.GA-2. But I
don't know if it makes things any easier. I was just trying to think about how
the component-matrix could work if separated from the AS build.
You're right component projects would also have to remember to remove the
versions from their poms before doing a release.
>
> It's not a true cyclic dependency because in the component matrix, the
> dependencies are just listed in depManagement, so they are just
> default/suggested versions. So the maven release plugin shouldn't
> have any problem allowing this to be released. Each component project
> like would have to override any non-existent version numbers until
> they are actually released.
>
> Can you give me more details about the plugin that you are thinking
> about? So it would just read the pom at the URL and then tell you if
> there are versions in your tree that differ from the one at the URL?
Exactly! It would have to answer the question which of my overlapping
dependencies with that other project are over a different version. And
if this plugin runs by default, you'll know real soon when your
dependencies start to divert so you can fix it.
I created a jira issue to keep track of this:
http://jira.jboss.org/jira/browse/JBBUILD-512
>
> Dimitris Andreadis wrote:
>> It's only ejb3 that would want to sync dependencies with AS but the
>> other projects too (aop, metadata, naming, mc, ws, ...) in which case
>> sooner or later we'll have a cyclical dependency issue: i.e. you'd
>> have to decide which are "leaf" projects and which are
"higher" level
>> projects sharing the component-matrix.
>>
>> Why not write a custom plugin that you would configure with a URL of
>> a pom.xml
>> (
http://anonsvn.jboss.org/repos/jbossas/trunk/component-matrix/pom.xml)
>> and at build time it would flag conflicting dependencies? You would
>> then decide whether to manually update a dependency or not.
>>
>> 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
>