<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!--
   Licensed to the Apache Software Foundation (ASF) under one
   or more contributor license agreements.  See the NOTICE file
   distributed with this work for additional information
   regarding copyright ownership.  The ASF licenses this file
   to you under the Apache License, Version 2.0 (the
   "License"); you may not use this file except in compliance
   with the License.  You may obtain a copy of the License at

     http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing,
   software distributed under the License is distributed on an
   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
   KIND, either express or implied.  See the License for the
   specific language governing permissions and limitations
   under the License.    
-->
<html>
<head>
	<script type="text/javascript">var xookiConfig = {level: 1};</script>	
	<script type="text/javascript" src="../xooki/xooki.js"></script>
</head>
<body>
	<textarea id="xooki-source">
<b>Tag:</b> classpath

<span class="tagdoc" id="ivysettings.classpath">Includes a jar in the classpath used to load plugins.</span> <span class="since">since 1.4</span>

This let you add ivy plugins without relying on an external classpath (the ant classpath for instance), therefore easing the use of ivy in multiple execution environments (ant, standalone, IDE plugins, ...).

<h1>Attributes</h1>
<table class="ivy-attributes">
<thead>
    <tr><th class="ivy-att">Attribute</th><th class="ivy-att-desc">Description</th><th class="ivy-att-req">Required</th></tr>
</thead>
<tbody>
    <tr><td>url</td><td>the url of a jar to add to the classpath</td>
        <td>Yes, unless file is specified</td></tr>
    <tr><td>file</td><td>a jar to add to the classpath</td>
        <td>Yes, unless url is specified</td></tr>
</tbody>
</table>
<h1>Examples</h1>
<code type="xml">
<ivysettings>
  <classpath file="${ivy.settings.dir}/custom-resolver.jar"/>
  <typedef name="custom" classname="org.apache.ivy.resolver.CustomResolver"/>
  <resolvers>
    <custom name="custom"/>
  </resolvers>
</ivysettings>
</code>
Adds the custom-resolver.jar (found in the same directory as the ivysettings.xml file) to the classpath, then defines a custom resolver and uses it.

<hr/>
<code type="xml">
<ivysettings>
  <classpath url="http://www.myserver.com/ivy/custom-resolver.jar"/>
  <typedef name="custom" classname="org.apache.ivy.resolver.CustomResolver"/>
  <resolvers>
    <custom name="custom"/>
  </resolvers>
</ivysettings>
</code>
Same as above, but finds the jar on a web server.
	</textarea>
<script type="text/javascript">xooki.postProcess();</script>
</body>
</html>
