After much messing about with compliance tests thinking that the reorg
had broken them (only to find that there's a real issue there
TUSCANY-3709) I've checked in the mods to demonstrate a structure
which I think has most of the things different people have said they
want in the distro. Here are the highlights...

Source
=====

distribution/
  all/
    pom.xml
      - uses our maven bundle plugin to general modules and to generate
        meta-data in features
  *.aggregation
         - aggregate jars for JSE user convenience b
           asically Ant's shade jars but without the detailed selection of
           content yet. Ant's done this before so is more likely to get it
           right
         - no manifests at the moment. Potentially difficult to add
           and don't know if we want to make these work in OSGi
         - based on either *-runtime collections in features/ or
           *-runtime in modules/
         - I don't mind if these live here or somewhere else

features/
  all/
    - modified to list all dependencies explicitly as I wanted to understand
      what was in it
  *-runtime
    - incremental function supporting the base + extension pattern
    - this is different from the features in that the features are really
      stand along collections.
    - I don't know whether these belong in features
  The remaining features
    - haven't changed them

modules/
   binding-rmi-runtime (+dependencies)
    pom.xml
      - have changed to refer to *-runtime as an example
   binding-ws-runtime-axis2
    pom.xml
      - started to change to refere to *-runtime but couldn't complete
        as it mean changing too many other things

itest/
   builder
     pom.xml
       - changed to refer to *-runtime as an example
   compliance
     assembly
        pom.xml
         - changed to refer to *-runtime as an example


Distro
======

modules/
 - as before
features/
 all meta-data at the root level (would quite like to put this under
an "all" diretory)
 *-runtime
    - meta data for bae + extension patern. Includes, for example,
      for base runtime...
        build-path.xml
        tuscany-base-runtime-manifest.jar
        which-jars
lib/
  tuscany-base-runtime-aggregation-2.0-SNAPSHOT.jar
  tuscany-binding-rmi-runtime-aggregation-2.0-SNAPSHOT.jar
  tuscany-binding-ws-runtime-axis2-aggregation-2.0-SNAPSHOT.jar
  tuscany-sca-api-2.0-SNAPSHOT.jar
  etc.
    - aggregate jars including all you need to do to run base
      extensions can be added as required
    - The ws jar is bigger than required as the ws runtime pom is not
sorted properly yet.
    - I left the api jar here as something referred to it but
      don't think we really need it?

So effectively we support several approaches to using the runtime in
one distribution....

OSGI - load all the jars from modules
JSE - Ant paths, manifest, standalone jars.

I don't think we also need to provide standalone jars that don't
include dependencies as if people want to pick and choose they can
fall back to the modules directory and the "what-jars" list.

There is necessarily duplication between the standalone jars and
modules. I can live with this for the beta (I'm assuming that we're
not going to produce a full set of standalone jars as a limited set
probably reaches 80% of the users). This hopefully keeps people who
what to see one solution or the other happy. We can stand back from
the beta and decide whether this works. We may decide to go with one
approach or the other, have multiple binary releases or push forward
with something like this.

As it's checked in now you can build it yourself.

Regards

Simon
-- 
Apache Tuscany committer: tuscany.apache.org
Co-author of a book about Tuscany and SCA: tuscanyinaction.com

Reply via email to