blob: 975ab09c3923cb0e41ca24e12346877bcdfbd1c6 [file] [log] [blame]
Clement Escoffier6b928e92008-05-16 20:33:54 +00001<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
Clement Escoffier8251f602009-01-15 15:35:17 +00002<html><head>
3
4
Clement Escoffier6b928e92008-05-16 20:33:54 +00005
Clement Escoffier8251f602009-01-15 15:35:17 +00006 <title>Apache Felix - iPOJO Ant Task</title>
7 <link rel="stylesheet" href="ipojo-ant-task_files/site.css" type="text/css" media="all">
8 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
9 </head><body>
10 <div class="title"><div class="logo"><a href="http://felix.apache.org/site/index.html"><img alt="Apache Felix" src="ipojo-ant-task_files/logo.png" border="0"></a></div><div class="header"><a href="http://www.apache.org/"><img alt="Apache" src="ipojo-ant-task_files/apache.png" border="0"></a></div></div>
11 <div class="menu">
12<ul>
13 <li><a href="http://felix.apache.org/site/news.html" title="news">news</a></li>
14 <li><a href="http://felix.apache.org/site/license.html" title="license">license</a></li>
Clement Escoffier7a7131a2009-07-21 11:43:20 +000015 <li><a href="http://felix.apache.org/site/downloads.cgi" rel="nofollow">downloads</a></li>
Clement Escoffier8251f602009-01-15 15:35:17 +000016 <li><a href="http://felix.apache.org/site/documentation.html" title="documentation">documentation</a></li>
17 <li><a href="http://felix.apache.org/site/mailinglists.html" title="mailinglists">mailing lists</a></li>
18 <li><a href="http://felix.apache.org/site/contributing.html" title="Contributing">contributing</a></li>
Clement Escoffier7a7131a2009-07-21 11:43:20 +000019 <li><a href="http://www.apache.org/" rel="nofollow">asf</a></li>
20 <li><a href="http://www.apache.org/foundation/sponsorship.html" rel="nofollow">sponsorship</a></li>
21 <li><a href="http://www.apache.org/foundation/thanks.html" rel="nofollow">sponsors</a>
Clement Escoffier6b928e92008-05-16 20:33:54 +000022<!-- ApacheCon Ad -->
Clement Escoffier7a7131a2009-07-21 11:43:20 +000023<iframe src="ipojo-ant-task_files/button.html" style="border-width: 0pt; float: left;" scrolling="no" frameborder="0" height="135" width="135"></iframe>
Clement Escoffier8251f602009-01-15 15:35:17 +000024<p style="height: 100px;">
25<!-- ApacheCon Ad -->
26</p></li></ul> </div>
27 <div class="main">
Clement Escoffier7a7131a2009-07-21 11:43:20 +000028<style type="text/css">
29 @import url(http://people.apache.org/~clement/ipojo/site/superfish.css);
30</style>
31
32<style type="text/css">
33 @import url(http://people.apache.org/~clement/ipojo/site/style.css);
34</style>
35
36<p>
37<script class="javascript" src="ipojo-ant-task_files/shCore.js"></script>
38<script class="javascript" src="ipojo-ant-task_files/shBrushCSharp.js"></script>
39<script class="javascript" src="ipojo-ant-task_files/shBrushPhp.js"></script>
40<script class="javascript" src="ipojo-ant-task_files/shBrushJScript.js"></script>
41<script class="javascript" src="ipojo-ant-task_files/shBrushVb.js"></script>
42<script class="javascript" src="ipojo-ant-task_files/shBrushSql.js"></script>
43<script class="javascript" src="ipojo-ant-task_files/shBrushXml.js"></script>
44<script class="javascript" src="ipojo-ant-task_files/shBrushShell.js"></script>
45<script class="javascript" src="ipojo-ant-task_files/shBrushDelphi.js"></script>
46<script class="javascript" src="ipojo-ant-task_files/shBrushPython.js"></script>
47<script class="javascript" src="ipojo-ant-task_files/shBrushJava.js"></script>
48
49<script type="text/javascript" src="ipojo-ant-task_files/jquery-1.js"></script>
50<script type="text/javascript" src="ipojo-ant-task_files/hoverIntent.js"></script>
51<script type="text/javascript" src="ipojo-ant-task_files/superfish.js"></script>
52<script type="text/javascript" src="ipojo-ant-task_files/supersubs.js"></script>
53
54<script type="text/javascript">
55
56 $(document).ready(function(){
57 $("ul.sf-menu").supersubs({
58 minWidth: 14, // minimum width of sub-menus in em units
59 maxWidth: 30, // maximum width of sub-menus in em units
60 extraWidth: 1 // extra width can ensure lines don't sometimes turn over
61 // due to slight rounding differences and font-family
62 }).superfish(); // call supersubs first, then superfish, so that subs are
63 // not display:none when measuring. Call before initialising
64 // containing tabs for same reason.
65 });
66
67</script>
68</p><div class="main">
69<div class="page-header">
70<img src="ipojo-ant-task_files/header.png" class="header">
71<a href="http://ipojo.org/"><img src="ipojo-ant-task_files/ipojo.png" class="header-logo" width="225"></a>
72<ul class="sf-menu sf-js-enabled sf-shadow" id="ipojo-menu">
73<li class="current">
74<!-- Menu Overview -->
75<a href="" class="sf-with-ul">Overview<span class="sf-sub-indicator"> »</span><span class="sf-sub-indicator"> »</span><span class="sf-sub-indicator"> »</span></a>
76<ul style="float: none; width: 14em; display: none; visibility: hidden;">
77 <li style="white-space: normal; float: left; width: 100%;">
78 <a style="float: none; width: auto;" href="http://felix.apache.org/site/apache-felix-ipojo.html" title="Apache Felix iPOJO">Home</a>
79 </li>
80 <li style="white-space: normal; float: left; width: 100%;">
81 <a style="float: none; width: auto;" href="http://felix.apache.org/site/apache-felix-ipojo-why-choose-ipojo.html" title="apache-felix-ipojo-why-choose-ipojo">Why choose iPOJO</a>
82 </li>
83 <li style="white-space: normal; float: left; width: 100%;">
84 <a style="float: none; width: auto;" href="http://felix.apache.org/site/apache-felix-ipojo-successstories.html" title="apache-felix-ipojo-successstories">Success stories</a>
85 </li>
86 <li style="white-space: normal; float: left; width: 100%;">
87 <a style="float: none; width: auto;" href="http://felix.apache.org/site/apache-felix-ipojo-feature-overview.html" title="Apache Felix iPOJO Feature Overview">Features</a>
88 </li>
89</ul>
90</li>
91
92<li class="">
93<!-- Menu download -->
94</li><li>
95<a href="http://felix.apache.org/site/download.html" title="Download">Download </a>
96</li>
97
98<li class="">
99<!-- Menu Documentation -->
100<a href="" class="sf-with-ul">Documentation<span class="sf-sub-indicator"> »</span><span class="sf-sub-indicator"> »</span><span class="sf-sub-indicator"> »</span></a>
101<ul style="float: none; width: 14em; display: none; visibility: hidden;">
102 <!-- sub- menu : getting started -->
103 <li style="white-space: normal; float: left; width: 100%;" class="">
104 <a style="float: none; width: auto;" href="" class="sf-with-ul">Getting Started<span class="sf-sub-indicator"> »</span><span class="sf-sub-indicator"> »</span><span class="sf-sub-indicator"> »</span></a>
105 <ul style="left: 14em; float: none; width: 14em; display: none; visibility: hidden;">
106 <li style="white-space: normal; float: left; width: 100%;"><a style="float: none; width: auto;" href="http://felix.apache.org/site/ipojo-in-10-minutes.html" title="iPOJO in 10 minutes">iPOJO in 10 minutes</a></li>
107 <li style="white-space: normal; float: left; width: 100%;"><a style="float: none; width: auto;" href="http://felix.apache.org/site/how-to-use-ipojo-annotations.html" title="How to use iPOJO Annotations">Using Annotations</a></li>
108 <li style="white-space: normal; float: left; width: 100%;"><a style="float: none; width: auto;" href="http://felix.apache.org/site/ipojo-hello-word-maven-based-tutorial.html" title="iPOJO Hello Word (Maven-Based) tutorial">Maven tutorial</a></li>
109 <li style="white-space: normal; float: left; width: 100%;"><a style="float: none; width: auto;" href="http://felix.apache.org/site/ipojo-advanced-tutorial.html" title="iPOJO Advanced Tutorial">Advanced tutorial</a></li>
110 <li style="white-space: normal; float: left; width: 100%;"><a style="float: none; width: auto;" href="http://felix.apache.org/site/apache-felix-ipojo-dosgi.html" title="apache-felix-ipojo-dosgi">Using Distributed OSGi</a></li>
111 <li style="white-space: normal; float: left; width: 100%;"><a style="float: none; width: auto;" href="http://felix.apache.org/site/ipojo-composition-tutorial.html" title="iPOJO Composition Tutorial">Application Composition</a></li>
112 </ul>
113 </li> <!-- end of getting started -->
114 <!-- sub menu : Describing Components -->
115 <li style="white-space: normal; float: left; width: 100%;" class="">
116 <a style="float: none; width: auto;" href="http://felix.apache.org/site/describing-components.html" class="sf-with-ul">Describing components<span class="sf-sub-indicator"> »</span><span class="sf-sub-indicator"> »</span><span class="sf-sub-indicator"> »</span></a>
117 <ul style="left: 14em; float: none; width: 14em; display: none; visibility: hidden;">
118 <li style="white-space: normal; float: left; width: 100%;"><a style="float: none; width: auto;" href="http://felix.apache.org/site/service-requirement-handler.html" title="Service Requirement Handler">Requiring a service</a></li>
119 <li style="white-space: normal; float: left; width: 100%;"><a style="float: none; width: auto;" href="http://felix.apache.org/site/providing-osgi-services.html" title="Providing OSGi services">Providing a service</a></li>
120 <li style="white-space: normal; float: left; width: 100%;"><a style="float: none; width: auto;" href="http://felix.apache.org/site/lifecycle-callback-handler.html" title="Lifecycle Callback Handler">Lifecycle management</a></li>
121 <li style="white-space: normal; float: left; width: 100%;"><a style="float: none; width: auto;" href="http://felix.apache.org/site/configuration-handler.html" title="Configuration Handler">Configuration</a></li>
122 <li style="white-space: normal; float: left; width: 100%;"><a style="float: none; width: auto;" href="http://felix.apache.org/site/architecture-handler.html" title="Architecture Handler">Introspection</a></li>
123 <li style="white-space: normal; float: left; width: 100%;"><a style="float: none; width: auto;" href="http://felix.apache.org/site/controller-lifecycle-handler.html" title="Controller Lifecycle Handler">Impacting the lifecycle</a></li>
124 <li style="white-space: normal; float: left; width: 100%;"><a style="float: none; width: auto;" href="http://felix.apache.org/site/event-admin-handlers.html" title="Event Admin Handlers">Asynchronous communication</a></li>
125 <li style="white-space: normal; float: left; width: 100%;"><a style="float: none; width: auto;" href="http://felix.apache.org/site/ipojo-jmx-handler.html" title="iPOJO JMX Handler">JMX management</a></li>
126 <li style="white-space: normal; float: left; width: 100%;"><a style="float: none; width: auto;" href="http://felix.apache.org/site/extender-pattern-handler.html" title="Extender Pattern Handler">Extender pattern</a></li>
127 <li style="white-space: normal; float: left; width: 100%;"><a style="float: none; width: auto;" href="http://felix.apache.org/site/white-board-pattern-handler.html" title="White Board Pattern Handler">Whiteboard pattern</a></li>
128 <li style="white-space: normal; float: left; width: 100%;"><a style="float: none; width: auto;" href="http://felix.apache.org/site/temporal-service-dependency.html" title="Temporal Service Dependency">Temporal dependencies</a></li>
129 </ul>
130 </li> <!-- End of describing components -->
131 <!-- sub- menu : User Guide -->
132 <li style="white-space: normal; float: left; width: 100%;" class="">
133 <a style="float: none; width: auto;" href="" class="sf-with-ul">User Guide<span class="sf-sub-indicator"> »</span><span class="sf-sub-indicator"> »</span><span class="sf-sub-indicator"> »</span></a>
134 <ul style="left: 14em; float: none; width: 14em; display: none; visibility: hidden;">
135 <li style="white-space: normal; float: left; width: 100%;"><a style="float: none; width: auto;" href="http://felix.apache.org/site/using-xml-schemas.html" title="Using XML Schemas">XML Schemas</a></li>
136 <li style="white-space: normal; float: left; width: 100%;"><a style="float: none; width: auto;" href="http://felix.apache.org/site/apache-felix-ipojo-api.html" title="apache-felix-ipojo-api">API</a></li>
137 <li style="white-space: normal; float: left; width: 100%;"><a style="float: none; width: auto;" href="http://felix.apache.org/site/apache-felix-ipojo-testing-components.html" title="apache-felix-ipojo-testing-components">Testing components</a></li>
138 <li style="white-space: normal; float: left; width: 100%;"><a style="float: none; width: auto;" href="http://felix.apache.org/site/apache-felix-ipojo-eclipse-integration.html" title="apache-felix-ipojo-eclipse-integration">Eclipse Integration</a></li>
139 <li style="white-space: normal; float: left; width: 100%;"><a style="float: none; width: auto;" href="http://felix.apache.org/site/ipojo-faq.html" title="iPOJO FAQ">FAQ</a></li>
140 <li style="white-space: normal; float: left; width: 100%;"><a style="float: none; width: auto;" href="http://felix.apache.org/site/ipojo-reference-card.html" title="iPOJO-Reference-Card">Reference Card</a></li>
141 </ul>
142 </li> <!-- end of user guide -->
143 <!-- sub- menu : Dev Guide -->
144 <li class="" style="white-space: normal; float: left; width: 100%;">
145 <a style="float: none; width: auto;" href="" class="sf-with-ul">Advanced Topics<span class="sf-sub-indicator"> »</span><span class="sf-sub-indicator"> »</span><span class="sf-sub-indicator"> »</span></a>
146 <ul style="left: 14em; float: none; width: 14em; display: none; visibility: hidden;">
147 <li style="white-space: normal; float: left; width: 100%;"><a style="float: none; width: auto;" href="http://felix.apache.org/ipojo/api/1.2.0" rel="nofollow">Javadoc</a></li>
148 <li style="white-space: normal; float: left; width: 100%;"><a style="float: none; width: auto;" href="http://felix.apache.org/site/how-to-write-your-own-handler.html" title="How to write your own handler">Handler guide</a></li>
149 <li style="white-space: normal; float: left; width: 100%;"><a style="float: none; width: auto;" href="http://felix.apache.org/site/how-to-use-ipojo-manipulation-metadata.html" title="How to use iPOJO Manipulation Metadata">Manipulation Metadata </a></li>
150 <li style="white-space: normal; float: left; width: 100%;"><a style="float: none; width: auto;" href="http://felix.apache.org/site/dive-into-the-ipojo-manipulation-depths.html" title="Dive into the iPOJO Manipulation depths">Dive into the iPOJO Manipulation depths</a></li>
151 </ul>
152 </li> <!-- End of Dev guide -->
153</ul>
154</li> <!-- End of doc -->
155<!-- Menu 4 : Tools -->
156<li class="">
157<a href="" class="sf-with-ul">Tools<span class="sf-sub-indicator"> »</span><span class="sf-sub-indicator"> »</span><span class="sf-sub-indicator"> »</span></a>
158<ul style="float: none; width: 14em; display: none; visibility: hidden;">
159 <li style="white-space: normal; float: left; width: 100%;"><a style="float: none; width: auto;" href="" title="iPOJO Ant Task">Ant Task</a></li>
160 <li style="white-space: normal; float: left; width: 100%;"><a style="float: none; width: auto;" href="http://felix.apache.org/site/ipojo-eclipse-plug-in.html" title="iPOJO Eclipse Plug-in">Eclipse Plugin</a></li>
161 <li style="white-space: normal; float: left; width: 100%;"><a style="float: none; width: auto;" href="http://felix.apache.org/site/ipojo-maven-plug-in.html" title="iPOJO Maven Plug-in">Maven Plugin</a></li>
162 <li style="white-space: normal; float: left; width: 100%;"><a style="float: none; width: auto;" href="http://felix.apache.org/site/apache-felix-ipojo-online-manipulator.html" title="apache-felix-ipojo-online-manipulator">Online Manipulator</a></li>
163 <li style="white-space: normal; float: left; width: 100%;"><a style="float: none; width: auto;" href="http://felix.apache.org/site/ipojo-webconsole-plugin.html" title="iPOJO Webconsole Plugin">Webconsole plugin</a></li>
164 <li style="white-space: normal; float: left; width: 100%;"><a style="float: none; width: auto;" href="http://felix.apache.org/site/apache-felix-ipojo-junit4osgi.html" title="apache-felix-ipojo-junit4osgi">Junit4OSGi</a></li>
165</ul>
166</li><!-- End of tools -->
167<!-- Menu 5 : Misc -->
168<li class="">
169<a href="" class="sf-with-ul">Misc<span class="sf-sub-indicator"> »</span><span class="sf-sub-indicator"> »</span><span class="sf-sub-indicator"> »</span></a>
170<ul style="float: none; width: 14em; display: none; visibility: hidden;">
171 <li style="white-space: normal; float: left; width: 100%;"><a style="float: none; width: auto;" href="http://felix.apache.org/site/apache-felix-ipojo-issuestracker.html" title="apache-felix-ipojo-issuestracker">Issues Tracker</a></li>
172 <li style="white-space: normal; float: left; width: 100%;"><a style="float: none; width: auto;" href="http://felix.apache.org/site/apache-felix-ipojo-supportedvms.html" title="apache-felix-ipojo-supportedVMs">Supported JVMs</a></li>
173 <li style="white-space: normal; float: left; width: 100%;"><a style="float: none; width: auto;" href="http://felix.apache.org/site/apache-felix-ipojo-supportedosgi.html" title="apache-felix-ipojo-supportedOSGi">Supported OSGi Implementations</a></li>
174 <li style="white-space: normal; float: left; width: 100%;"><a style="float: none; width: auto;" href="http://ipojo-dark-side.blogspot.com/" rel="nofollow">iPOJO's Dark Side Blog</a></li>
175 <li style="white-space: normal; float: left; width: 100%;"><a style="float: none; width: auto;" href="http://felix.apache.org/site/article-presentations.html" title="Article &amp; Presentations">Article &amp; Presentations</a></li>
176</ul>
177</li><!-- End of misc -->
178</ul> <!-- End of the menu -->
179</div> <!-- Page header -->
180
181
182<div class="content">
183
Clement Escoffier83507512008-10-13 07:33:03 +0000184
Clement Escoffier8251f602009-01-15 15:35:17 +0000185<h1><a name="iPOJOAntTask-iPOJOAntTask"></a>iPOJO Ant Task</h1>
Clement Escoffier6b928e92008-05-16 20:33:54 +0000186
Clement Escoffier7a7131a2009-07-21 11:43:20 +0000187<p><em>iPOJO Ant Task allows automating the iPOJO manipulation process
188within an Ant build process. This page explains how to use the iPOJO
189Ant Task and how to combine them with the BND Tasks.</em></p>
190
191<div class="toc">
192<ul>
193 <li><a href="#iPOJOAntTask-DownloadingtheiPOJOAntTask">Downloading the iPOJO Ant Task</a></li>
194 <li><a href="#iPOJOAntTask-HowtousetheAntTask">How to use the Ant Task</a></li>
195 <li><a href="#iPOJOAntTask-AntTaskArguments">Ant Task Arguments</a></li>
196 <li><a href="#iPOJOAntTask-CombiningtheiPOJOAntTaskandBND">Combining the iPOJO Ant Task and BND</a></li>
197 <li>Directory manipulation [New in the 1.3.0-SNAPSHOT version ]</li>
198 <li>Conclusion</li>
199</ul></div>
Clement Escoffier6b928e92008-05-16 20:33:54 +0000200
Clement Escoffier8251f602009-01-15 15:35:17 +0000201<h2><a name="iPOJOAntTask-DownloadingtheiPOJOAntTask"></a>Downloading the iPOJO Ant Task</h2>
Clement Escoffier6b928e92008-05-16 20:33:54 +0000202
Clement Escoffier8251f602009-01-15 15:35:17 +0000203<p>The iPOJO Ant Task can ben downloaded from <a href="http://felix.apache.org/site/download.html" title="Download">here</a>.</p>
Clement Escoffier6b928e92008-05-16 20:33:54 +0000204
Clement Escoffier8251f602009-01-15 15:35:17 +0000205<h2><a name="iPOJOAntTask-HowtousetheAntTask"></a>How to use the Ant Task</h2>
Clement Escoffier6b928e92008-05-16 20:33:54 +0000206
Clement Escoffier8251f602009-01-15 15:35:17 +0000207<p>The iPOJO Ant task take an input bundle and a metadata file and create the final (i.e. manipulated) bundle.<br>
208To use the task declare a target in your build.xml as:</p>
Clement Escoffier7a7131a2009-07-21 11:43:20 +0000209<div class="pom"><p>&lt;target name="main"&gt;<br>
Clement Escoffier8251f602009-01-15 15:35:17 +0000210&nbsp;&nbsp;&nbsp;&nbsp;<font color="red">&lt;!-- Change the path to point on the iPOJO Ant task jar--&gt;</font><br>
211&nbsp;&nbsp;&nbsp;&nbsp;&lt;taskdef name="ipojo"<br>
212&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;classname="org.apache.felix.ipojo.task.IPojoTask"<br>
Clement Escoffier7a7131a2009-07-21 11:43:20 +0000213&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="red">classpath="org.apache.felix.ipojo.ant-1.2.0.jar"</font>/&gt;</p>
Clement Escoffier83507512008-10-13 07:33:03 +0000214
Clement Escoffier8251f602009-01-15 15:35:17 +0000215<p>&nbsp;&nbsp;&nbsp;&nbsp;&lt;ipojo<br>
216&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;input="foo.jar"<br>
217&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;metadata = "meta.xml"<br>
218&nbsp;&nbsp;&nbsp;&nbsp;/&gt;<br>
Clement Escoffier7a7131a2009-07-21 11:43:20 +0000219&lt;/target&gt;</p></div>
Clement Escoffier8251f602009-01-15 15:35:17 +0000220<p>First, define the new task. Then simply use it. The input argument
221describe the input bundle (must exists) and the metadata argument
222describes the metadata file (must exist too). The input bundle must be
223a well-formed bundle.</p>
Clement Escoffier6b928e92008-05-16 20:33:54 +0000224
Clement Escoffier8251f602009-01-15 15:35:17 +0000225<h2><a name="iPOJOAntTask-AntTaskArguments"></a>Ant Task Arguments</h2>
Clement Escoffier6b928e92008-05-16 20:33:54 +0000226
Clement Escoffier8251f602009-01-15 15:35:17 +0000227<p>The iPOJO Ant Task as three different arguments:</p>
228<ul>
229 <li>Input: describes the input bundle. This argument is mandatory.</li>
230 <li>Output: describes the output bundle. This argument is optional. If not present, the output file will be input file.</li>
231 <li>Metadata:
232describes the metadata file. This argument is optional. By default, it
233tries with a metadata.xml file (in the same directory as the build.xml
234file). If the default file is not present, it tries to use only iPOJO
235annotations.</li>
236 <li>IgnoreAnnotations: if set to <tt>true</tt>, the manipulator skips annotations processing.</li>
Clement Escoffier7a7131a2009-07-21 11:43:20 +0000237 <li>IgnoreEmbeddedSchemas: if set to <tt>true</tt>, the manipulator doesn't use embedded XML-Schemas</li>
Clement Escoffier8251f602009-01-15 15:35:17 +0000238</ul>
Clement Escoffier6b928e92008-05-16 20:33:54 +0000239
240
Clement Escoffier8251f602009-01-15 15:35:17 +0000241<h2><a name="iPOJOAntTask-CombiningtheiPOJOAntTaskandBND"></a>Combining the iPOJO Ant Task and BND</h2>
Clement Escoffier6b928e92008-05-16 20:33:54 +0000242
Clement Escoffier8251f602009-01-15 15:35:17 +0000243<p>The iPOJO Ant Task requires an input bundle. BND is a tools
244simplifying bundle creation. So, it is possible to combine the two
245tools to create your bundle automatically. The following build.xml
246shows you an example of combination.</p>
Clement Escoffier7a7131a2009-07-21 11:43:20 +0000247<div class="pom"><p>&lt;project default="main" basedir="."&gt;<br>
Clement Escoffier8251f602009-01-15 15:35:17 +0000248&nbsp;&nbsp;&nbsp;&nbsp;&lt;target name="bnd"&gt;<br>
249&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="red">&lt;!-- Change to use the latest BND version –</font><font color="red">&gt;</font><br>
250&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;taskdef resource="aQute/bnd/ant/taskdef.properties"<br>
251&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="red">classpath="bnd-0.0.178.jar"</font>/&gt;<br>
252&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;bnd<br>
253&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;classpath="src"<br>
254&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;eclipse="true"<br>
255&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;failok="false"<br>
256&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exceptions="true"<br>
257&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="red">files="foo.bnd"</font>/&gt;<br>
258&nbsp;&nbsp;&nbsp;&nbsp;&lt;/target&gt;</p>
Clement Escoffier6b928e92008-05-16 20:33:54 +0000259
Clement Escoffier8251f602009-01-15 15:35:17 +0000260<p>&nbsp;&nbsp;&nbsp;&nbsp;&lt;target name="main" depends="bnd"&gt;<br>
261&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;echo message="Call main"/&gt;<br>
262&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="red">&lt;!-- Change the path to point on the iPOJO Ant task jar --&gt;</font><br>
263&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;taskdef name="ipojo"<br>
264&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;classname="org.apache.felix.ipojo.task.PojoTask"<br>
Clement Escoffier7a7131a2009-07-21 11:43:20 +0000265&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="red">classpath="org.apache.felix.ipojo.ant-1.2.0.jar"</font> /&gt;<br>
Clement Escoffier8251f602009-01-15 15:35:17 +0000266&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;ipojo<br>
267&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="red">input="foo.jar"</font><br>
268&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;metadata = "meta.xml"<br>
269&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /&gt;<br>
270&nbsp;&nbsp;&nbsp;&nbsp;&lt;/target&gt;<br>
Clement Escoffier7a7131a2009-07-21 11:43:20 +0000271&lt;/project&gt;</p></div>
Clement Escoffier8251f602009-01-15 15:35:17 +0000272<p>The first target creates the bundle with BND. More details on the
273BND Ant Task are available here. To combine the BND output and the
274iPOJO input, the iPOJO input need to be the same as the BND file but
275with the ".jar" extension. For instance, the BND file is foo.bnd, so
276the input jar must be foo.jar.<br>
277To be sure that the BND bundle is already created, you can add the "<em>depends</em>" clause in the target using the iPOJO task to the target creating the bundle.</p>
Clement Escoffier6b928e92008-05-16 20:33:54 +0000278
Clement Escoffier8251f602009-01-15 15:35:17 +0000279<p>However, it is possible to create only one target doing the two operations as:</p>
Clement Escoffier7a7131a2009-07-21 11:43:20 +0000280<div class="pom"><p>&lt;target name="main"&gt;<br>
Clement Escoffier8251f602009-01-15 15:35:17 +0000281&nbsp;&nbsp;&nbsp;&nbsp;<font color="red">&lt;!-- Change to use the latest BND version --&gt;</font><br>
282&nbsp;&nbsp;&nbsp;&nbsp;&lt;taskdef<br>
283&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;resource="aQute/bnd/ant/taskdef.properties"<br>
284&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="red">classpath="bnd-0.0.178.jar"/&gt;</font></p>
Clement Escoffier83507512008-10-13 07:33:03 +0000285
Clement Escoffier8251f602009-01-15 15:35:17 +0000286<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="red">&lt;!-- Change the path to point on the iPOJO Ant task jar --&gt;</font><br>
287&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;taskdef name="ipojo"<br>
288&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;classname="org.apache.felix.ipojo.task.IPojoTask"<br>
Clement Escoffier7a7131a2009-07-21 11:43:20 +0000289&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="red">classpath="org.apache.felix.ipojo.ant-1.2.0.jar"</font>/&gt;</p>
Clement Escoffier83507512008-10-13 07:33:03 +0000290
Clement Escoffier8251f602009-01-15 15:35:17 +0000291<p>&nbsp;&nbsp;&nbsp;&nbsp;&lt;bnd<br>
292&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;classpath="src"<br>
293&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;eclipse="true"<br>
294&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;failok="false"<br>
295&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exceptions="true"<br>
296&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;files="<font color="red">foo.bnd</font>"/&gt;</p>
Clement Escoffier83507512008-10-13 07:33:03 +0000297
Clement Escoffier8251f602009-01-15 15:35:17 +0000298<p>&nbsp;&nbsp;&nbsp;&nbsp;&lt;ipojo<br>
299&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;input="<font color="red">foo.jar</font>"<br>
300&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;metadata = "meta.xml"/&gt;<br>
Clement Escoffier7a7131a2009-07-21 11:43:20 +0000301&lt;/target&gt;</p></div>
302
303<h2><a name="iPOJOAntTask-Directorymanipulation\Newinthe1.3.0SNAPSHOTversion\"></a>Directory manipulation [New in the 1.3.0-SNAPSHOT version ]</h2>
304
305<p>The manipulator can take a directory in input. In this case, classes
306from this folder is manipulated. You can also set the manifest file
307location too. Here in an example of configuration using this mode:</p>
308<div class="code">
309<div class="dp-highlighter"><table class="dp-xml" border="0" cellpadding="0" cellspacing="0"><tbody><tr><td class="line1"><span></span><span class="tag">&lt;</span><span>target&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">"manipulate"</span><span>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr><tr><td class="line2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span>ipojo&nbsp;</span></td></tr><tr><td class="line1">&nbsp;&nbsp;&nbsp;&nbsp;<span class="attribute">dir</span><span>=</span><span class="attribute-value">"${output..}"</span><span>&nbsp;</span><span class="comments">&lt;!--&nbsp;Manipulated&nbsp;directory&nbsp;--&gt;</span><span>&nbsp;</span></td></tr><tr><td class="line2">&nbsp;&nbsp;&nbsp;&nbsp;<span class="attribute">metadata</span><span>=</span><span class="attribute-value">"metadata.xml"</span><span>&nbsp;</span></td></tr><tr><td class="line1">&nbsp;&nbsp;&nbsp;&nbsp;<span class="attribute">manifest</span><span>=</span><span class="attribute-value">"META-INF/MANIFEST.MF"</span><span>&nbsp;&nbsp;</span><span class="comments">&lt;!--&nbsp;Manifest&nbsp;location&nbsp;--&gt;</span><span>&nbsp;</span></td></tr><tr><td class="line2">&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">/&gt;</span><span>&nbsp;</span></td></tr><tr><td class="line1"><span class="tag">&lt;/</span><span>target</span><span class="tag">&gt;</span><span>&nbsp;</span></td></tr></tbody></table></div><textarea style="display: none;" name="newcodemacro" class="xml:nocontrols:nogutter" rows="10" readonly="readonly">&lt;target name="manipulate"&gt;
310 &lt;ipojo
311 dir="${output..}" &lt;!-- Manipulated directory --&gt;
312 metadata="metadata.xml"
313 manifest="META-INF/MANIFEST.MF" &lt;!-- Manifest location --&gt;
314 /&gt;
315&lt;/target&gt;</textarea>
316<script class="javascript">
317 if(!window.newcodemacro_initialised)
318 {
319 window.newcodemacro_initialised = true;
320 window.oldonloadmethod = window.onload;
321 window.onload = function(){
322 dp.SyntaxHighlighter.HighlightAll('newcodemacro');
323 if(window.oldonloadmethod)
324 {
325 window.oldonloadmethod();
326 }
327 }
328 }
329
330</script>
331</div>
332
333
334<div class="panelMacro"><table class="infoMacro"><colgroup><col width="24"><col></colgroup><tbody><tr><td valign="top"><img src="ipojo-ant-task_files/information.gif" alt="" border="0" align="absmiddle" height="16" width="16"></td><td><b>Manifest location</b><br><p>If not set, the manifest is searched in the given directory/META-INF folder (<em>i.e.</em> <tt>$dir/META-INF/MANIFEST.MF</tt>.</p></td></tr></tbody></table></div>
Clement Escoffier83507512008-10-13 07:33:03 +0000335
Clement Escoffier8251f602009-01-15 15:35:17 +0000336<h2><a name="iPOJOAntTask-Conclusion"></a>Conclusion</h2>
Clement Escoffier6b928e92008-05-16 20:33:54 +0000337
Clement Escoffier7a7131a2009-07-21 11:43:20 +0000338<p>Subscribe to the Felix users mailing list by sending a message to <a href="mailto:users-subscribe@felix.apache.org" rel="nofollow">users-subscribe@felix.apache.org</a>; after subscribing, email questions or feedback to <a href="mailto:users@felix.apache.org" rel="nofollow">users@felix.apache.org</a>.
339<br clear="all">
340<br clear="all"></p>
Clement Escoffier6b928e92008-05-16 20:33:54 +0000341
Clement Escoffier7a7131a2009-07-21 11:43:20 +0000342 </div>
343 <img src="ipojo-ant-task_files/footer.png" class="footer">
344</div>
Clement Escoffier6b928e92008-05-16 20:33:54 +0000345
Clement Escoffier8251f602009-01-15 15:35:17 +0000346<script type="text/javascript">
347var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
348document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
349</script><script src="ipojo-ant-task_files/ga.js" type="text/javascript"></script>
350<script type="text/javascript">
Clement Escoffier7a7131a2009-07-21 11:43:20 +0000351try{
Clement Escoffier8251f602009-01-15 15:35:17 +0000352var pageTracker = _gat._getTracker("UA-1518442-4");
353pageTracker._trackPageview();
Clement Escoffier7a7131a2009-07-21 11:43:20 +0000354} catch(err) {}
Clement Escoffier8251f602009-01-15 15:35:17 +0000355</script>
Clement Escoffier7a7131a2009-07-21 11:43:20 +0000356
Clement Escoffier8251f602009-01-15 15:35:17 +0000357 </div>
358 </body></html>