Carsten Ziegeler wrote:

Daniel Fagerstrom wrote:
...

blockx + core - the real block
     + webapp - required webapp part like configuration etc.)
     + samples - the samples
Factoring out the samples is good but I don't understand the split into
core and samples, care to explain?
Sure, core is perhaps a misleading nome, it's the java code, or perhaps
we have like Ralph suggested:
blockx - api
      - impl
      - test
      - webapp
      - samples
While I agree in principle we must understand that this will create around 250 blocks, which require very regular structure and scripted update and maintainance operations. While we might get problems with circular dependencies, that must be solved with split in api and impl when we split core I don't think there are any such problems for the current blocks. So we can take one step at a time.

Also we should take, at least to some degree, take real blocks and OSGi into account.In OSGi bundles you describe what is the api by exporting the api packages in the manifest. Non exported packages are then implici´tely regarded as implementation. For unit tests I'm not certain what is the best solution, if one put the test into a separate bundle, the implementation bundle must export all packages that are tested. So probably it is better to put the unit tests in the implementation bundle, it can still be in a separtate directory hierarchy and jar if we want to. For the webapp stuff, I assume that you mean such things that we are going to put in COB-INF/block.xml.

Now, we don't have to take all future requirements into account, it is of course better to do something that works now and modify it when needed. My main message, I guess, is that we shouldn't do splits like the one suggested above, until we know that we need it.

Splitting up the current code base into a structure like this is just
moving directories and files. So that's really easy.
I think we should then write a little m2 plugin that deploys a block
into a build webapp:
- jars are copied to WEB-INF/lib
- configuration to WEB-INF/xconf
- other resources are copied as well
- new sitemap components are added to the main sitemap
Can't this be handled by wildcard inclusion from component configurations in some catalog, so that we get rid of the snippet insertions.
Currently we only need patching the main sitemap and the web.xml - we
can't do anything about web.xml for some stuff. 2.2 can read it's
configuration from property files instead of parameters in web.xml, so
we can remove most from web.xml.
We can use wildcard inclusion in the main sitemap as well.
Good.

Anyway, if we split up the core into several parts,
this will break the Ant build script. Of course we could now change the
ant script as well, but that's imho
to much energy put at the wrong place.
What about starting to get the blocks compiling with m2 before starting to split the core, then we minimaize the time when not the complete Cocoon compile.

I think compiling a block with m2 is not a problem at all, just define a
pom with all dependencies and invoke "m2 install" :) Now, it would be
great if someone would start adding poms with dependencies to the blocks...
Ok, get the message ;)

Some thinking and planning is IMO needed though. We allready have all (or most) dependency info for blocks in gump.xml. Keeping a global gump.xml and block local POMs in synch doesn't sound like that much fun.

So, could we move the block parts of the global gump.xml into the blocks, so that we have the POMs and gump.xml at the same place. Or better, can we generate the gump.xml from the POMs. Or even better, is there some integration between gump and Maven, so that Gump can use the POMs?

/Daniel

Reply via email to