Re: project.xml is a jelly script?

2003-08-22 Thread Mark H. Wilkinson
On Fri, 2003-08-15 at 00:30, Jason Dillon wrote:
> 
> Specifically I was looking for a way to define common dependencies for 
> a large project (Apache Geronimo) so I could better manage version 
> numbers of the dependencies.  I did not wish to put all of the depends 
> into a parent project as that would force each child project to have 
> additional dependencies on its classpath which might not be a good 
> thing, nor do I want each and every module to try to download 
> SNAPSHOTS, especially if they do not even need that depend.
> 
> So I thought about using properties like 
> 'dependency.commons-logger.version=1.0.3' and then specify the property 
> as the content for , which works fine if the property is 
> defined in the child modules project.properties, or if the property is 
> in the parent and the child is always invoked through the reactor.  
> This is not the case with Geronimo, so this method fails.

I've done this - as you've probably found, at the moment you can't
inherit the contents of project.properties along with the project.xml
that you extend, so  doesn't give you a mechanism for pulling in
shared property values. Similarly you can't use maven.xml (which is a
jelly script) because it's not parsed until after the POM has been
completely processed. You can set property values in maven.xml but they
aren't available at the time interpolation is performed on the POM. And
you can't put jelly into the POM as it's not a jelly script.

What I've done is store the properties in a text file and then have each
developer add the contents of that file to ~/build.properties. It's not
exactly a clean approach, and you need to make sure that you keep
~/build.properties in sync with the stuff in the source tree, but it
does work. I guess it should be possible to write some code in maven.xml
to check that the defined properties from ~/build.properties match thos
in the file in the source tree. And it seems there's a good chance of
being able to move the information into the parent project's
project.properties file in the future when  inherits property
settings too, so eventually the hack can go away.

-Mark.


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: project.xml is a jelly script?

2003-08-22 Thread Mark H. Wilkinson
On Sun, 2003-08-17 at 00:16, Jason van Zyl wrote:
> On Sat, 2003-08-16 at 16:35, Luke Taylor wrote:
> > 
> > I think the problem is that you might want to put shared dependencies 
> > into a parent project file for a reactor project which has, for example, 
> > 20 sub-projects/components. But if perhaps only 10 of them actually use 
> > the dependencies, they will still have to be available for building the 
> > others individually. 
> 
> Ok, that I don't quite understand. There is just a fear of polluting the
> classpath?

Yeah, that would be my concern. For example, you might have certain
sub-projects that shouldn't be doing anything with XML, but if you
inherit all your dependencies from the parent project you loose the
ability to verify these architectural constraints at compile time.

Probably more important, if your project contains sub-projects common,
framework, shared, front-end, back-end and ui, you might want to make
sure that ui only depends on front-end, shared, framework and common,
but that it's depending on the same versions of shared, framework and
common that the back-end project is depending on.

-Mark.


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: project.xml is a jelly script?

2003-08-18 Thread Mark McBride
On Sat, 2003-08-16 at 19:19, Jason van Zyl wrote:
> On Sat, 2003-08-16 at 12:11, Mark McBride wrote:
> > My group is currently running into the same problem.What we are doing is
> > declaring all our system/lib jars in a projects.xml which all our
> > projects extend. This is nice in respect to ensure that everyone is
> > building/debugging against the libraries that are in production. We are
> > actually using this parent project.xml to document our system
> > configuration.
> > 
> > The problem we run into is that, like stated earlier in this thread, we
> > lose on the meaningfulness of the dependencies documentation in all the
> > projects that extend the parent project.xml. Our system library has 50
> > jars and many of our application are only using a handful more then the
> > standard java server libraries.
> 
> What if in the reports you could distinguish between the dependencies
> stated for the project directly versus those that are inherited? This
> could generalized and methods in the POM could be added to select the
> stated versus inherited dependencies.
That would be great!

> 
> > Another concept that we think would be a good feature of maven is the
> > ability to state a group of dependencies, say struts and all it's
> > libraries. 
> 
> This actually works in the maven-new code where you do this by stating a
> POM of another project as a dependency. And transitive dependencies also
> work in maven-new. I've just had zero time of late.
Sounds good! Looking forward to using it!
> 
> > This would be stated in a xml file that declares all the jars
> > that struts uses. This xml file could be stored in the maven central
> > repository so that projects that want to use struts 1.1 and all related
> > libraries could declare (maybe call it a "group dependency") this file
> > in it's project.xml and when doing builds maven would pull down the
> > struts dependency list and then check if those libraries have been
> > downloaded to the developers local repository.
> 
> This is what we are trying to achieve by starting to store POMs for
> projects in the repository. As mentioned before, having POM dependencies
> and transitive dependencies isn't a technical problem it's getting all
> the POMs into the repository.
> 
> > We tend to use frameworks
> > that consist of 5+ libraries which all depend on each other.Managing
> > dependencies through "groups" of libraries would ease setting up new
> > projects, and give more structure to dependencies. 
> 
> What you want is transitive dependencies. It's coming, well the code
> actaully exists it's a matter of merging it.
> 
> > I'm not sure of how hard this would be to implement, whether it would be
> > to hack the project.xml or go directly into the maven impl??? I'd be
> > willing to work on this functionality if others (committers +) thought
> > this was a good idea/approach.
> 
> It is a good idea and already works but the code is splayed between
> what's now in HEAD and what's in maven-new. I'm in the process of
> starting a new business but once the infrastructure is done I plan to
> take a little Maven vacation. There is certainly nothing more I would
> like to do than get all the code merged so users can take advantage of
> it. My committment hasn't waned I am just at a critical stage in a new
> endeavour and it takes priority. One thing that I'm hoping will force me
> to complete things is the writing of a book on Maven. I have only
> chatted with some folks at O'Reilly and there is by no means anything
> even remotely certain but I'm hoping I can convince them to let me right
> a book with the help of a couple other folks. I'm hoping for the best.

I hope you write the book, maven is a really awesome technology that
could use a full book to help new users.
> 
> > -Mark
> > 
> > 
> > On Sat, 2003-08-16 at 14:17, Paul Libbrecht wrote:
> > > Is the idea of a dependency role not something that would possibly help 
> > > here ?
> > > 
> > > Aside of basic-roles like "building", "running-tests", etc, a project 
> > > should even be able to specify roles depending on the runtime behaviour 
> > > expected.
> > > 
> > > Dependency inclusion (which is planned in some maven future I thought) 
> > > could then be extended to respect this role.
> > > 
> > > This doesn't answer, however, a possible attribute like "dependency on 
> > > xxx version a to b" which was alluded first.
> > > 
> > > Paul
> > > 
> > > 
> > > Luke Taylor wrote:
> > > > Jason van Zyl wrote:
> > > >> Dependencies are inherited in an aggregate fashion. So if you have
> > > >> common dependencies then you can state them in a parent project. In much
> > > >> the same way the Jelly tag builds are setup.
> > > >>
> > > >>
> > > >>> I did not wish to put all of the depends into a parent project as 
> > > >>> that would force each child project to have additional dependencies 
> > > >>> on its classpath which might not be a good thing, nor do I want each 
> > > >>> and every module to try to downloa

Re: project.xml is a jelly script?

2003-08-17 Thread dion
Mark,

Mark McBride <[EMAIL PROTECTED]> wrote on 17/08/2003 02:11:52 AM:

> My group is currently running into the same problem.What we are doing is
> declaring all our system/lib jars in a projects.xml which all our
> projects extend. This is nice in respect to ensure that everyone is
> building/debugging against the libraries that are in production. We are
> actually using this parent project.xml to document our system
> configuration.
We declare dependencies on a per project basis and use the convergence 
report to stay in synch.

> Another concept that we think would be a good feature of maven is the
> ability to state a group of dependencies, say struts and all it's
> libraries. This would be stated in a xml file that declares all the jars
> that struts uses. This xml file could be stored in the maven central
> repository so that projects that want to use struts 1.1 and all related
> libraries could declare (maybe call it a "group dependency") this file
> in it's project.xml and when doing builds maven would pull down the
> struts dependency list and then check if those libraries have been
> downloaded to the developers local repository.We tend to use frameworks
> that consist of 5+ libraries which all depend on each other.Managing
> dependencies through "groups" of libraries would ease setting up new
> projects, and give more structure to dependencies. 
Transitive dependencies have been discussed and are planned to be 
implemented. All that's missing is a volunteer or time.

> I'm not sure of how hard this would be to implement, whether it would be
> to hack the project.xml or go directly into the maven impl??? I'd be
> willing to work on this functionality if others (committers +) thought
> this was a good idea/approach.
The approach that's been discussed is for a project to list another 
project's 'pom' in it's dependencies and for the dependency verifier/ 
resolver to work out what they are at run time and add them in.

--
dIon Gillard, Multitask Consulting
Blog:  http://blogs.codehaus.org/people/dion/


Re: project.xml is a jelly script?

2003-08-17 Thread dion
Jason Dillon <[EMAIL PROTECTED]> wrote on 15/08/2003 09:30:05 AM:

> Hello, the website says that "project.xml form, is now processed as a 
> Jelly script " 
> (http://maven.apache.org/reference/user-guide.html#POM%20Interpolation 
> ) but it does not appear to be having like it is a jelly script at all.
> 
> Is the user guide not valid?  Is there a special property to enable 
No, it's not.

> this?  I have looked over the source and it does not appear that any 
> jelly fluff is done to the project.xml file.
Interpolation of elements is allowed, using ${pom}.

> IMO I think that it would be very beneficial if it was a jelly script 
> so that Maven in general is more flexible.  I understand not wanting to 
> put much logic into the project.xml, but it would make management of 
> large projects much easier.
Can you give me some use cases? The multiproject plugin was written to 
address exactly these issues.

> Specifically I was looking for a way to define common dependencies for 
> a large project (Apache Geronimo) so I could better manage version 
> numbers of the dependencies.  I did not wish to put all of the depends 
> into a parent project as that would force each child project to have 
> additional dependencies on its classpath which might not be a good 
> thing, nor do I want each and every module to try to download 
> SNAPSHOTS, especially if they do not even need that depend.
This can be done by specifying a parent project using 

> So I thought about using properties like 
> 'dependency.commons-logger.version=1.0.3' and then specify the property 
> as the content for , which works fine if the property is 
> defined in the child modules project.properties, or if the property is 
> in the parent and the child is always invoked through the reactor. 
> This is not the case with Geronimo, so this method fails.
> 
> James and I were chatting about this a tad... I was under the 
> impression that I could use jelly in project.xml (drawn conclusion from 
> web page and some bad tests I made).  He suggested using  xml="../../dependencies.xml"/> and then selecting out dependencies by 
> name and then copying them into the project.xml.  I think this would be 
> very useful and shows where project.xml as a jelly script would be 
> desirable.
Why not just use XML entities?

> I think this is a good idea, but wanted to hear what you guys have to 
> say.
> 
> Also I was talking to James about the problem of versioning 
> dependencies in general and how it would make sense if Maven supported 
> more symbolic names (similar to SNAPSHOT) but which could point to the 
> latest stable release.  It probably makes sense to provide some sort of 
> version alias mechanism, as it becomes problematic to effectively 
> maintain version numbers in a large project.  Take Maven for example, 
> there are a few plugins which use different yet compatible versions of 
> dependencies, which only results in additional overhead.  If all 
> plugins are compatible with a specific version, then it would make 
> sense for them to all use that version.
Yep. See the dependency convergence report as part of the multiproject 
plugin:

http://maven.apache.org/dependency-convergence-report.html

--
dIon Gillard, Multitask Consulting
Blog:  http://blogs.codehaus.org/people/dion/




Re: project.xml is a jelly script?

2003-08-16 Thread Jason van Zyl
On Sat, 2003-08-16 at 12:11, Mark McBride wrote:
> My group is currently running into the same problem.What we are doing is
> declaring all our system/lib jars in a projects.xml which all our
> projects extend. This is nice in respect to ensure that everyone is
> building/debugging against the libraries that are in production. We are
> actually using this parent project.xml to document our system
> configuration.
> 
> The problem we run into is that, like stated earlier in this thread, we
> lose on the meaningfulness of the dependencies documentation in all the
> projects that extend the parent project.xml. Our system library has 50
> jars and many of our application are only using a handful more then the
> standard java server libraries.

What if in the reports you could distinguish between the dependencies
stated for the project directly versus those that are inherited? This
could generalized and methods in the POM could be added to select the
stated versus inherited dependencies.

> Another concept that we think would be a good feature of maven is the
> ability to state a group of dependencies, say struts and all it's
> libraries. 

This actually works in the maven-new code where you do this by stating a
POM of another project as a dependency. And transitive dependencies also
work in maven-new. I've just had zero time of late.

> This would be stated in a xml file that declares all the jars
> that struts uses. This xml file could be stored in the maven central
> repository so that projects that want to use struts 1.1 and all related
> libraries could declare (maybe call it a "group dependency") this file
> in it's project.xml and when doing builds maven would pull down the
> struts dependency list and then check if those libraries have been
> downloaded to the developers local repository.

This is what we are trying to achieve by starting to store POMs for
projects in the repository. As mentioned before, having POM dependencies
and transitive dependencies isn't a technical problem it's getting all
the POMs into the repository.

> We tend to use frameworks
> that consist of 5+ libraries which all depend on each other.Managing
> dependencies through "groups" of libraries would ease setting up new
> projects, and give more structure to dependencies. 

What you want is transitive dependencies. It's coming, well the code
actaully exists it's a matter of merging it.

> I'm not sure of how hard this would be to implement, whether it would be
> to hack the project.xml or go directly into the maven impl??? I'd be
> willing to work on this functionality if others (committers +) thought
> this was a good idea/approach.

It is a good idea and already works but the code is splayed between
what's now in HEAD and what's in maven-new. I'm in the process of
starting a new business but once the infrastructure is done I plan to
take a little Maven vacation. There is certainly nothing more I would
like to do than get all the code merged so users can take advantage of
it. My committment hasn't waned I am just at a critical stage in a new
endeavour and it takes priority. One thing that I'm hoping will force me
to complete things is the writing of a book on Maven. I have only
chatted with some folks at O'Reilly and there is by no means anything
even remotely certain but I'm hoping I can convince them to let me right
a book with the help of a couple other folks. I'm hoping for the best.

> -Mark
> 
> 
> On Sat, 2003-08-16 at 14:17, Paul Libbrecht wrote:
> > Is the idea of a dependency role not something that would possibly help 
> > here ?
> > 
> > Aside of basic-roles like "building", "running-tests", etc, a project 
> > should even be able to specify roles depending on the runtime behaviour 
> > expected.
> > 
> > Dependency inclusion (which is planned in some maven future I thought) 
> > could then be extended to respect this role.
> > 
> > This doesn't answer, however, a possible attribute like "dependency on 
> > xxx version a to b" which was alluded first.
> > 
> > Paul
> > 
> > 
> > Luke Taylor wrote:
> > > Jason van Zyl wrote:
> > >> Dependencies are inherited in an aggregate fashion. So if you have
> > >> common dependencies then you can state them in a parent project. In much
> > >> the same way the Jelly tag builds are setup.
> > >>
> > >>
> > >>> I did not wish to put all of the depends into a parent project as 
> > >>> that would force each child project to have additional dependencies 
> > >>> on its classpath which might not be a good thing, nor do I want each 
> > >>> and every module to try to download SNAPSHOTS, especially if they do 
> > >>> not even need that depend.
> > >>
> > >>
> > >>
> > >> Sorry, don't understand that one. You want a common set of dependencies
> > >> but don't want them in the classpath? What do you want to use those
> > >> common dependencies for?
> > >>
> > > 
> > > I think the problem is that you might want to put shared dependencies 
> > > into a parent project file for a reactor p

Re: project.xml is a jelly script?

2003-08-16 Thread Mark McBride
My group is currently running into the same problem.What we are doing is
declaring all our system/lib jars in a projects.xml which all our
projects extend. This is nice in respect to ensure that everyone is
building/debugging against the libraries that are in production. We are
actually using this parent project.xml to document our system
configuration.

The problem we run into is that, like stated earlier in this thread, we
lose on the meaningfulness of the dependencies documentation in all the
projects that extend the parent project.xml. Our system library has 50
jars and many of our application are only using a handful more then the
standard java server libraries.

Another concept that we think would be a good feature of maven is the
ability to state a group of dependencies, say struts and all it's
libraries. This would be stated in a xml file that declares all the jars
that struts uses. This xml file could be stored in the maven central
repository so that projects that want to use struts 1.1 and all related
libraries could declare (maybe call it a "group dependency") this file
in it's project.xml and when doing builds maven would pull down the
struts dependency list and then check if those libraries have been
downloaded to the developers local repository.We tend to use frameworks
that consist of 5+ libraries which all depend on each other.Managing
dependencies through "groups" of libraries would ease setting up new
projects, and give more structure to dependencies. 

I'm not sure of how hard this would be to implement, whether it would be
to hack the project.xml or go directly into the maven impl??? I'd be
willing to work on this functionality if others (committers +) thought
this was a good idea/approach.

-Mark


On Sat, 2003-08-16 at 14:17, Paul Libbrecht wrote:
> Is the idea of a dependency role not something that would possibly help 
> here ?
> 
> Aside of basic-roles like "building", "running-tests", etc, a project 
> should even be able to specify roles depending on the runtime behaviour 
> expected.
> 
> Dependency inclusion (which is planned in some maven future I thought) 
> could then be extended to respect this role.
> 
> This doesn't answer, however, a possible attribute like "dependency on 
> xxx version a to b" which was alluded first.
> 
> Paul
> 
> 
> Luke Taylor wrote:
> > Jason van Zyl wrote:
> >> Dependencies are inherited in an aggregate fashion. So if you have
> >> common dependencies then you can state them in a parent project. In much
> >> the same way the Jelly tag builds are setup.
> >>
> >>
> >>> I did not wish to put all of the depends into a parent project as 
> >>> that would force each child project to have additional dependencies 
> >>> on its classpath which might not be a good thing, nor do I want each 
> >>> and every module to try to download SNAPSHOTS, especially if they do 
> >>> not even need that depend.
> >>
> >>
> >>
> >> Sorry, don't understand that one. You want a common set of dependencies
> >> but don't want them in the classpath? What do you want to use those
> >> common dependencies for?
> >>
> > 
> > I think the problem is that you might want to put shared dependencies 
> > into a parent project file for a reactor project which has, for example, 
> > 20 sub-projects/components. But if perhaps only 10 of them actually use 
> > the dependencies, they will still have to be available for building the 
> > others individually. Of course, you can specify the dependencies 
> > individually in each component but then you have to maintain all the 
> > versions separately even though you want to use the same version 
> > throughout. Does the standard artifact version stuff you mentioned cover 
> > this scenario?
> > 
> > The dependency list is also useful high-level documentation on what is 
> > required for each component and how it works, but this information is 
> > lost if it is put in the parent file.
> > 
> > Luke.
> > 
> > 
> 
> 
> 
> -
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: project.xml is a jelly script?

2003-08-16 Thread Luke Taylor
Jason van Zyl wrote:

On Sat, 2003-08-16 at 16:35, Luke Taylor wrote:

Jason van Zyl wrote:

Dependencies are inherited in an aggregate fashion. So if you have
common dependencies then you can state them in a parent project. In much
the same way the Jelly tag builds are setup.


I did not wish to put all of the depends 
into a parent project as that would force each child project to have 
additional dependencies on its classpath which might not be a good 
thing, nor do I want each and every module to try to download 
SNAPSHOTS, especially if they do not even need that depend.


Sorry, don't understand that one. You want a common set of dependencies
but don't want them in the classpath? What do you want to use those
common dependencies for?
I think the problem is that you might want to put shared dependencies 
into a parent project file for a reactor project which has, for example, 
20 sub-projects/components. But if perhaps only 10 of them actually use 
the dependencies, they will still have to be available for building the 
others individually. 


Ok, that I don't quite understand. There is just a fear of polluting the
classpath?
I can't speak for the Geronimo project. From my point of view it's not a 
huge issue (downloading extra jars certainly isn't a problem), but I 
prefer to see the dependencies listed per-component. The version 
properties you mentioned will probably allow that without any problems.



Of course, you can specify the dependencies 
individually in each component but then you have to maintain all the 
versions separately even though you want to use the same version 
throughout. Does the standard artifact version stuff you mentioned cover 
this scenario?


Yes, if you override the version of an artifact at build.properties
level you can control the versioning. This mechanism is far from perfect
and doesn't work because of some inheritance problems in general, in
this particular case properties. The code in HEAD deals with this much
better but is not for general consumption at the moment.
OK, great. That sounds pretty useful. So you don't have to specify your 
own version properties. Does that follow a kind of

..

syntax?

I realise inheritance of properties is still a bit hosed. If it will 
work at some stage then that's worth knowing :).



The dependency list is also useful high-level documentation on what is 
required for each component and how it works, but this information is 
lost if it is put in the parent file.


It shouldn't be. I intentionally made the xdoc plugin to work with the
resultant POM after any transformations due to inheritance and/or
interpolation. If this is not the case now then someone whacked it.
I just actually checked with a component that inherits and the inherited
dependencies do indeed show up in the dependency report.

OK, slight misunderstanding. I shouldn't have said that the info is 
"lost". I meant that the global dependencies will show up as 
requirements for all the components, rather than just those to which 
they actually apply. So the detail is "lost" rather than the actual 
information - all you know is that a subset of the components use the 
dependencies in the root POM.

Thanks,

Luke.

--
 Luke Taylor.  Monkey Machine Ltd.
 PGP Key ID: 0x57E9523Chttp://www.monkeymachine.ltd.uk


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


Re: project.xml is a jelly script?

2003-08-16 Thread Jason van Zyl
On Sat, 2003-08-16 at 16:35, Luke Taylor wrote:
> Jason van Zyl wrote:
> > 
> > Dependencies are inherited in an aggregate fashion. So if you have
> > common dependencies then you can state them in a parent project. In much
> > the same way the Jelly tag builds are setup.
> > 
> > 
> >>I did not wish to put all of the depends 
> >>into a parent project as that would force each child project to have 
> >>additional dependencies on its classpath which might not be a good 
> >>thing, nor do I want each and every module to try to download 
> >>SNAPSHOTS, especially if they do not even need that depend.
> > 
> > 
> > Sorry, don't understand that one. You want a common set of dependencies
> > but don't want them in the classpath? What do you want to use those
> > common dependencies for?
> > 
> 
> I think the problem is that you might want to put shared dependencies 
> into a parent project file for a reactor project which has, for example, 
> 20 sub-projects/components. But if perhaps only 10 of them actually use 
> the dependencies, they will still have to be available for building the 
> others individually. 

Ok, that I don't quite understand. There is just a fear of polluting the
classpath?

> Of course, you can specify the dependencies 
> individually in each component but then you have to maintain all the 
> versions separately even though you want to use the same version 
> throughout. Does the standard artifact version stuff you mentioned cover 
> this scenario?

Yes, if you override the version of an artifact at build.properties
level you can control the versioning. This mechanism is far from perfect
and doesn't work because of some inheritance problems in general, in
this particular case properties. The code in HEAD deals with this much
better but is not for general consumption at the moment.

> The dependency list is also useful high-level documentation on what is 
> required for each component and how it works, but this information is 
> lost if it is put in the parent file.

It shouldn't be. I intentionally made the xdoc plugin to work with the
resultant POM after any transformations due to inheritance and/or
interpolation. If this is not the case now then someone whacked it.

I just actually checked with a component that inherits and the inherited
dependencies do indeed show up in the dependency report.

> Luke.
-- 
jvz.

Jason van Zyl
[EMAIL PROTECTED]
http://tambora.zenplex.org

In short, man creates for himself a new religion of a rational
and technical order to justify his work and to be justified in it.
  
  -- Jacques Ellul, The Technological Society


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: project.xml is a jelly script?

2003-08-16 Thread Paul Libbrecht
Is the idea of a dependency role not something that would possibly help 
here ?

Aside of basic-roles like "building", "running-tests", etc, a project 
should even be able to specify roles depending on the runtime behaviour 
expected.

Dependency inclusion (which is planned in some maven future I thought) 
could then be extended to respect this role.

This doesn't answer, however, a possible attribute like "dependency on 
xxx version a to b" which was alluded first.

Paul

Luke Taylor wrote:
Jason van Zyl wrote:
Dependencies are inherited in an aggregate fashion. So if you have
common dependencies then you can state them in a parent project. In much
the same way the Jelly tag builds are setup.

I did not wish to put all of the depends into a parent project as 
that would force each child project to have additional dependencies 
on its classpath which might not be a good thing, nor do I want each 
and every module to try to download SNAPSHOTS, especially if they do 
not even need that depend.


Sorry, don't understand that one. You want a common set of dependencies
but don't want them in the classpath? What do you want to use those
common dependencies for?
I think the problem is that you might want to put shared dependencies 
into a parent project file for a reactor project which has, for example, 
20 sub-projects/components. But if perhaps only 10 of them actually use 
the dependencies, they will still have to be available for building the 
others individually. Of course, you can specify the dependencies 
individually in each component but then you have to maintain all the 
versions separately even though you want to use the same version 
throughout. Does the standard artifact version stuff you mentioned cover 
this scenario?

The dependency list is also useful high-level documentation on what is 
required for each component and how it works, but this information is 
lost if it is put in the parent file.

Luke.




-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


Re: project.xml is a jelly script?

2003-08-16 Thread Luke Taylor
Jason van Zyl wrote:
Dependencies are inherited in an aggregate fashion. So if you have
common dependencies then you can state them in a parent project. In much
the same way the Jelly tag builds are setup.

I did not wish to put all of the depends 
into a parent project as that would force each child project to have 
additional dependencies on its classpath which might not be a good 
thing, nor do I want each and every module to try to download 
SNAPSHOTS, especially if they do not even need that depend.


Sorry, don't understand that one. You want a common set of dependencies
but don't want them in the classpath? What do you want to use those
common dependencies for?
I think the problem is that you might want to put shared dependencies 
into a parent project file for a reactor project which has, for example, 
20 sub-projects/components. But if perhaps only 10 of them actually use 
the dependencies, they will still have to be available for building the 
others individually. Of course, you can specify the dependencies 
individually in each component but then you have to maintain all the 
versions separately even though you want to use the same version 
throughout. Does the standard artifact version stuff you mentioned cover 
this scenario?

The dependency list is also useful high-level documentation on what is 
required for each component and how it works, but this information is 
lost if it is put in the parent file.

Luke.

--
 Luke Taylor.  Monkey Machine Ltd.
 PGP Key ID: 0x57E9523Chttp://www.monkeymachine.ltd.uk


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


Re: project.xml is a jelly script?

2003-08-16 Thread Jason van Zyl
On Thu, 2003-08-14 at 19:30, Jason Dillon wrote:
> Hello, the website says that "project.xml form, is now processed as a 
> Jelly script " 
> (http://maven.apache.org/reference/user-guide.html#POM%20Interpolation
> ) but it does not appear to be having like it is a jelly script at all.

Yes, I removed the Jelly script stuff a while ago but the interpolation
remains. I decided it was probably a very bad idea to bind the
descriptor to Jelly. I still feel that.

> Is the user guide not valid?  Is there a special property to enable 
> this?  I have looked over the source and it does not appear that any 
> jelly fluff is done to the project.xml file.
> 
> IMO I think that it would be very beneficial if it was a jelly script 
> so that Maven in general is more flexible.  I understand not wanting to 
> put much logic into the project.xml, but it would make management of 
> large projects much easier.

I think the use cases would have to surface before making the
project.xml file a jelly script. I honestly think I jumped the gun on
that one.

> Specifically I was looking for a way to define common dependencies for 
> a large project (Apache Geronimo) so I could better manage version 
> numbers of the dependencies.  

Dependencies are inherited in an aggregate fashion. So if you have
common dependencies then you can state them in a parent project. In much
the same way the Jelly tag builds are setup.

> I did not wish to put all of the depends 
> into a parent project as that would force each child project to have 
> additional dependencies on its classpath which might not be a good 
> thing, nor do I want each and every module to try to download 
> SNAPSHOTS, especially if they do not even need that depend.

Sorry, don't understand that one. You want a common set of dependencies
but don't want them in the classpath? What do you want to use those
common dependencies for?

> So I thought about using properties like 
> 'dependency.commons-logger.version=1.0.3' and then specify the property 
> as the content for , which works fine if the property is 
> defined in the child modules project.properties, or if the property is 
> in the parent and the child is always invoked through the reactor.  
> This is not the case with Geronimo, so this method fails.

Have you looked at the jar overrided feature which allows you to set a
standard version of an artifact?

> James and I were chatting about this a tad... I was under the 
> impression that I could use jelly in project.xml (drawn conclusion from 
> web page and some bad tests I made).  He suggested using  xml="../../dependencies.xml"/> and then selecting out dependencies by 
> name and then copying them into the project.xml.  I think this would be 
> very useful and shows where project.xml as a jelly script would be 
> desirable.
> 
> I think this is a good idea, but wanted to hear what you guys have to 
> say.

I think it would be generally undesirable. I just don't want to see
Jelly in the project XML directly. But I wouldn't be opposed to some
sort of optional filtering mechanism so you could use Jelly or anything
else you wanted to.

> Also I was talking to James about the problem of versioning 
> dependencies in general and how it would make sense if Maven supported 
> more symbolic names (similar to SNAPSHOT) but which could point to the 
> latest stable release.  

The idea of RELEASE has been discussed, just not implemented. You can
put it in JIRA so we can track it.

> It probably makes sense to provide some sort of 
> version alias mechanism, as it becomes problematic to effectively 
> maintain version numbers in a large project.  Take Maven for example, 
> there are a few plugins which use different yet compatible versions of 
> dependencies, which only results in additional overhead.  If all 
> plugins are compatible with a specific version, then it would make 
> sense for them to all use that version.

Within Maven it's more the classloader isolation problem. The versions
should be allowed to vary. But in the case of Geronimo if you were
attempting to use the same version overall you can use the jar override
feature.

> Anyways I have been up for way too long, it was light when I woke up 
> and it is light again, so I am gonna crash now.
> 
> Cheers,
> 
> --jason
-- 


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: project.xml is a jelly script?

2003-08-15 Thread Luke Taylor
Jason Dillon wrote:
So I thought about using properties like 
'dependency.commons-logger.version=1.0.3' and then specify the property 
as the content for , which works fine if the property is 
defined in the child modules project.properties, or if the property is 
in the parent and the child is always invoked through the reactor.  This 
is not the case with Geronimo, so this method fails.

I remember thinking this would be a good idea too (using properties to 
specify versions for use in subprojects. I think Jason (VZ) said 
recently that the intention is for the parent properties to be inherited 
in any case, though that may not be the case with the current version of 
Maven. So in theory this should work OK.

Luke.

--
 Luke Taylor.  Monkey Machine Ltd.
 PGP Key ID: 0x57E9523Chttp://www.monkeymachine.ltd.uk


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


Re: project.xml is a jelly script?

2003-08-15 Thread Paul Libbrecht
Jason,

To my taste, this looks awesomely great!
(though dangerous, as said)
Your ideas on implications for management of dependencies are clearly 
something neat.  For example, we have a dependency.xml for each 
dependency (with a bunch of documentation)

I see other implications in the sense of a project.xml being actually a 
shadow of a project in another language, for example, most projects 
built from GUI tools. (I think it would enable for example an Apple's 
ProjectBuilder file to have a shadow maven project).

One essential thing here, is, however, how much of jelly taglibs we have 
in there. jelly:xml is clearly needed, but parsers for other formats as 
well... would this be dynamic as a good jelly-runner (still not 
existing) would involve ?

Thats essentially great news to my taste!

Paul

PS: the example provided in the website seems to invoke delicate 
possibly recursive resolution of pom... will there be any policy about 
that ? It might be very parse-dependent (well, jelly dependent then).

Jason Dillon wrote:
Hello, the website says that "project.xml form, is now processed as a 
Jelly script " 
(http://maven.apache.org/reference/user-guide.html#POM%20Interpolation ) 
but it does not appear to be having like it is a jelly script at all.

Is the user guide not valid?  Is there a special property to enable 
this?  I have looked over the source and it does not appear that any 
jelly fluff is done to the project.xml file.

IMO I think that it would be very beneficial if it was a jelly script so 
that Maven in general is more flexible.  I understand not wanting to put 
much logic into the project.xml, but it would make management of large 
projects much easier.

Specifically I was looking for a way to define common dependencies for a 
large project (Apache Geronimo) so I could better manage version numbers 
of the dependencies.  I did not wish to put all of the depends into a 
parent project as that would force each child project to have additional 
dependencies on its classpath which might not be a good thing, nor do I 
want each and every module to try to download SNAPSHOTS, especially if 
they do not even need that depend.

So I thought about using properties like 
'dependency.commons-logger.version=1.0.3' and then specify the property 
as the content for , which works fine if the property is 
defined in the child modules project.properties, or if the property is 
in the parent and the child is always invoked through the reactor.  This 
is not the case with Geronimo, so this method fails.

James and I were chatting about this a tad... I was under the impression 
that I could use jelly in project.xml (drawn conclusion from web page 
and some bad tests I made).  He suggested using  and then selecting out dependencies by 
name and then copying them into the project.xml.  I think this would be 
very useful and shows where project.xml as a jelly script would be 
desirable.

I think this is a good idea, but wanted to hear what you guys have to say.

Also I was talking to James about the problem of versioning dependencies 
in general and how it would make sense if Maven supported more symbolic 
names (similar to SNAPSHOT) but which could point to the latest stable 
release.  It probably makes sense to provide some sort of version alias 
mechanism, as it becomes problematic to effectively maintain version 
numbers in a large project.  Take Maven for example, there are a few 
plugins which use different yet compatible versions of dependencies, 
which only results in additional overhead.  If all plugins are 
compatible with a specific version, then it would make sense for them to 
all use that version.

Anyways I have been up for way too long, it was light when I woke up and 
it is light again, so I am gonna crash now.

Cheers,

--jason


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


project.xml is a jelly script?

2003-08-15 Thread Jason Dillon
Hello, the website says that "project.xml form, is now processed as a 
Jelly script " 
(http://maven.apache.org/reference/user-guide.html#POM%20Interpolation 
) but it does not appear to be having like it is a jelly script at all.

Is the user guide not valid?  Is there a special property to enable 
this?  I have looked over the source and it does not appear that any 
jelly fluff is done to the project.xml file.

IMO I think that it would be very beneficial if it was a jelly script 
so that Maven in general is more flexible.  I understand not wanting to 
put much logic into the project.xml, but it would make management of 
large projects much easier.

Specifically I was looking for a way to define common dependencies for 
a large project (Apache Geronimo) so I could better manage version 
numbers of the dependencies.  I did not wish to put all of the depends 
into a parent project as that would force each child project to have 
additional dependencies on its classpath which might not be a good 
thing, nor do I want each and every module to try to download 
SNAPSHOTS, especially if they do not even need that depend.

So I thought about using properties like 
'dependency.commons-logger.version=1.0.3' and then specify the property 
as the content for , which works fine if the property is 
defined in the child modules project.properties, or if the property is 
in the parent and the child is always invoked through the reactor.  
This is not the case with Geronimo, so this method fails.

James and I were chatting about this a tad... I was under the 
impression that I could use jelly in project.xml (drawn conclusion from 
web page and some bad tests I made).  He suggested using  and then selecting out dependencies by 
name and then copying them into the project.xml.  I think this would be 
very useful and shows where project.xml as a jelly script would be 
desirable.

I think this is a good idea, but wanted to hear what you guys have to 
say.

Also I was talking to James about the problem of versioning 
dependencies in general and how it would make sense if Maven supported 
more symbolic names (similar to SNAPSHOT) but which could point to the 
latest stable release.  It probably makes sense to provide some sort of 
version alias mechanism, as it becomes problematic to effectively 
maintain version numbers in a large project.  Take Maven for example, 
there are a few plugins which use different yet compatible versions of 
dependencies, which only results in additional overhead.  If all 
plugins are compatible with a specific version, then it would make 
sense for them to all use that version.

Anyways I have been up for way too long, it was light when I woke up 
and it is light again, so I am gonna crash now.

Cheers,

--jason