[jboss-dev] Shared component-matrix
Paul Gier
pgier at redhat.com
Fri Jan 23 10:37:49 EST 2009
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 at lists.jboss.org
>>>>>> https://lists.jboss.org/mailman/listinfo/jboss-development
>>>>> _______________________________________________
>>>>> jboss-development mailing list
>>>>> jboss-development at lists.jboss.org
>>>>> https://lists.jboss.org/mailman/listinfo/jboss-development
>>>>
>>>> _______________________________________________
>>>> jboss-development mailing list
>>>> jboss-development at lists.jboss.org
>>>> https://lists.jboss.org/mailman/listinfo/jboss-development
>>> _______________________________________________
>>> jboss-development mailing list
>>> jboss-development at lists.jboss.org
>>> https://lists.jboss.org/mailman/listinfo/jboss-development
>>
More information about the jboss-development
mailing list