I've now checked in two new modules in the features directory...

tuscany-core-runtime
tuscany-base-runtime

The core-runtime is the set modules required to implement extensions
(exact set still TBD as there's probably too much in there now)
The base-runtime is core-runtime + the modules required for a minimum
runtime, i.e impl.java + local wiring. (this includes OSGi runtime
stuff at the moment. We may want a base specifically targetting OSGi).

I've made some changes to binding-rmi and binding-ws to demonstrate
how these would be used in the runtime. E.g. the binding-rmi model pom
dependencies are now....

    <dependencies>

        <dependency>
            <groupId>org.apache.tuscany.sca</groupId>
            <artifactId>tuscany-core-runtime</artifactId>
            <version>2.0-SNAPSHOT</version>
            <type>pom</type>
            <scope>provided</scope>
        </dependency>

    </dependencies>


While the binding-rmi-runtime dependencies are...

    <dependencies>

        <dependency>
            <groupId>org.apache.tuscany.sca</groupId>
            <artifactId>tuscany-core-runtime</artifactId>
            <version>2.0-SNAPSHOT</version>
            <type>pom</type>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>org.apache.tuscany.sca</groupId>
            <artifactId>tuscany-binding-rmi</artifactId>
            <version>2.0-SNAPSHOT</version>
        </dependency>

        <dependency>
            <groupId>org.apache.tuscany.sca</groupId>
            <artifactId>tuscany-host-rmi</artifactId>
            <version>2.0-SNAPSHOT</version>
        </dependency>

         <dependency>
            <groupId>org.apache.tuscany.sca</groupId>
            <artifactId>tuscany-base-runtime</artifactId>
            <version>2.0-SNAPSHOT</version>
            <type>pom</type>
            <scope>test</scope>
        </dependency>

    </dependencies>

This leads to the following collections of jars....

core-runtime

not shipped independently as the user can't do anything with it

base-runtime

XmlSchema-1.4.3.jar
activation-1.1/activation-1.1.jar
asm-3.1/asm-3.1.jar
cglib-2.2/cglib-2.2.jar
commons-cli-1.2.jar
geronimo-stax-api_1.0_spec-1.0.1.jar
jaxb-api-2.1/jaxb-api-2.1.jar
jaxb-impl-2.1.12/jaxb-impl-2.1.12.jar
jaxws-api-2.1/jaxws-api-2.1.jar
jetty-6.1.19.jar
jetty-util-6.1.19.jar
jsr181-api-1.0-MR1/jsr181-api-1.0-MR1.jar
jsr250-api-1.0/jsr250-api-1.0.jar
osgi-3.5.0-v20090520.jar
services-3.2.0-v20090520-1800.jar
servlet-api-2.5/servlet-api-2.5.jar
tuscany-assembly-2.0-SNAPSHOT.jar
tuscany-assembly-xml-2.0-SNAPSHOT.jar
tuscany-assembly-xsd-2.0-SNAPSHOT.jar
tuscany-binding-sca-runtime-2.0-SNAPSHOT.jar
tuscany-binding-ws-2.0-SNAPSHOT.jar
tuscany-binding-ws-wsdlgen-2.0-SNAPSHOT.jar
tuscany-builder-2.0-SNAPSHOT.jar
tuscany-common-java-2.0-SNAPSHOT.jar
tuscany-common-xml-2.0-SNAPSHOT.jar
tuscany-contribution-2.0-SNAPSHOT.jar
tuscany-contribution-osgi-2.0-SNAPSHOT.jar
tuscany-core-2.0-SNAPSHOT.jar
tuscany-core-databinding-2.0-SNAPSHOT.jar
tuscany-core-spi-2.0-SNAPSHOT.jar
tuscany-databinding-2.0-SNAPSHOT.jar
tuscany-databinding-jaxb-2.0-SNAPSHOT.jar
tuscany-deployment-2.0-SNAPSHOT.jar
tuscany-extensibility-2.0-SNAPSHOT.jar
tuscany-extensibility-equinox-2.0-SNAPSHOT.jar
tuscany-host-http-2.0-SNAPSHOT.jar
tuscany-host-jetty-2.0-SNAPSHOT.jar
tuscany-implementation-java-2.0-SNAPSHOT.jar
tuscany-implementation-java-runtime-2.0-SNAPSHOT.jar
tuscany-implementation-osgi-2.0-SNAPSHOT.jar
tuscany-interface-java-2.0-SNAPSHOT.jar
tuscany-interface-java-jaxws-2.0-SNAPSHOT.jar
tuscany-interface-wsdl-2.0-SNAPSHOT.jar
tuscany-monitor-2.0-SNAPSHOT.jar
tuscany-node-api-2.0-SNAPSHOT.jar
tuscany-node-impl-2.0-SNAPSHOT.jar
tuscany-node-impl-osgi-2.0-SNAPSHOT.jar
tuscany-node-launcher-2.0-SNAPSHOT.jar
tuscany-node-launcher-equinox-2.0-SNAPSHOT.jar
tuscany-policy-security-2.0-SNAPSHOT.jar
tuscany-sca-api-2.0-SNAPSHOT.jar
tuscany-xsd-2.0-SNAPSHOT.jar
wsdl4j-1.6.2/wsdl4j-1.6.2.jar
wstx-asl-3.2.6/wstx-asl-3.2.6.jar

binding-rmi-runtime

tuscany-binding-rmi-2.0-SNAPSHOT.jar
tuscany-binding-rmi-runtime-2.0-SNAPSHOT.jar
tuscany-host-rmi-2.0-SNAPSHOT.jar

The binding-ws-runtime-axis dependency list is not as clean yet as I
had to leave the wsdlgen dependency in lest I break the majority of
the itests. The fix is to have the itests refer to base-runtime as
well. Here's an example of the builder itest converted to use
base-runtime.


    <dependencies>
         <dependency>
            <groupId>org.apache.tuscany.sca</groupId>
            <artifactId>tuscany-base-runtime</artifactId>
            <version>2.0-SNAPSHOT</version>
            <type>pom</type>
        </dependency>

         <dependency>
            <groupId>org.apache.tuscany.sca</groupId>
            <artifactId>tuscany-binding-ws-runtime-axis2</artifactId>
            <version>2.0-SNAPSHOT</version>
        </dependency>

        <dependency>
            <groupId>xerces</groupId>
            <artifactId>xercesImpl</artifactId>
            <version>2.8.1</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

However I didn't want to do it all at once.

I will make one observation from doing this and that's that is feels
more orderly and predictable when constructing poms. Looking at what
we have currently across the projects the sets of dependencies
included seems essentially random to the uninitiated.

I'm going to take a look and see how aggregate jars fit into this.
This may just mean turning the base-runtime pom into a jar as per
Ant's shaded project. If we want to repeat this for the individual
extensions I expect we either need to do the same or use the bundle
plugin's ability to create aggregate jars.

Simon

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

Reply via email to