On Monday, Sep 29, 2003, at 22:03 Europe/Rome, Geoff Howard wrote:
Upayavira wrote:Geoff Howard wrote:Written before Stefano's response - sorry for the duplication if any. No time to edit now...If block A defines a component with a method getBlah, and block B has a component that uses that method, how do you compile block B without having the source for block A available? Surely there is _some_ compile time consideration to be made?
Berin Loritsch wrote:
It appears the dust has settled, and it looks like ANT has been decided upon
as the way to go. That's OK with me. The questions I now have are in regards
to the things that I perceived Maven would help with.
I didn't think it was quite that settled, but this is a good part of the discussion either way.
1) Dependency resolution. Let's face it, blocks will depend on other blocks.
That's OK, they're supposed to. The question is for the third party block
developer. How are they going to find the dependencies that they need, or
publish them?
As I understand it, this is a matter of block librarian implementation, and isn't a build consideration. Blocks depend on other blocks only through declared component resolution and pipeline based resource exposure. So, compiling a block (and therefore its build) doesn't need these other implementations to be resolved. Only the deploy step needs them present and that's the domain of the block librarian and block deploy tool isn't it?
DOH! Yes, you're right - I took the first point too far.
nah
I'm still wrapping my head around the blocks concept and as my brain shifts, things that should be obvious are not necessarily so anymore.
yep, the paradigm is changing a lot. This is another reason to avoid dependencies on system which are not following our same paradigm shifts.
As Stefano seemed to imply though it may be the block librarian in the end that will handle this.
exactly. for example, if
http://cocoon.apache.org/blocks/1 --(implements)--> http://cocoon.apache.org/blocks/a
the builder can ask the librarian for
http://cocoon.apache.org/a?interfaces
and receive as a response a list of URLs such as
http://cocoon.apache.org/a/org/apache/cocoon/a/Whatever.java http://cocoon.apache.org/a/org/apache/cocoon/a/SomethingElse.java
that are downloaded in the right location (the block ID is removed to get the base of the java source) and compiled.
Note: the above works for polymorphic and direct dependencies (ie. blocks which do not expose a behavior)
Now, a valid question is whether maven, ant or
anything else is a good base for the block librarian, and that might be.
I doubt so as you see from above, our needs will be very specific and designed to be downloadable from the web.
also, I would love to have the block librarian implemented as a cocoon block itself ;-)
-- Stefano.
