Fuse ESB requires that all service units are bundled into a service assembly before they can be deployed to a container. The Fuse ESB Maven plug-in collects all of the service units to be bundled and the metadata necessary for packaging. It will then build a service assembly containing the service units.
Fuse ESB provides a Maven artifact for seeding a service assembly project. You can seed a
project with the smx-arch command. As shown in Example C.8, the smx-arch command takes two arguments:
the groupId value and the artifactId values, which correspond to
the project's group ID and artifact ID.
Example C.8. Maven archetype command for service assemblies
smx-arch sa ["-DgroupId=my.group.id"] ["-DartifactId=my.artifact.id"]
![]() | Important |
|---|---|
The double quotes(") are required when using the |
T configure the Maven plug-in to package the results of the project build as a service
assembly, change the value of the project's packaging element
to jbi-service-assembly, as shown in Example C.9.
Example C.9. Configuring the Maven plug-in to build a service assembly
<project ...>
<modelVersion>4.0.0</modelVersion>
...
<groupId>com.widgets.demo.cxf-wsdl-first</groupId>
<artifactId>cxf-wsdl-first-sa</artifactId>
<name>CXF WSDL Fisrt Demo :: Service Assembly</name>
<packaging>jbi-service-assembly</packaging>
...
</project>The Maven plug-in must know what service units are being bundled into the service
assembly. This is done by specifying the service units as dependencies, using the standard
Maven dependencies element. Add a dependency child element for each service unit. Example C.10 shows the configuration for a service assembly that bundles two service units.
Example C.10. Specifying the target components for a service unit
...
<dependencies>
<dependency>
<groupId>com.widgets.demo.cxf-wsdl-first</groupId>
<artifactId>cxfse-wsdl-first-su</artifactId>
<version>1.0</version>
</dependency>
<dependency>
<groupId>com.widgets.demo.cxf-wsdl-first</groupId>
<artifactId>cxfbc-wsdl-first-su</artifactId>
<version>1.0</version>
</dependency>
</dependencies>
...Example C.11 shows a POM file for a project that is building a service assembly.
Example C.11. POM for a service assembly project
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.widgets.demo</groupId>
<artifactId>cxf-wsdl-first</artifactId>
<version>1.0</version>
</parent>
<groupId>com.widgets.demo.cxf-wsdl-first</groupId>
<artifactId>cxf-wsdl-first-sa</artifactId>
<name>CXF WSDL Fisrt Demo :: Service Assemby</name>
<packaging>jbi-service-assembly</packaging>
<dependencies>
<dependency>
<groupId>com.widgets.demo.cxf-wsdl-first</groupId>
<artifactId>cxfse-wsdl-first-su</artifactId>
<version>1.0</version>
</dependency>
<dependency>
<groupId>com.widgets.demo.cxf-wsdl-first</groupId>
<artifactId>cxfbc-wsdl-first-su</artifactId>
<version>1.0</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.servicemix.tooling</groupId>
<artifactId>jbi-maven-plugin</artifactId>
<extensions>true</extensions>
</plugin>
</plugins>
</build>
</project>The POM in Example C.11 does the following:
Specifies that it is a part of the top-level project shown in Example C.2 | |
Specifies that this project builds a service assembly | |
Specifies the service units being bundled by the service assembly | |
Specifies to use the Fuse ESB Maven plug-in |






![[Important]](imagesdb/important.gif)


