Chapter 7. Building JBI Components Using Maven
Overview
- Plug-ins for packaging JBI components
- A plug-in for packaging shared libraries
- Archetypes that create starting point projects for JBI artifacts
Setting up the Maven tools
Example 7.1. POM elements for using Red Hat JBoss Fuse Maven tools
... <pluginRepositories> <pluginRepository> <id>fusesource.m2</id> <name>JBoss Fuse Open Source Community Release Repository</name> <url>http://repo.fusesource.com/maven2</url> <snapshots> <enabled>false</enabled> </snapshots> <releases> <enabled>true</enabled> </releases> </pluginRepository> </pluginRepositories> <repositories> <repository> <id>fusesource.m2</id> <name>JBoss Fuse Open Source Community Release Repository</name> <url>http://repo.fusesource.com/maven2</url> <snapshots> <enabled>false</enabled> </snapshots> <releases> <enabled>true</enabled> </releases> </repository> <repository> <id>fusesource.m2-snapshot</id> <name>JBoss Fuse Open Source Community Snapshot Repository</name> <url>http://repo.fusesource.com/maven2-snapshot</url> <snapshots> <enabled>true</enabled> </snapshots> <releases> <enabled>false</enabled> </releases> </repository> </repositories> ... <build> <plugins> <plugin> <groupId>org.apache.servicemix.tooling</groupId> <artifactId>jbi-maven-plugin</artifactId> <version>${servicemix-version}</version> <extensions>true</extensions> </plugin> </plugins> </build> ...
Creating a JBI Maven project
Example 7.2. Command for JBI maven archetypes
mvn
archetype:create
-DarchetypeGroupId=org.apache.servicemix.tooling
-DarchetypeArtifactId=servicemix-archetype-name
-DarchetypeVersion=fuse-4.0.0.0
[
-DgroupId=org.apache.servicemix.samples.embedded
] [
-DartifactId=servicemix-embedded-example
]
-DarchetypeArtifactId
argument specifies the type of project you are creating.
JBI components
jbi-component
for the project's packaging
element, which informs the Red Hat JBoss Fuse Maven tooling that the project is for a JBI component.
Example 7.3. Specifying that a maven project results in a JBI component
<project ...>
...
<groupId>org.apache.servicemix</groupId>
<artifactId>MyBindingComponent</artifactId>
<packaging>jbi-component</packaging>
...
</project>
plugin
element responsible for packaging the JBI component is shown in Example 7.4. The groupId
element, the artifactId
element, the version
element, and the extensions
element are common to all instances of the Red Hat JBoss Fuse Maven plug-in. If you use the Maven archetypes to generate the project, you should not have to change them.
Example 7.4. Plug-in specification for packaging a JBI component
... <plugin> <groupId>org.apache.servicemix.tooling</groupId> <artifactId>jbi-maven-plugin</artifactId> <version>${servicemix-version}</version> <extensions>true</extensions> <configuration> <type>service-engine</type> <bootstrap>org.apache.servicemix.samples.MyBootstrap</bootstrap> <component>org.apache.servicemix.samples.MyComponent</component> </configuration> </plugin> ...
configuration
element, along with its children, provides the Red Hat JBoss Fuse tooling with the metadata necessary to construct the jbi.xml
file required by the component.
-
type
- Specifies the type of JBI component the project is building. Valid values are:
service-engine
for creating a service enginebinding-component
for creating a binding component
-
bootstrap
- Specifies the name of the class that implements the JBI
Bootstrap
interface for the component.TipYou can omit this element if you intend to use the defaultBootstrap
implementation provided with Red Hat JBoss Fuse. -
component
- Specifies the name of the class that implements the JBI
Component
interface for that component.
Shared libraries
jbi-shared-library
for the project's packaging
element.