<!DOCTYPE html>
<!--
 | Generated by Apache Maven Doxia at May 31, 2013
 | Rendered using Apache Maven Fluido Skin 1.3.0
-->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta name="Date-Revision-yyyymmdd" content="20130531" />
    <meta http-equiv="Content-Language" content="en" />
    <title>Archiva :: Web - Project Dependencies</title>
    <link rel="stylesheet" href="./css/apache-maven-fluido-1.3.0.min.css" />
    <link rel="stylesheet" href="./css/site.css" />
    <link rel="stylesheet" href="./css/print.css" media="print" />

      
    <script type="text/javascript" src="./js/apache-maven-fluido-1.3.0.min.js"></script>

    
            </head>
        <body class="topBarEnabled">
          
                        
                    
                

    <div id="topbar" class="navbar navbar-fixed-top ">
      <div class="navbar-inner">
                                  <div class="container"><div class="nav-collapse">
            
                
                                <ul class="nav">
                          <li class="dropdown">
        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Modules <b class="caret"></b></a>
        <ul class="dropdown-menu">
        
                      <li>      <a href="archiva-security/index.html"  title="Archiva Web :: Security Configuration">Archiva Web :: Security Configuration</a>
</li>
                  
                      <li>      <a href="archiva-webdav/index.html"  title="Archiva Web :: WebDAV">Archiva Web :: WebDAV</a>
</li>
                  
                      <li>      <a href="archiva-rss/index.html"  title="Archiva Web :: RSS">Archiva Web :: RSS</a>
</li>
                  
                      <li>      <a href="archiva-test-mocks/index.html"  title="Archiva Web :: Tests Mocks">Archiva Web :: Tests Mocks</a>
</li>
                  
                      <li>      <a href="archiva-rest/index.html"  title="Archiva Web :: REST support">Archiva Web :: REST support</a>
</li>
                  
                      <li>      <a href="archiva-web-common/index.html"  title="Archiva Web :: Web Common">Archiva Web :: Web Common</a>
</li>
                  
                      <li>      <a href="archiva-webapp/index.html"  title="Archiva Web :: Javascript Application">Archiva Web :: Javascript Application</a>
</li>
                          </ul>
      </li>
                      <li class="dropdown">
        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Project Documentation <b class="caret"></b></a>
        <ul class="dropdown-menu">
        
                      <li class="dropdown-submenu">
                                      <a href="project-info.html"  title="Project Information">Project Information</a>
              <ul class="dropdown-menu">
                                  <li>      <a href="index.html"  title="About">About</a>
</li>
                                  <li>      <a href="team-list.html"  title="Project Team">Project Team</a>
</li>
                                  <li>      <a href="modules.html"  title="Project Modules">Project Modules</a>
</li>
                                  <li>      <a href="dependency-info.html"  title="Dependency Information">Dependency Information</a>
</li>
                                  <li>      <a href="dependency-management.html"  title="Dependency Management">Dependency Management</a>
</li>
                                  <li>      <a href="plugins.html"  title="Project Plugins">Project Plugins</a>
</li>
                                  <li>      <a href="integration.html"  title="Continuous Integration">Continuous Integration</a>
</li>
                                  <li>      <a href="issue-tracking.html"  title="Issue Tracking">Issue Tracking</a>
</li>
                                  <li>      <a href="source-repository.html"  title="Source Repository">Source Repository</a>
</li>
                                  <li>      <a href="dependency-convergence.html"  title="Dependency Convergence">Dependency Convergence</a>
</li>
                                  <li>      <a href="license.html"  title="Project License">Project License</a>
</li>
                                  <li>      <a href="plugin-management.html"  title="Plugin Management">Plugin Management</a>
</li>
                                  <li>      <a href="distribution-management.html"  title="Distribution Management">Distribution Management</a>
</li>
                                  <li>      <a href="project-summary.html"  title="Project Summary">Project Summary</a>
</li>
                                  <li>      <a href="mail-lists.html"  title="Mailing Lists">Mailing Lists</a>
</li>
                                  <li>      <a href="dependencies.html"  title="Dependencies">Dependencies</a>
</li>
                              </ul>
            </li>
                          </ul>
      </li>
                  </ul>
          
                      <form id="search-form" action="http://www.google.com/search" method="get"  class="navbar-search pull-right" >
    
  <input value="http://archiva.apache.org/ref/1.4-M4" name="sitesearch" type="hidden"/>
  <input class="search-query" name="q" id="query" type="text" />
</form>
<script type="text/javascript" src="http://www.google.com/coop/cse/brand?form=search-form"></script>
          
                                                    
        
        
        <ul class="nav pull-right"><li>
    
    <a href="https://twitter.com/archiva" class="twitter-follow-button" data-show-count="false" data-align="right" data-size="large" data-show-screen-name="true" data-lang="en">Follow archiva</a>
    <script type="text/javascript">!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src="//platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script>

        </li></ul>
                
                   
                      </div>
          
        </div>
      </div>
    </div>
    
        <div class="container">
          <div id="banner">
        <div class="pull-left">
                                                  <a href="../../../index.html" id="bannerLeft">
                                                                                                <img src="../../../images/archiva.png"  alt="Apache Archiva"/>
                </a>
                      </div>
        <div class="pull-right">                  <a href="http://www.apache.org/" id="bannerRight">
                                                                                        <img src="http://www.apache.org/images/asf_logo_wide.png"  alt="Apache Software Foundation"/>
                </a>
      </div>
        <div class="clear"><hr/></div>
      </div>

      <div id="breadcrumbs">
        <ul class="breadcrumb">
                
                    
                              <li class="">
                    <a href="http://www.apache.org/" class="externalLink" title="Apache">
        Apache</a>
        </li>
      <li class="divider ">/</li>
            <li class="">
                    <a href="../" title="Apache Archiva">
        Apache Archiva</a>
        </li>
      <li class="divider ">/</li>
            <li class="">
                    <a href="../" title="Archiva :: Modules">
        Archiva :: Modules</a>
        </li>
      <li class="divider ">/</li>
                <li class="">
                    <a href="./" title="Archiva :: Web">
        Archiva :: Web</a>
        </li>
      <li class="divider ">/</li>
        <li class="">Project Dependencies</li>
        
                
                    
                  <li id="publishDate" class="pull-right">Last Published: 31 May 2013</li> 
            
                            </ul>
      </div>

      
                
        <div id="bodyColumn" >
                                  
            <a name="Project_Dependencies"></a><div class="section"><h2>Project Dependencies<a name="Project_Dependencies"></a></h2><a name="Project_Dependencies_test"></a><div class="section"><h3>test<a name="test"></a></h3><p>The following is a list of test dependencies for this project. These dependencies are only required to compile and run unit tests for the application:</p><table border="0" class="table table-striped"><tr class="a"><th>GroupId</th><th>ArtifactId</th><th>Version</th><th>Type</th><th>License</th></tr><tr class="b"><td>junit</td><td><a class="externalLink" href="http://junit.org">junit</a></td><td>4.11</td><td>jar</td><td><a class="externalLink" href="http://www.opensource.org/licenses/cpl1.0.txt">Common Public License Version 1.0</a></td></tr><tr class="a"><td>org.easymock</td><td><a class="externalLink" href="http://www.easymock.org">easymock</a></td><td>2.5.2</td><td>jar</td><td><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">Apache 2</a></td></tr><tr class="b"><td>org.easymock</td><td><a class="externalLink" href="http://www.easymock.org">easymockclassextension</a></td><td>2.5</td><td>jar</td><td><a class="externalLink" href="http://www.easymock.org/License.html">MIT License</a></td></tr></table></div></div><a name="Project_Transitive_Dependencies"></a><div class="section"><h2>Project Transitive Dependencies<a name="Project_Transitive_Dependencies"></a></h2><p>The following is a list of transitive dependencies for this project. Transitive dependencies are the dependencies of the project dependencies.</p><a name="Project_Transitive_Dependencies_test"></a><div class="section"><h3>test<a name="test"></a></h3><p>The following is a list of test dependencies for this project. These dependencies are only required to compile and run unit tests for the application:</p><table border="0" class="table table-striped"><tr class="a"><th>GroupId</th><th>ArtifactId</th><th>Version</th><th>Type</th><th>License</th></tr><tr class="b"><td>cglib</td><td><a class="externalLink" href="http://cglib.sourceforge.net/">cglib-nodep</a></td><td>2.2</td><td>jar</td><td><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">ASF 2.0</a></td></tr><tr class="a"><td>org.hamcrest</td><td><a class="externalLink" href="https://github.com/hamcrest/JavaHamcrest/hamcrest-core">hamcrest-core</a></td><td>1.3</td><td>jar</td><td><a class="externalLink" href="http://www.opensource.org/licenses/bsd-license.php">New BSD License</a></td></tr><tr class="b"><td>org.objenesis</td><td><a class="externalLink" href="http://objenesis.googlecode.com/svn/docs/index.html">objenesis</a></td><td>1.2</td><td>jar</td><td><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">Apache 2</a></td></tr></table></div></div><a name="Project_Dependency_Graph"></a><div class="section"><h2>Project Dependency Graph<a name="Project_Dependency_Graph"></a></h2><script language="javascript" type="text/javascript">
      function toggleDependencyDetail( divId, imgId )
      {
        var div = document.getElementById( divId );
        var img = document.getElementById( imgId );
        if( div.style.display == '' )
        {
          div.style.display = 'none';
          img.src='./images/icon_info_sml.gif';
        }
        else
        {
          div.style.display = '';
          img.src='./images/close.gif';
        }
      }
</script>
<a name="Dependency_Tree"></a><div class="section"><h3>Dependency Tree<a name="Dependency_Tree"></a></h3><ul><li>org.apache.archiva:archiva-web:pom:1.4-M4 <img id="_1645256031" src="./images/icon_info_sml.gif" alt="Information" onclick="toggleDependencyDetail( '_543275568', '_1645256031' );" style="cursor: pointer;vertical-align:text-bottom;"></img><div id="_543275568" style="display:none"><table border="0" class="table table-striped"><tr class="a"><th>Archiva :: Web</th></tr><tr class="b"><td><p><b>Description: </b>Archiva is an application for managing one or more remote
      repositories, including administration, artifact handling,
      browsing and searching.</p><p><b>URL: </b><a class="externalLink" href="http://archiva.apache.org/ref/1.4-M4/archiva-web">http://archiva.apache.org/ref/1.4-M4/archiva-web</a></p><p><b>Project License: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></p></td></tr></table></div><ul><li>junit:junit:jar:4.11 (test) <img id="_914565997" src="./images/icon_info_sml.gif" alt="Information" onclick="toggleDependencyDetail( '_1282878954', '_914565997' );" style="cursor: pointer;vertical-align:text-bottom;"></img><div id="_1282878954" style="display:none"><table border="0" class="table table-striped"><tr class="a"><th>JUnit</th></tr><tr class="b"><td><p><b>Description: </b>JUnit is a regression testing framework written by Erich Gamma and Kent Beck.
        It is used by the developer who implements unit tests in Java.</p><p><b>URL: </b><a class="externalLink" href="http://junit.org">http://junit.org</a></p><p><b>Project License: </b><a class="externalLink" href="http://www.opensource.org/licenses/cpl1.0.txt">Common Public License Version 1.0</a></p></td></tr></table></div><ul><li>org.hamcrest:hamcrest-core:jar:1.3 (test) <img id="_1459372275" src="./images/icon_info_sml.gif" alt="Information" onclick="toggleDependencyDetail( '_782311994', '_1459372275' );" style="cursor: pointer;vertical-align:text-bottom;"></img><div id="_782311994" style="display:none"><table border="0" class="table table-striped"><tr class="a"><th>Hamcrest Core</th></tr><tr class="b"><td><p><b>Description: </b>This is the core API of hamcrest matcher framework to be used by third-party framework providers. This includes the a foundation set of matcher implementations for common operations.</p><p><b>URL: </b><a class="externalLink" href="https://github.com/hamcrest/JavaHamcrest/hamcrest-core">https://github.com/hamcrest/JavaHamcrest/hamcrest-core</a></p><p><b>Project License: </b><a class="externalLink" href="http://www.opensource.org/licenses/bsd-license.php">New BSD License</a></p></td></tr></table></div></li></ul></li><li>org.easymock:easymock:jar:2.5.2 (test) <img id="_496311962" src="./images/icon_info_sml.gif" alt="Information" onclick="toggleDependencyDetail( '_156550496', '_496311962' );" style="cursor: pointer;vertical-align:text-bottom;"></img><div id="_156550496" style="display:none"><table border="0" class="table table-striped"><tr class="a"><th>EasyMock</th></tr><tr class="b"><td><p><b>Description: </b>EasyMock provides an easy way to create Mock Objects for interfaces by generating them on the fly using Java's proxy mechanism</p><p><b>URL: </b><a class="externalLink" href="http://www.easymock.org">http://www.easymock.org</a></p><p><b>Project License: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">Apache 2</a></p></td></tr></table></div></li><li>org.easymock:easymockclassextension:jar:2.5 (test) <img id="_1890430030" src="./images/icon_info_sml.gif" alt="Information" onclick="toggleDependencyDetail( '_2136143483', '_1890430030' );" style="cursor: pointer;vertical-align:text-bottom;"></img><div id="_2136143483" style="display:none"><table border="0" class="table table-striped"><tr class="a"><th>EasyMock class extension</th></tr><tr class="b"><td><p><b>Description: </b>The EasyMock Class Extension allows to generate Mock Objects for classes</p><p><b>URL: </b><a class="externalLink" href="http://www.easymock.org">http://www.easymock.org</a></p><p><b>Project License: </b><a class="externalLink" href="http://www.easymock.org/License.html">MIT License</a></p></td></tr></table></div><ul><li>cglib:cglib-nodep:jar:2.2 (test) <img id="_385406915" src="./images/icon_info_sml.gif" alt="Information" onclick="toggleDependencyDetail( '_2117511207', '_385406915' );" style="cursor: pointer;vertical-align:text-bottom;"></img><div id="_2117511207" style="display:none"><table border="0" class="table table-striped"><tr class="a"><th>Code Generation Library</th></tr><tr class="b"><td><p><b>Description: </b>Code generation library with shaded ASM dependecies</p><p><b>URL: </b><a class="externalLink" href="http://cglib.sourceforge.net/">http://cglib.sourceforge.net/</a></p><p><b>Project License: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">ASF 2.0</a></p></td></tr></table></div></li><li>org.objenesis:objenesis:jar:1.2 (test) <img id="_1179742736" src="./images/icon_info_sml.gif" alt="Information" onclick="toggleDependencyDetail( '_1723335603', '_1179742736' );" style="cursor: pointer;vertical-align:text-bottom;"></img><div id="_1723335603" style="display:none"><table border="0" class="table table-striped"><tr class="a"><th>Objenesis</th></tr><tr class="b"><td><p><b>Description: </b>A library for instantiating Java objects</p><p><b>URL: </b><a class="externalLink" href="http://objenesis.googlecode.com/svn/docs/index.html">http://objenesis.googlecode.com/svn/docs/index.html</a></p><p><b>Project License: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">Apache 2</a></p></td></tr></table></div></li></ul></li></ul></li></ul></div></div><a name="Licenses"></a><div class="section"><h2>Licenses<a name="Licenses"></a></h2><p><b>ASF 2.0: </b>Code Generation Library</p><p><b>Apache 2: </b>EasyMock, Objenesis</p><p><b>New BSD License: </b>Hamcrest Core</p><p><b>Common Public License Version 1.0: </b>JUnit</p><p><b>MIT License: </b>EasyMock class extension</p><p><b>The Apache Software License, Version 2.0: </b>Archiva :: Web</p></div><a name="Dependency_File_Details"></a><div class="section"><h2>Dependency File Details<a name="Dependency_File_Details"></a></h2><table border="0" class="table table-striped"><tr class="a"><th>Filename</th><th>Size</th><th>Entries</th><th>Classes</th><th>Packages</th><th>JDK Rev</th><th>Debug</th></tr><tr class="b"><td>cglib-nodep-2.2.jar</td><td>314.81 kB</td><td>253</td><td>249</td><td>9</td><td>1.2</td><td>debug</td></tr><tr class="a"><td>junit-4.11.jar</td><td>239.30 kB</td><td>266</td><td>233</td><td>28</td><td>1.5</td><td>debug</td></tr><tr class="b"><td>easymock-2.5.2.jar</td><td>92.35 kB</td><td>87</td><td>78</td><td>3</td><td>1.5</td><td>debug</td></tr><tr class="a"><td>easymockclassextension-2.5.jar</td><td>30.32 kB</td><td>24</td><td>17</td><td>2</td><td>1.5</td><td>debug</td></tr><tr class="b"><td>hamcrest-core-1.3.jar</td><td>43.97 kB</td><td>52</td><td>45</td><td>3</td><td>1.5</td><td>debug</td></tr><tr class="a"><td>objenesis-1.2.jar</td><td>35.20 kB</td><td>46</td><td>32</td><td>8</td><td>1.3</td><td>debug</td></tr><tr class="b"><th>Total</th><th>Size</th><th>Entries</th><th>Classes</th><th>Packages</th><th>JDK Rev</th><th>Debug</th></tr><tr class="a"><td>6</td><td>755.95 kB</td><td>728</td><td>654</td><td>53</td><td>1.5</td><td>6</td></tr><tr class="b"><td>test: 6</td><td>test: 755.95 kB</td><td>test: 728</td><td>test: 654</td><td>test: 53</td><td>-</td><td>test: 6</td></tr></table></div><a name="Dependency_Repository_Locations"></a><div class="section"><h2>Dependency Repository Locations<a name="Dependency_Repository_Locations"></a></h2><table border="0" class="table table-striped"><tr class="a"><th>Repo ID</th><th>URL</th><th>Release</th><th>Snapshot</th><th>Blacklisted</th></tr><tr class="b"><td>apache.snapshots</td><td><a class="externalLink" href="https://repository.apache.org/content/groups/snapshots/">https://repository.apache.org/content/groups/snapshots/</a></td><td>-</td><td>Yes</td><td>Yes</td></tr><tr class="a"><td>archiva.snapshots</td><td><a class="externalLink" href="https://archiva-repository.apache.org/archiva/repository/snapshots">https://archiva-repository.apache.org/archiva/repository/snapshots</a></td><td>-</td><td>Yes</td><td>Yes</td></tr><tr class="b"><td>central</td><td><a class="externalLink" href="http://repo.maven.apache.org/maven2">http://repo.maven.apache.org/maven2</a></td><td>Yes</td><td>-</td><td>Yes</td></tr></table><p>Repository locations for each of the Dependencies.</p><table border="0" class="table table-striped"><tr class="a"><th>Artifact</th></tr><tr class="b"><td>cglib:cglib-nodep:jar:2.2</td></tr><tr class="a"><td>junit:junit:jar:4.11</td></tr><tr class="b"><td>org.easymock:easymock:jar:2.5.2</td></tr><tr class="a"><td>org.easymock:easymockclassextension:jar:2.5</td></tr><tr class="b"><td>org.hamcrest:hamcrest-core:jar:1.3</td></tr><tr class="a"><td>org.objenesis:objenesis:jar:1.2</td></tr><tr class="b"><th>Total</th></tr><tr class="a"><td>6 (test: 6)</td></tr></table></div>
                  </div>
          </div>

    <hr/>

    <footer>
            <div class="container">
              <div class="row span12">Copyright &copy;                    2006-2013
                        <a href="http://www.apache.org/">The Apache Software Foundation</a>.
            All Rights Reserved.      
                    
      </div>

        
                <p id="poweredBy" class="pull-right">
                          <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
        <img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" />
      </a>
              </p>
        
          
    
    
                
    <div id="ohloh" class="pull-right">
      <script type="text/javascript" src="http://www.ohloh.net/p/6670/widgets/project_basic_stats.js"></script>
    </div>
        </div>
    </footer>
  </body>
</html>