On Wed, Oct 6, 2010 at 10:02 AM, Simon Laws <[email protected]> wrote: > 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. >
Great. I don't think the base-runtime should include OSGi or Jetty as that drags in dependencies not needed in many environments. It also shouldn't include all those dependencies that are included as standard in Java 1.6. I still think base-runtime should include most things that can be included without draging in extra dependencies as well as things where it makes sense to have the transitive dependencies be provided or optional scope. So implementation-web could be included as implementation-java is. Another example is http host support, there's host-jetty and host-webapp, both of those need the servlet api and host-jetty needs jetty, the servlet api can be provided scope as that will work for both cases and jetty could be optional so its not included by default. ..ant
