<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">











<html>
  <head>
    <title>Apache Velocity - 
    Velocity 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" />
    <link rel="alternate" href="http://feeds.feedburner.com/ApacheVelocitySiteNews" type="application/rss+xml" title="Apache Velocity - 
    Velocity dependencies News" />
          <meta name="author" content="
    Velocity Documentation Team" />
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
      </head>
  <body class="composite">
    <div id="banner">
                  <a href="../../../" id="bannerLeft">
    
                                            <img src="images/velocity_project_wide.png" alt="" />
    
            </a>
                          <span id="bannerRight">
    
                                            <img src="images/velocity-logo.png" alt="" />
    
            </span>
            <div class="clear">
        <hr/>
      </div>
    </div>
    <div id="breadcrumbs">
          
  

  
    
  
  
    
            <div class="xleft">
          
          <a href="http://www.apache.org/">Apache</a>
              &gt;
      
          <a href="../../../">Velocity</a>
              &gt;
      
          Velocity Engine
                </div>
            <div class="xright">      <a href="../../devel/index.html">Engine</a>
          |
          <a href="../../../tools/devel/index.html">Tools</a>
          |
          <a href="../../../dvsl/devel/index.html">DVSL</a>
          
  

  
    
  
  
    
  </div>
      <div class="clear">
        <hr/>
      </div>
    </div>
    <div id="leftColumn">
      <div id="navcolumn">
           
  

  
    
  
  
    
                   <h5>Velocity</h5>
        <ul>
              
    <li class="none">
              <a href="index.html">General</a>
        </li>
              
    <li class="none">
              <a href="overview.html">Overview</a>
        </li>
              
    <li class="none">
              <a href="getting-started.html">Getting Started</a>
        </li>
              
    <li class="none">
              <a href="webapps.html">Web Applications</a>
        </li>
              
    <li class="none">
              <a href="../../../download.cgi">Download</a>
        </li>
              
    <li class="none">
              <a href="http://wiki.apache.org/velocity/VelocityFAQ">FAQ (Wiki)</a>
        </li>
          </ul>
          <h5>Docs</h5>
        <ul>
              
    <li class="none">
              <a href="user-guide.html">User Guide</a>
        </li>
              
    <li class="none">
              <a href="developer-guide.html">Developer Guide</a>
        </li>
              
    <li class="none">
              <a href="vtl-reference-guide.html">VTL Reference</a>
        </li>
              
    <li class="none">
              <a href="anakia.html">Anakia: XML->doc tool</a>
        </li>
              
    <li class="none">
              <a href="texen.html">Texen: text generation</a>
        </li>
          </ul>
          <h5>Developers</h5>
        <ul>
              
    <li class="none">
              <a href="license.html">License</a>
        </li>
              
    <li class="none">
              <a href="apidocs/index.html">Javadoc</a>
        </li>
              
    <li class="none">
              <a href="changes-report.html">Changes in 1.5</a>
        </li>
              
    <li class="none">
              <a href="jira-report.html">Resolved Issues in 1.5</a>
        </li>
              
    <li class="none">
              <strong>Dependencies</strong>
        </li>
              
    <li class="none">
              <a href="http://svn.apache.org/viewvc/velocity/engine/branches/Velocity_1.5_BRANCH/">Source Code Repository</a>
        </li>
              
    <li class="none">
              <a href="build.html">Building from Source</a>
        </li>
          </ul>
          <h5>Community</h5>
        <ul>
              
    <li class="none">
              <a href="http://wiki.apache.org/velocity/">Wiki</a>
        </li>
              
    <li class="none">
              <a href="../../../news.html">Recent News</a>
        </li>
              
    <li class="none">
              <a href="http://wiki.apache.org/velocity/PoweredByVelocity">Powered By Velocity</a>
        </li>
              
    <li class="none">
              <a href="http://wiki.apache.org/velocity/VelocityEditors">IDE/Editor Plugins</a>
        </li>
              
    <li class="none">
              <a href="http://wiki.apache.org/velocity/PublishedArticlesAndBooks">Articles and Books</a>
        </li>
              
    <li class="none">
              <a href="http://wiki.apache.org/velocity/GetInvolved">Get Involved</a>
        </li>
              
    <li class="none">
              <a href="../../../contact.html">Mailing Lists</a>
        </li>
          </ul>
          <h5>Velocity Development</h5>
        <ul>
              
    <li class="none">
              <a href="http://wiki.apache.org/velocity/RoadMap">Road Map</a>
        </li>
              
    <li class="none">
              <a href="http://wiki.apache.org/velocity/CodeStandards">Coding Standards</a>
        </li>
              
    <li class="none">
              <a href="http://wiki.apache.org/velocity/DocumentationGuidelines">Documentation Guidelines</a>
        </li>
              
    <li class="none">
              <a href="https://issues.apache.org/jira/browse/VELOCITY">Issues</a>
        </li>
              
    <li class="none">
              <a href="../../../who-we-are.html">Who we are</a>
        </li>
          </ul>
          <h5>Translations</h5>
        <ul>
              
    <li class="none">
              <a href="http://www.jajakarta.org/velocity/">Site (Japanese)</a>
        </li>
              
    <li class="none">
              <a href="translations/user-guide_fi.html">User's Guide (Finnish)</a>
        </li>
              
    <li class="none">
              <a href="translations/user-guide_fr.html">User's Guide (French)</a>
        </li>
              
    <li class="none">
              <a href="translations/user-guide_es.html">User's Guide (Spanish)</a>
        </li>
          </ul>
          <h5>Project Documentation</h5>
        <ul>
              
                
              
      
            
      
            
      
            
      
            
      
              
        <li class="collapsed">
              <a href="project-info.html">Project Information</a>
              </li>
              
                
              
      
            
      
            
      
            
      
            
      
            
      
            
      
            
      
            
      
              
        <li class="collapsed">
              <a href="project-reports.html">Project Reports</a>
              </li>
          </ul>
                                             
                        
                        
                        <a class="poweredBy" href="../../../" title="Apache Velocity" ><img class="poweredBy" alt="Apache Velocity" src="images/pbv90x30.png" /></a>
                                
                        
                        
                        <a class="poweredBy" href="../../../rss/news.rss" title="Velocity News Feed" ><img class="poweredBy" alt="Velocity News Feed" src="images/feed-icon-24x24.jpg" /></a>
                    

           
  

  
    
  
  
    
        </div>
    </div>
    <div id="bodyColumn">
      <div id="contentBox">
        
  

  
    <a name="velocity_dependencies"></a><div class="section"><h2>Velocity dependencies</h2>
      <p>
       Velocity has a number of external jar dependencies. However, not all of these
       are needed every time.This document should help you do decide which jars must
       also be present if you want to integrate Velocity into your application.
      </p>

      <p>
       All of these jars must be present when building Apache Velocity. The build process
       downloads all of them automatically from the Internet.
      </p>

      <table class="bodyTable">
        <tr class="a">
          <th >jar name</th><th >Required</th><th >Explanation</th>
        </tr>
        <tr class="b">
          <td >commons-collections</td><td >Yes</td>
          <td >Needed for all parts of Velocity</td>
        </tr>
        <tr class="a">
          <td >commons-lang</td><td >Yes</td>
          <td >Needed for all parts of Velocity</td>
        </tr>
        <tr class="b">
          <td >oro</td><td >Yes</td>
          <td >Needed for all parts of Velocity</td>
        </tr>
        <tr class="a">
          <td >log4j</td><td >No</td>
          <td >Must be present if log4j Logging has been selected.
              Not needed if any other logging style has been selected.</td>
        </tr>
        <tr class="b">
          <td >logkit (or avalon-logkit)</td><td >No</td>
          <td >Must be present if Avalon Logging has been selected.
              Not needed if any other logging style has been selected.</td>
        </tr>
        <tr class="a">
          <td >servletapi</td><td >No</td>
          <td >Only needed when the <a href="apidocs/org/apache/velocity/servlet/VelocityServlet.html">VelocityServlet</a>
              is used. Should normally be supplied by the servlet
              container. <b>VelocityServlet is deprecated and should
              be replaced with VelocityViewServlet from the
              <a href="http://velocity.apache.org/tools/devel/" class="externalLink">velocity-tools</a> distribution.</b></td>
        </tr>
        <tr class="b">
          <td >jdom</td><td >No</td>
          <td >Only required for the Anakia tool / ant task</td>
        </tr>
        <tr class="a">
          <td >werken-xpath</td><td >No</td>
          <td >Only required for the Anakia tool / ant task</td>
        </tr>
        <tr class="b">
          <td >antlr</td><td >No</td>
          <td >Only required for the Anakia tool / ant task</td>
        </tr>
        <tr class="a">
          <td >ant</td><td >No</td>
          <td >Only needed for compilation.</td>
        </tr>
        <tr class="b">
          <td >junit</td><td >No</td>
          <td >Only needed for running the tests during compilation.</td>
        </tr>
        <tr class="a">
          <td >hsqldb</td><td >No</td>
          <td >Only needed for running the tests during compilation.</td>
        </tr>
      </table>

      <p>
        The most common case is the integration of the Velocity runtime into your
        application. In this case, you must add commons-collections, commons-lang
        and oro to your application (and optional logging if
        required). If you already have one or more of these libraries in your application,
        you should check if you need to update their versions.
      </p>

      <p>The <a href="dependencies.html">auto-generated dependency report</a> lists all mandatory
         dependencies as <b>compile</b> and all optional dependencies as <b>provided</b>.
      </p>
    </div>
  

      </div>
    </div>
    <div class="clear">
      <hr/>
    </div>
    <div id="footer">
      <div class="xright">&#169;  
          2000-2007
    
          The Apache Software Foundation
          
  

  
    
  
  
    
             Last Published: 2007-03-06 19:34:54
            </div>
      <div class="clear">
        <hr/>
      </div>
    </div>
  </body>
</html>
