| Title: EBAMavenPluginProject |
| |
| <a name="EBAMavenPluginProject-EBAMavenPlugin"></a> |
| # EBA Maven Plugin |
| |
| The EBA Maven Plugin provides the ability to generate EBA archives using |
| Maven. The EBA archive format is described in [Applications](applications.html) |
| . An EBA archive can optionally contain an Application manifest |
| (APPLICATION.MF). This can be added in one of two ways |
| |
| 1. Hand written and added into the archive. |
| 1. Generated based on pom configuration. |
| |
| <a name="EBAMavenPluginProject-UsingthePlugin"></a> |
| ## Using the Plugin |
| |
| The plugin is included by as follows: |
| |
| |
| <build> |
| <plugins> |
| <plugin> |
| <groupId>org.apache.aries</groupId> |
| <artifactId>eba-maven-plugin</artifactId> |
| </plugin> |
| </plugins> |
| </build> |
| |
| |
| By default it will not generate a manifest, so in the above example it will |
| attempt to copy a pre-defined APPLICATION.MF from |
| src/main/resources/META-INF. If that file does not exist, then no |
| application manifest will be included. |
| |
| <a name="EBAMavenPluginProject-GeneratinganAPPLICATION.MF"></a> |
| ## Generating an APPLICATION.MF |
| |
| The following example shows how to get the plugin to generate an |
| APPLICATION.MF based on the pom configuration: |
| |
| |
| <build> |
| <plugins> |
| <plugin> |
| <groupId>org.apache.aries</groupId> |
| <artifactId>eba-maven-plugin</artifactId> |
| <configuration> |
| <generateManifest>true</generateManifest> |
| </configuration> |
| </plugin> |
| </plugins> |
| </build> |
| |
| |
| The pom to application manfiest header mapping is as follows: |
| * Pom <groupId/>.<artifactId/> -> Application-SymbolicName |
| * Pom <name/> -> Application-Name |
| * Pom <version/> -> Application-Version (cleaned up for OSGi) |
| * Pom <description/> -> Application-Description |
| * Pom <dependencies/> -> Application-Content |
| |
| <a name="EBAMavenPluginProject-OverridingApplication-SymbolicName"></a> |
| ## Overriding Application-SymbolicName |
| |
| The application symbolic name defaults to the |
| $\{project.groupId\}.$\{project.artifaceId\}. The following shows how to override |
| this: |
| |
| |
| <configuration> |
| <instructions> |
| <Application-SymbolicName>${project.artifaceId}</Application-SymbolicName> |
| </instructions> |
| </configuration> |
| |
| |
| <a name="EBAMavenPluginProject-AddingApplication-ExportServiceandApplication-ImportServiceheaders"></a> |
| ## Adding Application-ExportService and Application-ImportService headers |
| |
| The application import service and export service headers can be set as |
| follows. The text inside the elements is included as-is. |
| |
| |
| <configuration> |
| <instructions> |
| <Application-ExportService>...</Application-ExportService> |
| <Application-ImportService>...</Application-ImportService> |
| </instructions> |
| </configuration> |
| |
| <a name="EBAMavenPluginProject-AddingUseBundleheader"></a> |
| ## Adding the Use-Bundle header |
| |
| The application Use-Bundle header can be set as |
| follows. The text inside the elements is included as-is. |
| |
| |
| <configuration> |
| <instructions> |
| <Use-Bundle>...</Use-Bundle> |
| </instructions> |
| </configuration> |
| |
| <a name="EBAMavenPluginProject-Includingtransitivedependencies"></a> |
| ## Including transitive dependencies (deprecated) |
| |
| This configuration option is deprecated in favor of <archiveContent />. |
| |
| By default, the archive will only include the direct dependencies of the |
| project. Transitive dependencies can be includes as follows: |
| |
| <configuration> |
| <useTransitiveDependencies>true</useTransitiveDependencies> |
| </configuration> |
| |
| <a name="EBAMavenPluginProject-Archivecontent"></a> |
| ## Including bundles in the archive |
| |
| By default, the archive will only include the direct dependencies of the project. The `<archiveContent/>` element can be used to control the archive artifact contents. The following shows how to include all direct and transitive dependencies. |
| |
| <configuration> |
| <archiveContent>all</archiveContent> |
| </configuration> |
| |
| The following shows how to exclude all dependencies from the archive. This is useful if you just want the application definition and will use a bundle repository to provision the bundles during deployment. |
| |
| <configuration> |
| <archiveContent>none</archiveContent> |
| </configuration> |
| |
| The following specifies the default of including only the direct dependencies (assumes the application contents and direct dependencies are the same). |
| |
| <configuration> |
| <archiveContent>applicationContent</archiveContent> |
| </configuration> |
| |
| |