<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">










<html>
  <head>
    <title>Apache Savan - Project Dependencies</title>
    <style type="text/css" media="all">
      @import url("./css/maven-base.css");
      @import url("./css/maven-theme.css");
      @import url("./css/site.css");
    </style>
    <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
        <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
      </head>
  <body class="composite"><div style="background: red"><h1>2014/09/20 - Apache Axis Savan/Java has been retired. </h1><h2>For more information, please explore the <a href="http://attic.apache.org/">Attic</a>. </h2></div>
    <div id="banner">
                  <a href="../" id="bannerLeft">
    
                                    <img src="http://www.apache.org/images/asf-logo.gif" alt="" />
    
            </a>
                    <div class="clear">
        <hr/>
      </div>
    </div>
    <div id="breadcrumbs">
          
  

  
    
  
  
            <div class="xleft">
        Last Published: 02/14/2007
                      </div>
            <div class="xright">      <a href="http://www.apache.org/">Apache</a>
          |
          <a href="../">WebServices</a>
          
  

  
    
  
  
  </div>
      <div class="clear">
        <hr/>
      </div>
    </div>
    <div id="leftColumn">
      <div id="navcolumn">
           
  

  
    
  
  
                   <h5>Savan</h5>
        <ul>
              
    <li class="none">
              <a href="index.html">Home</a>
        </li>
              
          
              
      
              
        <li class="expanded">
              <a href="">Downloads</a>
                <ul>
                  
    <li class="none">
              <a href="source-repository.html">Source Code</a>
        </li>
              </ul>
        </li>
              
          
              
      
            
      
            
      
              
        <li class="expanded">
              <a href="">Documentation</a>
                <ul>
                  
    <li class="none">
              <a href="savan-tutorial.html">Tutorial</a>
        </li>
                  
    <li class="none">
              <a href="apidocs/index.html">Javadocs</a>
        </li>
                  
    <li class="none">
              <a href="http://svn.apache.org/viewvc/webservices/savan/?root=Apache-SVN">View Source</a>
        </li>
              </ul>
        </li>
              
          
              
      
            
      
            
      
              
        <li class="expanded">
              <a href="">Project Information</a>
                <ul>
                  
    <li class="none">
              <a href="mail-lists.html">Mailing Lists</a>
        </li>
                  
    <li class="none">
              <a href="team-list.html">Project Team</a>
        </li>
                  
    <li class="none">
              <a href="issue-tracking.html">Issue Tracking</a>
        </li>
              </ul>
        </li>
              
    <li class="none">
              <a href="license.html">License</a>
        </li>
          </ul>
                                       <a href="http://maven.apache.org/" title="Built by Maven" id="poweredBy">
            <img alt="Built by Maven" src="./images/logos/maven-feather.png"></img>
          </a>
                       
  

  
    
  
  
        </div>
    </div>
    <div id="bodyColumn">
      <div id="contentBox">
        <div class="section"><h2>Project Dependencies</h2><div class="section"><h3>compile</h3><p>The following is a list of compile dependencies for this project. These dependencies are required to compile and run the application:</p><table class="bodyTable"><tr class="a"><th>GroupId</th><th>ArtifactId</th><th>Version</th><th>Classifier</th><th>Type</th><th>Optional</th></tr><tr class="b"><td>junit</td><td>junit</td><td>3.8.2</td><td>-</td><td>jar</td><td> </td></tr><tr class="a"><td>org.apache.axis2</td><td>axis2-adb</td><td>1.1.1-SNAPSHOT</td><td>-</td><td>jar</td><td> </td></tr><tr class="b"><td>org.apache.axis2</td><td>axis2-addressing</td><td>1.1.1-SNAPSHOT</td><td>-</td><td>jar</td><td> </td></tr><tr class="a"><td>org.apache.axis2</td><td>axis2-kernel</td><td>1.1.1-SNAPSHOT</td><td>-</td><td>jar</td><td> </td></tr><tr class="b"><td>org.apache.neethi</td><td>neethi</td><td>2.0</td><td>-</td><td>jar</td><td> </td></tr><tr class="a"><td>org.apache.ws.commons.axiom</td><td>axiom-api</td><td>1.2.1</td><td>-</td><td>jar</td><td> </td></tr><tr class="b"><td>org.apache.ws.commons.axiom</td><td>axiom-impl</td><td>1.2.1</td><td>-</td><td>jar</td><td> </td></tr><tr class="a"><td>org.apache.ws.commons.schema</td><td>XmlSchema</td><td>SNAPSHOT</td><td>-</td><td>jar</td><td> </td></tr><tr class="b"><td>stax</td><td>stax-api</td><td>1.0.1</td><td>-</td><td>jar</td><td> </td></tr><tr class="a"><td>woodstox</td><td>wstx-asl</td><td>3.1.0</td><td>-</td><td>jar</td><td> </td></tr><tr class="b"><td>wsdl4j</td><td>wsdl4j</td><td>1.6.1</td><td>-</td><td>jar</td><td> </td></tr></table></div></div><div class="section"><h2>Project Transitive Dependencies</h2><p>The following is a list of transitive dependencies for this project. Transitive dependencies are the dependencies of the project dependencies.</p><div class="section"><h3>compile</h3><p>The following is a list of compile dependencies for this project. These dependencies are required to compile and run the application:</p><table class="bodyTable"><tr class="a"><th>GroupId</th><th>ArtifactId</th><th>Version</th><th>Classifier</th><th>Type</th><th>Optional</th></tr><tr class="b"><td>commons-logging</td><td>commons-logging</td><td>1.0.4</td><td>-</td><td>jar</td><td> </td></tr><tr class="a"><td>javax.activation</td><td>activation</td><td>1.1</td><td>-</td><td>jar</td><td> </td></tr><tr class="b"><td>javax.mail</td><td>mail</td><td>1.4</td><td>-</td><td>jar</td><td> </td></tr><tr class="a"><td>jaxen</td><td>jaxen</td><td>1.1-beta-9</td><td>-</td><td>jar</td><td> </td></tr><tr class="b"><td>xerces</td><td>xercesImpl</td><td>2.6.2</td><td>-</td><td>jar</td><td> </td></tr><tr class="a"><td>xml-apis</td><td>xml-apis</td><td>1.3.03</td><td>-</td><td>jar</td><td> </td></tr></table></div></div><div class="section"><h2>Project Dependency Graph</h2><div class="section"><h3>Dependency Tree</h3><p><ul><li><a href="#org.apache.savan:savan:jar">org.apache.savan:savan:jar</a><ul><li><a href="#wsdl4j:wsdl4j:jar">wsdl4j:wsdl4j:jar</a></li><li><a href="#junit:junit:jar">junit:junit:jar</a></li><li><a href="#org.apache.ws.commons.axiom:axiom-api:jar">org.apache.ws.commons.axiom:axiom-api:jar</a><ul><li><a href="#jaxen:jaxen:jar">jaxen:jaxen:jar</a><ul><li><a href="#xerces:xercesImpl:jar">xerces:xercesImpl:jar</a></li></ul></li><li><a href="#xml-apis:xml-apis:jar">xml-apis:xml-apis:jar</a></li><li><a href="#javax.mail:mail:jar">javax.mail:mail:jar</a><ul><li><a href="#javax.activation:activation:jar">javax.activation:activation:jar</a></li></ul></li><li><a href="#commons-logging:commons-logging:jar">commons-logging:commons-logging:jar</a></li></ul></li><li><a href="#org.apache.axis2:axis2-adb:jar">org.apache.axis2:axis2-adb:jar</a></li><li><a href="#woodstox:wstx-asl:jar">woodstox:wstx-asl:jar</a></li><li><a href="#org.apache.neethi:neethi:jar">org.apache.neethi:neethi:jar</a></li><li><a href="#org.apache.ws.commons.axiom:axiom-impl:jar">org.apache.ws.commons.axiom:axiom-impl:jar</a></li><li><a href="#org.apache.ws.commons.schema:XmlSchema:jar">org.apache.ws.commons.schema:XmlSchema:jar</a></li><li><a href="#org.apache.axis2:axis2-addressing:jar">org.apache.axis2:axis2-addressing:jar</a></li><li><a href="#stax:stax-api:jar">stax:stax-api:jar</a></li><li><a href="#org.apache.axis2:axis2-kernel:jar">org.apache.axis2:axis2-kernel:jar</a></li></ul></li></ul></p></div><div class="section"><h3>Dependency Listings</h3><p><a name="org.apache.savan:savan:jar"><b>Apache Savan</b></a></p><p><a href="http://ws.apache.org/savan/">http://ws.apache.org/savan/</a></p><p><a name="wsdl4j:wsdl4j:jar"><b>WSDL4J</b></a></p><p>Java stub generator for WSDL</p><p><a href="http://sf.net/projects/wsdl4j">http://sf.net/projects/wsdl4j</a></p><p><a name="junit:junit:jar"><b>Unnamed - junit:junit:jar:3.8.2</b></a></p><p><a name="org.apache.ws.commons.axiom:axiom-api:jar"><b>Axiom API</b></a></p><p>The Axiom API</p><p><a href="http://ws.apache.org/commons/axiom/modules/axiom-api">http://ws.apache.org/commons/axiom/modules/axiom-api</a></p><p><a name="jaxen:jaxen:jar"><b>jaxen</b></a></p><p>Jaxen is a universal Java XPath engine.</p><p><a href="http://jaxen.codehaus.org/">http://jaxen.codehaus.org/</a></p><p><a name="xerces:xercesImpl:jar"><b>Unnamed - xerces:xercesImpl:jar:2.6.2</b></a></p><p><a name="xml-apis:xml-apis:jar"><b>Unnamed - xml-apis:xml-apis:jar:1.3.03</b></a></p><p>The Apache Software Foundation provides support for the Apache community of open-source software projects.
    The Apache projects are characterized by a collaborative, consensus based development process, an open and
    pragmatic software license, and a desire to create high quality software that leads the way in its field.
    We consider ourselves not simply a group of projects sharing a server, but rather a community of developers
    and users.</p><p><a href="http://xml.apache.org/commons/#external">http://xml.apache.org/commons/#external</a></p><p><a name="javax.mail:mail:jar"><b>JavaMail API</b></a></p><p>The JavaMail API provides a platform-independent and protocol-independent framework to build mail and messaging applications.</p><p><a href="https://glassfish.dev.java.net/javaee5/mail/">https://glassfish.dev.java.net/javaee5/mail/</a></p><p><a name="javax.activation:activation:jar"><b>JavaBeans Activation Framework (JAF)</b></a></p><p>JavaBeans Activation Framework (JAF) is a standard extension to the Java platform that lets you take advantage of standard services to: determine the type of an arbitrary piece of data; encapsulate access to it; discover the operations available on it; and instantiate the appropriate bean to perform the operation(s).</p><p><a href="http://java.sun.com/products/javabeans/jaf/index.jsp">http://java.sun.com/products/javabeans/jaf/index.jsp</a></p><p><a name="commons-logging:commons-logging:jar"><b>Logging</b></a></p><p>Commons Logging is a thin adapter allowing configurable bridging to other,
    well known logging systems.</p><p><a href="http://jakarta.apache.org/commons/logging/">http://jakarta.apache.org/commons/logging/</a></p><p><a name="org.apache.axis2:axis2-adb:jar"><b>Unnamed - org.apache.axis2:axis2-adb:jar:1.1.1-SNAPSHOT</b></a></p><p>POM was created manually to overcome Maven2 shortcoming/Use only for WSO2 projects</p><p><a name="woodstox:wstx-asl:jar"><b>Unnamed - woodstox:wstx-asl:pom:3.1.0</b></a></p><p><a name="org.apache.neethi:neethi:jar"><b>Unnamed - org.apache.neethi:neethi:pom:2.0</b></a></p><p><a name="org.apache.ws.commons.axiom:axiom-impl:jar"><b>Axiom Impl</b></a></p><p>The Axiom default implementation.</p><p><a href="http://ws.apache.org/commons/axiom/modules/axiom-impl">http://ws.apache.org/commons/axiom/modules/axiom-impl</a></p><p><a name="org.apache.ws.commons.schema:XmlSchema:jar"><b>Unnamed - org.apache.ws.commons.schema:XmlSchema:pom:SNAPSHOT</b></a></p><p><a name="stax:stax-api:jar"><b>StAX API</b></a></p><p>StAX API is the standard java XML processing API defined by JSR-173</p><p><a href="http://stax.codehaus.org/">http://stax.codehaus.org/</a></p><p><a name="org.apache.axis2:axis2-kernel:jar"><b>Unnamed - org.apache.axis2:axis2-kernel:jar:1.1.1-SNAPSHOT</b></a></p><p>POM was created manually to overcome Maven2 shortcoming/Use only for WSO2 projects</p></div></div>
      </div>
    </div>
    <div class="clear">
      <hr/>
    </div>
    <div id="footer">
      <div class="xright">&#169;  
          2007
    
          
  

  
    
  
  
  </div>
      <div class="clear">
        <hr/>
      </div>
    </div>
  </body>
</html>
