mirror of
https://github.com/apache/ant.git
synced 2025-05-19 06:24:47 +00:00
git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@274570 13f79535-47bb-0310-9956-ffa450edef68
173 lines
7.5 KiB
HTML
173 lines
7.5 KiB
HTML
|
|
|
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
|
<html lang="en">
|
|
<!-- GENERATED FILE, DO NOT EDIT, EDIT THE XML FILE IN xdocs INSTEAD! -->
|
|
<head>
|
|
<META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
|
|
<title>Apache Ant - Antlib Class Loaders</title>
|
|
<link type="text/css" href="../../page.css" rel="stylesheet">
|
|
<meta name="author" content="Antoine Levy-Lambert">
|
|
<meta name="email" content="antoine@apache.org">
|
|
</head>
|
|
|
|
<body>
|
|
<p class="navpath">
|
|
<script src="../../breadcrumbs.js" language="JavaScript" type="text/javascript"></script>
|
|
</p>
|
|
|
|
<div class="logobar">
|
|
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
|
<tr>
|
|
<td align="left"><img border="0" alt="Apache Ant site" src="../../images/group-logo.gif"></td>
|
|
<td align="center" width="100%"><img alt="Apache Ant logo" border="0" src="../../images/project-logo.gif"></td>
|
|
<td align="right">
|
|
<form target="_blank" onsubmit="q.value = query.value + ' site:ant.apache.org'" action="http://www.google.com/search" method="get">
|
|
<table summary="search" border="0" cellspacing="0" cellpadding="0" bgcolor="#4C6C8F">
|
|
<tr>
|
|
<td colspan="3"><img height="10" width="1" alt="" src="../../images/spacer.gif"></td>
|
|
</tr>
|
|
<tr>
|
|
<td><img height="1" width="1" alt="" src="../../images/spacer.gif"></td>
|
|
<td nowrap="nowrap" class="searchcaption">
|
|
<input name="q" type="hidden">
|
|
<input size="15" id="query" type="text">
|
|
<img height="1" width="5" alt="" src="../../images/spacer.gif">
|
|
<input name="Search" value="Search" type="submit">
|
|
<br>
|
|
the Apache Ant site
|
|
</td>
|
|
<td><img height="1" width="1" alt="" src="../../images/spacer.gif"></td>
|
|
</tr>
|
|
<tr>
|
|
<td><img alt="" border="0" height="10" width="9" src="../../images/search-left.gif"></td>
|
|
<td><img height="1" width="1" alt="" src="../../images/spacer.gif"></td>
|
|
<td><img alt="" border="0" height="10" width="9" src="../../images/search-right.gif"></td>
|
|
</tr>
|
|
</table>
|
|
</form>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
|
|
<div class="tab">
|
|
<table summary="tab bar" border="0" cellpadding="0" cellspacing="0">
|
|
<tr>
|
|
<td width="5"><img alt="" height="8" width="8" src="../../images/spacer.gif"></td><td valign="bottom">
|
|
<table summary="non selected tab" style="height: 1.4em" border="0" cellpadding="0" cellspacing="0">
|
|
<tr>
|
|
<td valign="top" width="5" bgcolor="#B2C4E0"><img height="5" width="5" alt="" src="../../images/tab-left.gif"></td><td valign="middle" bgcolor="#B2C4E0"><a href="../../index.html"><font size="2" face="Arial, Helvetica, Sans-serif">Home</font></a></td><td valign="top" width="5" bgcolor="#B2C4E0"><img height="5" width="5" alt="" src="../../images/tab-right.gif"></td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
<td width="5"><img alt="" height="8" width="8" src="../../images/spacer.gif"></td><td valign="bottom">
|
|
<table summary="non selected tab" style="height: 1.4em" border="0" cellpadding="0" cellspacing="0">
|
|
<tr>
|
|
<td valign="top" width="5" bgcolor="#B2C4E0"><img height="5" width="5" alt="" src="../../images/tab-left.gif"></td><td valign="middle" bgcolor="#B2C4E0"><a href="../../projects/index.html"><font size="2" face="Arial, Helvetica, Sans-serif">Projects</font></a></td><td valign="top" width="5" bgcolor="#B2C4E0"><img height="5" width="5" alt="" src="../../images/tab-right.gif"></td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
|
|
<div class="bluebar"></div>
|
|
|
|
<div class="menucontainer">
|
|
<div class="menu">
|
|
<ul>
|
|
</ul>
|
|
</div>
|
|
<img style="float: left" height="10" width="10" border="0" alt="" src="../../images/menu-left.gif">
|
|
<img style="float: right" height="10" width="10" border="0" alt="" src="../../images/menu-right.gif">
|
|
</div>
|
|
<div class="lightbluebar"> </div>
|
|
<div class="main">
|
|
<div class="content">
|
|
<h1 class="title">Antlib Class Loaders</h1>
|
|
<h3 class="section">
|
|
<a name="Jose Alberto Fernandez"></a>
|
|
Jose Alberto Fernandez
|
|
</h3>
|
|
<p>
|
|
Let me first say that this feature appeared by the need to be able to say,
|
|
</p>
|
|
<pre class="code">
|
|
<antlib name="A" classpathref="XYZ"/>
|
|
<antlib name="B" classpathref="XYZ"/>
|
|
</pre>
|
|
<p>
|
|
And being able to make sure that B and A use the same classLoader
|
|
and therefore they can use each other components.
|
|
</p>
|
|
<p>
|
|
|
|
My solution at the time was this idea of a named classloader that
|
|
you could define using a classpath, and then tell your antlibs use
|
|
this or that classloader, if you use the same classloader visibility
|
|
is guaranteed.
|
|
</p>
|
|
<h3 class="section">
|
|
<a name="Stefan Bodewig 23.04.2003 17:11"></a>
|
|
Stefan Bodewig 23.04.2003 17:11
|
|
</h3>
|
|
<p>
|
|
|
|
I understand that usecase (using the same class loader for 2 different antlibs)
|
|
and think it's important. See Steve
|
|
Loughran's comment on the .NET tasks wanting to have access to the
|
|
datatypes defined in the cpptasks project for example.
|
|
</p>
|
|
<p>
|
|
|
|
Take a look at what Costin had done to <taskdef> and <typedef> with
|
|
the loaderref attribute. This has now (i.e. CVS HEAD) been
|
|
generalized in ClasspathUtils, the infrastructure for named
|
|
classloaders is there - at least the foundation for it.
|
|
</p>
|
|
<p>
|
|
|
|
Stefan
|
|
</p>
|
|
<h3 class="section">
|
|
<a name="Costin Manolache 29.04.2003 18:52"></a>
|
|
Costin Manolache 29.04.2003 18:52
|
|
</h3>
|
|
<p>
|
|
The main issue is how to enforce ordering to deal with dependencies
|
|
between the antlibs.
|
|
</p>
|
|
<p>
|
|
Or simply do not deal with dependencies, ie antlibs must not (yet)
|
|
depend on on the other, except for the core ones.
|
|
</p>
|
|
<p>
|
|
Using an unified class loader ( at least as default ) - like jboss is doing,
|
|
or like JMX loading policy - has a lot of benefits. It also has some cases
|
|
that are not well covered - so we'll probably need to deal with both
|
|
"unified loader" and "loader hierarchy" cases.
|
|
</p>
|
|
|
|
</div>
|
|
</div>
|
|
|
|
<p class="copyright">
|
|
Copyright © 2000-2003 The Apache Software Foundation. All rights reserved.
|
|
<script type="text/javascript" language="JavaScript"><!--
|
|
document.write(" - "+"Last Published: " + document.lastModified);
|
|
// -->
|
|
</script>
|
|
</p>
|
|
</body>
|
|
</html>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|