[ 
https://issues.apache.org/jira/browse/TUSCANY-3727?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12921406#action_12921406
 ] 

Simon Laws commented on TUSCANY-3727:
-------------------------------------

There's a human readable file, called "which-jars", that can be generated by 
our maven-bundle-plugin which lists the jars that are contained in any 
particular "collection" whether that be a feature or any other kind of pom 
described collection, e.g. one of the *-runtime poms from modules or one of the 
features that collects together dependencies required to run a binding or 
implementation extension. 

The contents of the binding-rmi which-jars file is, for example, 

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

This clarity depends on being careful how the binding-rmi-runtime pom is 
configured. It's dependencies are specified as follows...

    <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>
        
        .....

Which clearly says that I need all the core Tuscany dependencies but that they 
will be provided elsewhere by the runtime. This means that the code that 
generates the which-jars file doesn't see these dependencies and hence 
generates the short list above. 

Now there isn't actually a which-jars list for the core dependencies, because 
you can't  run anything with it on its own (although maybe we should provide it 
for completeness in case people want to know what provides the SPI). Current 
the core is wrapped up in the base runtime which adds on top of the core the 
minimal base runtime artifacts required to run Tuscany. Currently the 
base-runtime which-jars looks like...

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
jsr181-api-1.0-MR1/jsr181-api-1.0-MR1.jar
jsr250-api-1.0/jsr250-api-1.0.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-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-host-http-2.0-SNAPSHOT.jar
tuscany-host-webapp-2.0-SNAPSHOT.jar
tuscany-implementation-java-2.0-SNAPSHOT.jar
tuscany-implementation-java-runtime-2.0-SNAPSHOT.jar
tuscany-implementation-web-2.0-SNAPSHOT.jar
tuscany-implementation-web-runtime-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-launcher-2.0-SNAPSHOT.jar
tuscany-policy-security-2.0-SNAPSHOT.jar
tuscany-sca-api-2.0-SNAPSHOT.jar
tuscany-sca-client-impl-2.0-SNAPSHOT.jar
tuscany-xsd-2.0-SNAPSHOT.jar
wsdl4j-1.6.2/wsdl4j-1.6.2.jar
wstx-asl-3.2.4/wstx-asl-3.2.4.jar

Not sure that's precisely the right list but we'll increment on it. 

Now, having said all this, most of the runtime module poms are not so carefully 
constructed or haven't been converted over to base + extensions at all. This is 
not really a problem in that it doesn't stop anything working but It's not very 
neat for our users. For example, I started converting binding-ws-runtime-axis2 
as follows...

        <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-ws-wsdlgen</artifactId>
            <version>2.0-SNAPSHOT</version>
        </dependency>     
              
        <dependency>
            <groupId>org.apache.tuscany.sca</groupId>
            <artifactId>tuscany-policy-security</artifactId>
            <version>2.0-SNAPSHOT</version>
        </dependency>  
   
        ....

Note that tuscany-binding-ws-wsdlgen is now in base and should be provided. 
However making this change means changing most itests to follow the same 
pattern and, at the time, I didn't want to take that step until we'd got the 
approach working (which I think it is now). Hence the binding-ws-runtime-axis2 
which-jars file looks like....

XmlSchema-1.4.3.jar
activation-1.1/activation-1.1.jar
annogen-0.1.0/annogen-0.1.0.jar
asm-3.1/asm-3.1.jar
axiom-api-1.2.8/axiom-api-1.2.8.jar
axiom-dom-1.2.8.jar
axiom-impl-1.2.8.jar
axis-ant-1.4/axis-ant-1.4.jar
axis2-codegen-1.5.1/axis2-codegen-1.5.1.jar
axis2-java2wsdl-1.5.1/axis2-java2wsdl-1.5.1.jar
axis2-kernel-1.5.1/axis2-kernel-1.5.1.jar
axis2-mtompolicy-1.5.1/axis2-mtompolicy-1.5.1.jar
axis2-transport-base-1.0.0/axis2-transport-base-1.0.0.jar
axis2-transport-http-1.5.1/axis2-transport-http-1.5.1.jar
axis2-transport-jms-1.0.0/axis2-transport-jms-1.0.0.jar
axis2-transport-local-1.5.1/axis2-transport-local-1.5.1.jar
backport-util-concurrent-3.1/backport-util-concurrent-3.1.jar
commons-codec-1.3/commons-codec-1.3.jar
commons-collections-3.2/commons-collections-3.2.jar
commons-discovery-0.4/commons-discovery-0.4.jar
commons-fileupload-1.2/commons-fileupload-1.2.jar
commons-httpclient-3.1/commons-httpclient-3.1.jar
commons-io-1.4.jar
commons-logging-1.1.1/commons-logging-1.1.1.jar
dom4j-1.6.1/dom4j-1.6.1.jar
geronimo-activation_1.1_spec-1.0.1.jar
geronimo-javamail_1.4_spec-1.6.jar
geronimo-jms_1.1_spec-1.1.1.jar
geronimo-jta_1.0.1B_spec-1.0/geronimo-jta_1.0.1B_spec-1.0.jar
geronimo-jta_1.1_spec-1.1.1.jar
geronimo-stax-api_1.0_spec-1.0.1.jar
geronimo-ws-metadata_2.0_spec-1.1.2.jar
httpcore-4.0.1/httpcore-4.0.1.jar
httpcore-nio-4.0.1/httpcore-nio-4.0.1.jar
jaxb-api-2.1/jaxb-api-2.1.jar
jaxb-impl-2.1.12/jaxb-impl-2.1.12.jar
jaxen-1.1.1/jaxen-1.1.1.jar
jaxws-api-2.1/jaxws-api-2.1.jar
jdom-1.0/jdom-1.0.jar
jsr181-api-1.0-MR1/jsr181-api-1.0-MR1.jar
jsr250-api-1.0/jsr250-api-1.0.jar
log4j-1.2.15/log4j-1.2.15.jar
mail-1.4/mail-1.4.jar
mex-1.5.1-impl/mex-1.5.1-impl.jar
neethi-2.0.4.jar
rampart-core-1.4/rampart-core-1.4.jar
rampart-policy-1.4/rampart-policy-1.4.jar
rampart-trust-1.4/rampart-trust-1.4.jar
tuscany-assembly-2.0-SNAPSHOT.jar
tuscany-assembly-xml-2.0-SNAPSHOT.jar
tuscany-assembly-xsd-2.0-SNAPSHOT.jar
tuscany-binding-ws-2.0-SNAPSHOT.jar
tuscany-binding-ws-runtime-axis2-2.0-SNAPSHOT.jar
tuscany-binding-ws-wsdlgen-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-core-spi-2.0-SNAPSHOT.jar
tuscany-databinding-2.0-SNAPSHOT.jar
tuscany-databinding-axiom-2.0-SNAPSHOT.jar
tuscany-databinding-jaxb-2.0-SNAPSHOT.jar
tuscany-databinding-jaxb-axiom-2.0-SNAPSHOT.jar
tuscany-extensibility-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-policy-security-2.0-SNAPSHOT.jar
tuscany-sca-api-2.0-SNAPSHOT.jar
tuscany-xsd-2.0-SNAPSHOT.jar
woden-api-1.0M8.jar
woden-impl-dom-1.0M8/woden-impl-dom-1.0M8.jar
wsdl4j-1.6.2/wsdl4j-1.6.2.jar
wss4j-1.5.4/wss4j-1.5.4.jar
wstx-asl-3.2.4/wstx-asl-3.2.4.jar
xalan-2.7.0/xalan-2.7.0.jar
xercesImpl-2.8.1/xercesImpl-2.8.1.jar
xml-apis-1.3.04/xml-apis-1.3.04.jar
xmlsec-1.4.3/xmlsec-1.4.3.jar

This clearly has lots of stuff that's already included in the base list. This 
would not be the case if we just had the provided base-runtime dependency in 
the binding-ws-runtime-axis2 pom. I'll fix this shortly and fix the itests 
accordingly. 

The bottom line here is that we have a set of *-runtime features that follow an 
incremental base + extension approach. These collections of dependencies are 
used consistently to describe maven dependencies, generate meta-data, such as 
which-jars, manifest files, ant file sets and, in the case of base-runtime 
create convenience aggregated jars. 

None of this means that the existing features don't work as-is as all of this, 
apart from the aggregate jar, continues to refer into the set of jars in the 
modules directory, 

I think (hope) that's what Ant meant;-)

> which-jars files in distribution should not include jars from base runtime
> --------------------------------------------------------------------------
>
>                 Key: TUSCANY-3727
>                 URL: https://issues.apache.org/jira/browse/TUSCANY-3727
>             Project: Tuscany
>          Issue Type: Bug
>            Reporter: ant elder
>             Fix For: Java-SCA-2.0-Beta1
>
>
> The which-jars file in distribution/features/xyz folders should not include 
> the jars that are already included in the base runtime

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to