blob: ac3095d179757e1410b53440c8062feb3de36656 [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<!--
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.
-->
<head>
<title>Apache Felix - iPOJO Maven Plug-in</title>
<link rel="icon" href="/res/favicon.ico">
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="The most powerful component model for OSGi">
<link href="/ipojo/web/bootstrap/css/bootstrap-cerulean.css" rel="stylesheet">
<link href="/ipojo/web/bootstrap/css/bootstrap-responsive.css" rel="stylesheet">
<link href="/ipojo/web/bootstrap/css/font-awesome.min.css" rel="stylesheet">
<link href="/ipojo/web/style.css" rel="stylesheet">
<!-- Overide alert's colors -->
<link href="/ipojo/web/bootstrap/css/alert.css" rel="stylesheet">
<link rel="stylesheet" href="/ipojo/web/github.css" type="text/css" media="all">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script src="/ipojo/web/bootstrap/js/bootstrap.min.js"></script>
</head>
<body data-spy="scroll" data-target=".subnav">
<div class="navbar navbar-fixed-top navbar-inverse">
<div class="navbar-inner">
<div class="container">
<a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</a>
<a class="brand" href="/documentation/subprojects/apache-felix-ipojo.html">Apache Felix iPOJO</a>
<div class="nav-collapse" id="main-menu">
<ul class="nav" id="main-menu-left">
<li><a href="/documentation/subprojects/apache-felix-ipojo/ipojo-news.html">News</a></li>
<li><a href="http://felix.apache.org/downloads.cgi">Downloads</a></li>
<li class="dropdown">
<a class="dropdown-toggle" data-toggle="dropdown" href="#">Tutorials <b class="caret"></b></a>
<ul class="dropdown-menu" id="tutorials-menu">
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-why-choose-ipojo.html">Why choose iPOJO</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-successstories.html">Success stories</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-feature-overview.html">Features</a></li>
<li class="divider"></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-gettingstarted/ipojo-in-10-minutes.html">iPOJO in 10 minutes</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-gettingstarted/how-to-use-ipojo-annotations.html">Using Annotations</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-gettingstarted/ipojo-hello-word-maven-based-tutorial.html">Maven tutorial</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-gettingstarted/ipojo-advanced-tutorial.html">Advanced tutorial</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-gettingstarted/apache-felix-ipojo-dosgi.html">Using Distributed OSGi</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-gettingstarted/ipojo-composition-tutorial.html">Application Composition</a></li>
</ul>
</li>
<li class="dropdown">
<a class="dropdown-toggle" data-toggle="dropdown" href="#">Documentation <b class="caret"></b></a>
<ul class="dropdown-menu" id="user-guide-menu">
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/describing-components/service-requirement-handler.html">Requiring a service</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/describing-components/providing-osgi-services.html">Providing a service</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/describing-components/lifecycle-callback-handler.html">Lifecycle management</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/describing-components/configuration-handler.html">Configuration</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/describing-components/architecture-handler.html">Introspection</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/describing-components/controller-lifecycle-handler.html">Impacting the lifecycle</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/describing-components/injecting-bundle-context.html">Accessing the Bundle Context</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/apache-felix-ipojo-instances.html">Creating instances</a></li>
<li class="divider"></li>
<li class="dropdown-submenu">
<a tabindex="-1" href="#">External <em>handlers</em></a>
<ul class="dropdown-menu">
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/describing-components/event-admin-handlers.html">Asynchronous communication</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/describing-components/ipojo-jmx-handler.html">JMX management</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/describing-components/extender-pattern-handler.html">Extender pattern</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/describing-components/white-board-pattern-handler.html">Whiteboard pattern</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/describing-components/temporal-service-dependency.html">Temporal dependencies</a></li>
</ul>
</li>
<li class="dropdown-submenu">
<a tabindex="-1" href="#">Configuration Admin &amp; Factories</a>
<ul class="dropdown-menu">
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/ipojo-advanced-topics/combining-ipojo-and-configuration-admin.html">iPOJO and config admin</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/ipojo-advanced-topics/ipojo-factory-service.html">Using the iPOJO Factory service</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/ipojo-advanced-topics/how-to-use-ipojo-factories.html">Factories and Instances</a></li>
</ul>
</li>
<li class="divider"></li>
<li class="dropdown-submenu">
<a tabindex="-1" href="#">Advanced topics</a>
<ul class="dropdown-menu">
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/instance-vs-service-controller.html">Instance vs. Service Controllers</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/ipojo-advanced-topics/service-binding-interceptors.html">Service Binding Interceptors</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/using-xml-schemas.html">XML Schemas</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/apache-felix-ipojo-api.html">Using the iPOJO API</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/ipojo-advanced-topics/constructing-pojo-objects-with-factory-methods.html">Constructing service objects with factory methods</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/ipojo-advanced-topics/using-ipojo-introspection-api.html">Using the introspection API</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-testing-components.html">Testing components</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/ipojo-advanced-topics/using-stereotypes.html">Using @Stereotypes</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-eclipse-integration.html">Eclipse Integration</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/ipojo-advanced-topics/ipojo-extender-configuration.html">Configuring iPOJO's Extender</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/ipojo-faq.html">FAQ</a></li>
<li class="divider"></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-devguide/how-to-write-your-own-handler.html">Handler development</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-devguide/how-to-use-ipojo-manipulation-metadata.html">Manipulation Metadata </a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-devguide/dive-into-the-ipojo-manipulation-depths.html">Dive into the iPOJO Manipulation depths</a></li>
<li><a href="http://felix.apache.org/ipojo/api/1.12.1">Javadoc</a></li>
</ul>
</li>
</ul>
</li>
<li class="dropdown" id="tools-menu">
<a class="dropdown-toggle" data-toggle="dropdown" href="#">Tools <b class="caret"></b></a>
<ul class="dropdown-menu" id="swatch-menu">
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-tools/ipojo-ant-task.html">Ant Task</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-tools/ipojo-maven-plug-in.html">Maven Plugin</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-tools/ipojo-arch-command.html">Architecture commands</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-tools/apache-felix-ipojo-online-manipulator.html">Online Manipulator</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-tools/ipojo-webconsole-plugin.html">Webconsole plugin</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-tools/ipojo-karaf-feature.html">Apache Karaf Features</a></li>
</ul>
</li>
<li class="dropdown" id="community-menu">
<a class="dropdown-toggle" data-toggle="dropdown" href="#">Community <b class="caret"></b></a>
<ul class="dropdown-menu" id="swatch-menu">
<li><a href="/documentation/subprojects/apache-felix-ipojo/ipojo-support.html">Support</a></li>
<li><a href="http://www.apache.org/">ASF</a></li>
<li><a href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>
<li><a href="http://www.apache.org/foundation/thanks.html">Sponsors</a></li>
</ul>
</li>
<li class="dropdown" id="misc-menu">
<a class="dropdown-toggle" data-toggle="dropdown" href="#">Misc <b class="caret"></b></a>
<ul class="dropdown-menu" id="swatch-menu">
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-supportedvms.html">Supported JVMs</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-supportedosgi.html">Supported OSGi Implementations</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/articles-and-presentations.html">Article & Presentations</a></li>
<li><a href="/documentation/subprojects/apache-felix-ipojo/developing-camel-mediators-with-ipojo.html">Developping Camel mediators with iPOJO</a></li>
</ul>
</li>
</ul>
<ul class="nav pull-right" id="main-menu-right">
<li><a rel="tooltip" target="_blank" href="http://felix.apache.org">Apache Felix <i class="icon-share-alt"></i></a></li>
</ul>
</div>
</div>
</div>
</div>
<div class="container">
<div class="content">
<style type="text/css">
/* The following code is added by mdx_elementid.py
It was originally lifted from http://subversion.apache.org/style/site.css */
/*
* Hide class="elementid-permalink", except when an enclosing heading
* has the :hover property.
*/
.headerlink, .elementid-permalink {
visibility: hidden;
}
h2:hover > .headerlink, h3:hover > .headerlink, h1:hover > .headerlink, h6:hover > .headerlink, h4:hover > .headerlink, h5:hover > .headerlink, dt:hover > .elementid-permalink { visibility: visible }</style>
<h1 id="how-to-use-the-ipojo-maven-plug-in">How to use the iPOJO Maven Plug-in<a class="headerlink" href="#how-to-use-the-ipojo-maven-plug-in" title="Permanent link">&para;</a></h1>
<div class="toc">
<ul>
<li><a href="#how-to-use-the-ipojo-maven-plug-in">How to use the iPOJO Maven Plug-in</a><ul>
<li><a href="#basic-configuration">Basic configuration</a></li>
<li><a href="#execution">Execution</a></li>
<li><a href="#configuration-options">Configuration Options</a></li>
<li><a href="#generate-the-skeleton-of-your-ipojo-bundle">Generate the skeleton of your iPOJO bundle</a></li>
<li><a href="#describing-ipojo-configuration-in-the-pom-file">Describing iPOJO configuration in the pom file</a></li>
</ul>
</li>
</ul>
</div>
<h2 id="basic-configuration">Basic configuration<a class="headerlink" href="#basic-configuration" title="Permanent link">&para;</a></h2>
<p>To use the iPOJO Maven plug-in, edit the following pom.xml (replace all $XXX elements):</p>
<div class="codehilite"><pre><span class="nt">&lt;project&gt;</span>
<span class="nt">&lt;modelVersion&gt;</span>4.0.0<span class="nt">&lt;/modelVersion&gt;</span>
<span class="nt">&lt;groupId&gt;</span>$YOUR_GROUP_ID<span class="nt">&lt;/groupId&gt;</span>
<span class="nt">&lt;artifactId&gt;</span>$YOUR_ARTIFACT_ID<span class="nt">&lt;/artifactId&gt;</span>
<span class="nt">&lt;version&gt;</span>$YOUR_ARTIFACT_VERSION<span class="nt">&lt;/version&gt;</span>
<span class="nt">&lt;name&gt;</span>$YOUR_PROJECT_NAME<span class="nt">&lt;/name&gt;</span>
<span class="c">&lt;!-- Use the bundle packaging type --&gt;</span>
<span class="nt">&lt;packaging&gt;</span>bundle<span class="nt">&lt;/packaging&gt;</span>
<span class="nt">&lt;dependencies&gt;</span>
$YOUR_MAVEN_DEPENDENCIES
<span class="nt">&lt;/dependencies&gt;</span>
<span class="nt">&lt;build&gt;</span>
<span class="nt">&lt;plugins&gt;</span>
<span class="c">&lt;!-- BND Maven Plugin Configuration --&gt;</span>
<span class="nt">&lt;plugin&gt;</span>
<span class="nt">&lt;groupId&gt;</span>org.apache.felix<span class="nt">&lt;/groupId&gt;</span>
<span class="nt">&lt;artifactId&gt;</span>maven-bundle-plugin<span class="nt">&lt;/artifactId&gt;</span>
<span class="nt">&lt;extensions&gt;</span>true<span class="nt">&lt;/extensions&gt;</span>
<span class="nt">&lt;configuration&gt;</span>
<span class="nt">&lt;instructions&gt;</span>
<span class="nt">&lt;Bundle-SymbolicName&gt;</span>${pom.artifactId}<span class="nt">&lt;/Bundle-SymbolicName&gt;</span>
<span class="nt">&lt;Private-Package&gt;</span>$YOUR_PRIVATE_PACKAGE<span class="nt">&lt;/Private-Package&gt;</span>
<span class="nt">&lt;Export-Package&gt;</span>$YOUR_EXPORTED_PACKAGE<span class="nt">&lt;/Export-Package&gt;</span>
<span class="nt">&lt;/instructions&gt;</span>
<span class="nt">&lt;/configuration&gt;</span>
<span class="nt">&lt;/plugin&gt;</span>
<span class="nt">&lt;plugin&gt;</span>
<span class="nt">&lt;groupId&gt;</span>org.apache.felix<span class="nt">&lt;/groupId&gt;</span>
<span class="nt">&lt;artifactId&gt;</span>maven-ipojo-plugin<span class="nt">&lt;/artifactId&gt;</span>
<span class="nt">&lt;version&gt;</span>1.12.1<span class="nt">&lt;/version&gt;</span>
<span class="nt">&lt;executions&gt;</span>
<span class="nt">&lt;execution&gt;</span>
<span class="nt">&lt;goals&gt;</span>
<span class="nt">&lt;goal&gt;</span>ipojo-bundle<span class="nt">&lt;/goal&gt;</span>
<span class="nt">&lt;/goals&gt;</span>
<span class="nt">&lt;/execution&gt;</span>
<span class="nt">&lt;/executions&gt;</span>
<span class="nt">&lt;/plugin&gt;</span>
<span class="nt">&lt;/plugins&gt;</span>
<span class="nt">&lt;/build&gt;</span>
<span class="nt">&lt;/project&gt;</span>
</pre></div>
<p>The iPOJO Maven Plug-in is generally used with the BND Maven Plug-in (more details here). However the two configurations are completely separated. So, you can use all BND Maven plug-in features. The iPOJO configuration section can be used as previously written without any changes. However it requires that your metadata file is either inside <code>src/main/ipojo</code> or inside the <code>src/main/resources</code> folder and named "metadata.xml".</p>
<h2 id="execution">Execution<a class="headerlink" href="#execution" title="Permanent link">&para;</a></h2>
<p>To manipulate your project, use the "<em>mvn clean install</em>" command. The output should be like:</p>
<div class="codehilite"><pre><span class="o">[</span>INFO<span class="o">]</span> Scanning <span class="k">for </span>projects...
<span class="o">[</span>INFO<span class="o">]</span> ----------------------------------------------------------------------------
<span class="o">[</span>INFO<span class="o">]</span> Building Hello Client
<span class="o">[</span>INFO<span class="o">]</span> task-segment: <span class="o">[</span>clean, install<span class="o">]</span>
<span class="o">[</span>INFO<span class="o">]</span> ----------------------------------------------------------------------------
<span class="o">[</span>INFO<span class="o">]</span> <span class="o">[</span>clean:clean<span class="o">]</span>
<span class="o">[</span>INFO<span class="o">]</span> Deleting directory ...hello.client<span class="se">\t</span>arget
<span class="o">[</span>INFO<span class="o">]</span> Deleting directory ...hello.client<span class="se">\t</span>arget<span class="se">\c</span>lasses
<span class="o">[</span>INFO<span class="o">]</span> Deleting directory ...hello.client<span class="se">\t</span>arget<span class="se">\t</span>est-classes
<span class="o">[</span>INFO<span class="o">]</span> Deleting directory ...hello.client<span class="se">\t</span>arget<span class="se">\s</span>ite
<span class="o">[</span>INFO<span class="o">]</span> <span class="o">[</span>resources:resources<span class="o">]</span>
<span class="o">[</span>INFO<span class="o">]</span> Using default encoding to copy filtered resources.
<span class="o">[</span>INFO<span class="o">]</span> Copying 1 resource
<span class="o">[</span>INFO<span class="o">]</span> <span class="o">[</span>compiler:compile<span class="o">]</span>
<span class="o">[</span>INFO<span class="o">]</span> Compiling 1 <span class="nb">source </span>file to ...hello.client<span class="se">\t</span>arget<span class="se">\c</span>lasses
<span class="o">[</span>INFO<span class="o">]</span> <span class="o">[</span>resources:testResources<span class="o">]</span>
<span class="o">[</span>INFO<span class="o">]</span> Using default encoding to copy filtered resources.
<span class="o">[</span>INFO<span class="o">]</span> Resource directory does not exist: ...hello.client<span class="se">\s</span>rc<span class="se">\t</span>est<span class="se">\r</span>esources
<span class="o">[</span>INFO<span class="o">]</span> <span class="o">[</span>compiler:testCompile<span class="o">]</span>
<span class="o">[</span>INFO<span class="o">]</span> No sources to compile
<span class="o">[</span>INFO<span class="o">]</span> <span class="o">[</span>surefire:test<span class="o">]</span>
<span class="o">[</span>INFO<span class="o">]</span> No tests to run.
<span class="o">[</span>INFO<span class="o">]</span> <span class="o">[</span>bundle:bundle<span class="o">]</span>
<span class="o">[</span>INFO<span class="o">]</span> <span class="o">[</span>org.apache.felix.ipojo.:ipojo-bundle <span class="o">{</span>execution: default<span class="o">}]</span>
<span class="o">[</span>INFO<span class="o">]</span> Start bundle manipulation
<span class="o">[</span>INFO<span class="o">]</span> Metadata File : ...hello.client<span class="se">\t</span>arget<span class="se">\c</span>lasses<span class="se">\m</span>etadata.xml
<span class="o">[</span>INFO<span class="o">]</span> Input Bundle File : ...hello.client<span class="se">\t</span>arget<span class="se">\h</span>ello.client-0.0.1.jar
<span class="o">[</span>INFO<span class="o">]</span> Bundle manipulation - SUCCESS
<span class="o">[</span>INFO<span class="o">]</span> <span class="o">[</span>install:install<span class="o">]</span>
<span class="o">[</span>INFO<span class="o">]</span> Installing ...hello.client<span class="se">\t</span>arget<span class="se">\h</span>ello.client-0.0.1.jar to D:<span class="se">\D</span>ev<span class="se">\m</span>aven-repo<span class="se">\i</span>pojo<span class="se">\e</span>xample<span class="se">\h</span>ello.client<span class="se">\0</span>.0.1<span class="se">\h</span>ello.client-0.0.1.jar
<span class="o">[</span>INFO<span class="o">]</span> ------------------------------------------------------------------------
<span class="o">[</span>INFO<span class="o">]</span> BUILD SUCCESSFUL
<span class="o">[</span>INFO<span class="o">]</span> ------------------------------------------------------------------------
<span class="o">[</span>INFO<span class="o">]</span> Total <span class="nb">time</span>: 9 seconds
<span class="o">[</span>INFO<span class="o">]</span> Finished at: Mon Aug 13 14:04:55 CEST 2007
<span class="o">[</span>INFO<span class="o">]</span> Final Memory: 6M/13M
<span class="o">[</span>INFO<span class="o">]</span> ------------------------------------------------------------------------
</pre></div>
<h2 id="configuration-options">Configuration Options<a class="headerlink" href="#configuration-options" title="Permanent link">&para;</a></h2>
<p>You can configure the localization of the iPOJO metadata file as following:</p>
<div class="codehilite"><pre><span class="nt">&lt;plugin&gt;</span>
<span class="nt">&lt;groupId&gt;</span>org.apache.felix<span class="nt">&lt;/groupId&gt;</span>
<span class="nt">&lt;artifactId&gt;</span>maven-ipojo-plugin<span class="nt">&lt;/artifactId&gt;</span>
<span class="nt">&lt;version&gt;</span>1.12.1<span class="nt">&lt;/version&gt;</span>
<span class="nt">&lt;executions&gt;</span>
<span class="nt">&lt;execution&gt;</span>
<span class="nt">&lt;goals&gt;</span>
<span class="nt">&lt;goal&gt;</span>ipojo-bundle<span class="nt">&lt;/goal&gt;</span>
<span class="nt">&lt;/goals&gt;</span>
<span class="nt">&lt;configuration&gt;</span>
<span class="nt">&lt;metadata&gt;</span>ipojo/meta.xml<span class="nt">&lt;/metadata&gt;</span>
<span class="nt">&lt;/configuration&gt;</span>
<span class="nt">&lt;/execution&gt;</span>
<span class="nt">&lt;/executions&gt;</span>
<span class="nt">&lt;/plugin&gt;</span>
</pre></div>
<p>In the metadata element, you can specify your metadata file or directory. The given file path is relative to the root directory ("./ipojo/meta.xml"). If the specified location is a directory, all contained XML files will be used. By default, the plugin searches metadata files into the <code>src/main/ipojo</code> folder. If not found then it searches for <code>target/classes/metadata.xml</code> and <code>./metadata.xml</code>.</p>
<div class="alert alert-info">
The directory support was introduced in the `1.7.0` version. Previously only one metadata file was found.
Before the `1.7.0`, the set location was searched in all resource folders. This is no more supported because it's an anti-pattern.
</div>
<p>The second option allows skipping annotations processing, by using the <code>ignoreAnnotations</code> element:</p>
<div class="codehilite"><pre><span class="nt">&lt;plugin&gt;</span>
<span class="nt">&lt;groupId&gt;</span>org.apache.felix<span class="nt">&lt;/groupId&gt;</span>
<span class="nt">&lt;artifactId&gt;</span>maven-ipojo-plugin<span class="nt">&lt;/artifactId&gt;</span>
<span class="nt">&lt;version&gt;</span>1.12.1<span class="nt">&lt;/version&gt;</span>
<span class="nt">&lt;executions&gt;</span>
<span class="nt">&lt;execution&gt;</span>
<span class="nt">&lt;goals&gt;</span>
<span class="nt">&lt;goal&gt;</span>ipojo-bundle<span class="nt">&lt;/goal&gt;</span>
<span class="nt">&lt;/goals&gt;</span>
<span class="nt">&lt;configuration&gt;</span>
<span class="nt">&lt;ignoreAnnotations&gt;</span>true<span class="nt">&lt;/ignoreAnnotations&gt;</span>
<span class="nt">&lt;/configuration&gt;</span>
<span class="nt">&lt;/execution&gt;</span>
<span class="nt">&lt;/executions&gt;</span>
<span class="nt">&lt;/plugin&gt;</span>
</pre></div>
<p>You can also ignore embedded XML-Schemas to use external ones. To do so, add the <code>ignoreEmbeddedSchemas</code>. If set to <code>true</code>, the manipulator doesn't use embedded XML-Schemas:</p>
<div class="codehilite"><pre><span class="nt">&lt;plugin&gt;</span>
<span class="nt">&lt;groupId&gt;</span>org.apache.felix<span class="nt">&lt;/groupId&gt;</span>
<span class="nt">&lt;artifactId&gt;</span>maven-ipojo-plugin<span class="nt">&lt;/artifactId&gt;</span>
<span class="nt">&lt;version&gt;</span>1.12.1<span class="nt">&lt;/version&gt;</span>
<span class="nt">&lt;executions&gt;</span>
<span class="nt">&lt;execution&gt;</span>
<span class="nt">&lt;goals&gt;</span>
<span class="nt">&lt;goal&gt;</span>ipojo-bundle<span class="nt">&lt;/goal&gt;</span>
<span class="nt">&lt;/goals&gt;</span>
<span class="nt">&lt;configuration&gt;</span>
<span class="nt">&lt;ignoreEmbeddedSchemas&gt;</span>true<span class="nt">&lt;/ignoreEmbeddedSchemas&gt;</span>
<span class="nt">&lt;/configuration&gt;</span>
<span class="nt">&lt;/execution&gt;</span>
<span class="nt">&lt;/executions&gt;</span>
<span class="nt">&lt;/plugin&gt;</span>
</pre></div>
<h2 id="generate-the-skeleton-of-your-ipojo-bundle">Generate the skeleton of your iPOJO bundle<a class="headerlink" href="#generate-the-skeleton-of-your-ipojo-bundle" title="Permanent link">&para;</a></h2>
<p>The maven-ipojo-plugin provides a way to generate the skeleton of your project. To generate this structure, just launch the following command:</p>
<div class="codehilite"><pre>mvn org.apache.maven.plugins:maven-archetype-plugin:generate <span class="se">\</span>
-DarchetypeArtifactId<span class="o">=</span>maven-ipojo-plugin <span class="se">\</span>
-DarchetypeGroupId<span class="o">=</span>org.apache.felix <span class="se">\</span>
-DartifactId<span class="o">=</span>ARTIFACT_NAME_OF_YOUR_PROJECT <span class="se">\</span>
-DgroupId<span class="o">=</span>GROUP_ID_OF_YOUR_PROJECT <span class="se">\</span>
-DarchetypeVersion<span class="o">=</span>VERSION_OF_YOUR_PROJECT <span class="se">\</span>
-DpackageName<span class="o">=</span>PACKAGE_NAME
</pre></div>
<p>This command generates :
<em> a pom file (to update),
</em> the src/main/java and src/main/resources folders,
* the structure of your package name.</p>
<p>The generated project uses iPOJO annotation and is ready to be deployed.</p>
<div class="alert alert-info" markdown="1">
<h4>Maven Archetype</h4>
The maven-ipojo-plugin archetype generates a pom file using the latest released version of the maven-ipojo-plugin.
</div>
<h2 id="describing-ipojo-configuration-in-the-pom-file">Describing iPOJO configuration in the pom file<a class="headerlink" href="#describing-ipojo-configuration-in-the-pom-file" title="Permanent link">&para;</a></h2>
<p>It is also possible to describe iPOJO components and instances inside the pom file (avoiding using a externalized file). The configuration can be described in the <code>metadata</code> attribute inside a CDATA block.</p>
<div class="codehilite"><pre><span class="nt">&lt;plugin&gt;</span>
<span class="nt">&lt;groupId&gt;</span>org.apache.felix<span class="nt">&lt;/groupId&gt;</span>
<span class="nt">&lt;artifactId&gt;</span>maven-ipojo-plugin<span class="nt">&lt;/artifactId&gt;</span>
<span class="nt">&lt;version&gt;</span>1.12.1<span class="nt">&lt;/version&gt;</span>
<span class="nt">&lt;executions&gt;</span>
<span class="nt">&lt;execution&gt;</span>
<span class="nt">&lt;goals&gt;</span>
<span class="nt">&lt;goal&gt;</span>ipojo-bundle<span class="nt">&lt;/goal&gt;</span>
<span class="nt">&lt;/goals&gt;</span>
<span class="nt">&lt;configuration&gt;</span>
<span class="nt">&lt;ignoreAnnotations&gt;</span>true<span class="nt">&lt;/ignoreAnnotations&gt;</span>
<span class="nt">&lt;metadata&gt;</span>
<span class="cp">&lt;![CDATA[</span>
<span class="cp"> &lt;ipojo</span>
<span class="cp"> xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;</span>
<span class="cp"> xsi:schemaLocation=&quot;org.apache.felix.ipojo http://felix.apache.org/ipojo/schemas/CURRENT/core.xsd&quot;</span>
<span class="cp"> xmlns=&quot;org.apache.felix.ipojo&quot;&gt;</span>
<span class="cp"> &lt;component</span>
<span class="cp"> classname=&quot;org.apache.felix.ipojo.test.scenarios.component.LifecycleControllerTest&quot;</span>
<span class="cp"> name=&quot;LFC-Test&quot;&gt;</span>
<span class="cp"> &lt;provides /&gt;</span>
<span class="cp"> &lt;controller field=&quot;m_state&quot; /&gt;</span>
<span class="cp"> &lt;properties&gt;</span>
<span class="cp"> &lt;property name=&quot;conf&quot; field=&quot;m_conf&quot; method=&quot;setConf&quot; /&gt;</span>
<span class="cp"> &lt;/properties&gt;</span>
<span class="cp"> &lt;/component&gt;</span>
<span class="cp"> &lt;component</span>
<span class="cp"> classname=&quot;org.apache.felix.ipojo.test.scenarios.component.LifecycleControllerTest&quot;</span>
<span class="cp"> name=&quot;LFC-Test-Immediate&quot; immediate=&quot;true&quot; architecture=&quot;true&quot;&gt;</span>
<span class="cp"> &lt;provides /&gt;</span>
<span class="cp"> &lt;controller field=&quot;m_state&quot; /&gt;</span>
<span class="cp"> &lt;properties&gt;</span>
<span class="cp"> &lt;property name=&quot;conf&quot; field=&quot;m_conf&quot; method=&quot;setConf&quot; /&gt;</span>
<span class="cp"> &lt;/properties&gt;</span>
<span class="cp"> &lt;/component&gt;</span>
<span class="cp"> &lt;/ipojo&gt;</span>
<span class="cp"> ]]&gt;</span>
<span class="nt">&lt;/metadata&gt;</span>
<span class="nt">&lt;/configuration&gt;</span>
<span class="nt">&lt;/execution&gt;</span>
<span class="nt">&lt;/executions&gt;</span>
<span class="nt">&lt;/plugin&gt;</span>
</pre></div>
</div>
</div>
<hr/>
<div class="container">
<footer id="footer">
<div class="row">
<div class="trademarkFooter span7">
Apache Felix, Felix, Apache, the Apache feather logo, and the Apache Felix project
logo are trademarks of The Apache Software Foundation. All other marks mentioned
may be trademarks or registered trademarks of their respective owners.
</div>
<div class="timestamp span3 offset2">
Rev. 1700393 by cziegeler on Tue, 1 Sep 2015 06:04:06 +0000
</div>
</div>
</footer>
</div>
</body>
<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
try{
var pageTracker = _gat._getTracker("UA-1518442-4");
pageTracker._trackPageview();
} catch(err) {}
</script>
</html>