Chapter 9. Setting Maven dependencies in your project
You can use an external Maven repository to deploy a project. When you create a project, Business Central uses the Maven repositories that are configured for Business Central. You can use the Maven global or user settings to direct all Red Hat Process Automation Manager projects to retrieve dependencies from the public Red Hat Process Automation Manager repository by modifying the following files:
-
The Maven
settings.xmlfile. -
The Maven project object model (POM) file (
pom.xml).
For more information, see Packaging and deploying a project.
9.1. Modify the Maven settings file
You can configure Business Central and Process Server to use an external Maven repository, such as Nexus, instead of the built-in repository. In this case, when you build projects in Business Central, all built project KJAR files are pushed into this external repository. You can progress these files through the repository as necessary to implement your integration process, and deploy the KJAR files using Business Central or the Process Server REST API.
Prerequisite
Business Central and Process Server are installed. For installation options, see Planning a Red Hat Process Automation Manager installation.
Procedure
-
Create a Maven
settings.xmlfile with connection and access details for your external repository. For details about thesettings.xmlfile, see the Maven Settings Reference. -
Save the file in a known location, for example,
/opt/custom-config/settings.xml. -
In your Red Hat Process Automation Manager installation directory, navigate to the
standalone-full.xmlfile. For example, if you use a Red Hat JBoss EAP installation for Red Hat Process Automation Manager, go to$EAP_HOME/standalone/configuration/standalone-full.xml. Open
standalone-full.xmland under the<system-properties>tag, set thekie.maven.settings.customproperty to the full path name of thesettings.xmlfile.For example:
<property name="kie.maven.settings.custom" value="/opt/custom-config/settings.xml"/>
- Start or restart Business Central and Process Server.
9.2. Modify the Maven POM file
To use the correct Maven dependencies in your Red Hat Process Automation Manager project, you must add relevant bill of materials (BOM) files to the project’s pom.xml file. When you add the BOM files, the correct versions of transitive dependencies from the provided Maven repositories are included in the project.
For more information, see What is the mapping between RHPAM product and maven library version?.
Procedure
Declare the BOM in the
pom.xmlfile. For example:<dependencyManagement> <dependencies> <dependency> <groupId>org.jboss.bom</groupId> <artifactId>rhpam-platform-bom</artifactId> <version>7.0.0-redhat-3</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <!-- Your dependencies --> </dependencies>
-
Declare dependencies required for your project in the
<dependencies>tag. After you import the product BOM into your project, the versions of the user-facing product dependencies are defined so you do not need to specify the<version>sub-element of these<dependency>elements. However, you must use the<dependency>element to declare dependencies which you want to use in your project. For standalone projects that are not authored in Business Central, specify all dependencies required for your projects. In projects that you author in Business Central, the basic Drools and jBPM engine dependencies are provided automatically by Business Central.
For a basic Red Hat Process Automation Manager project, declare the following dependencies, depending on the features that you want to use:
Embedded jBPM engine dependencies
<!-- Public KIE API --> <dependency> <groupId>org.kie</groupId> <artifactId>kie-api</artifactId> </dependency> <!-- jBPM engine core dependencies --> <dependency> <groupId>org.jbpm</groupId> <artifactId>jbpm-flow</artifactId> </dependency> <dependency> <artifactId>jbpm-flow-builder</artifactId> </dependency> <dependency> <groupId>org.jbpm</groupId> <artifactId>jbpm-bpmn2</artifactId> </dependency> <dependency> <groupId>org.jbpm</groupId> <artifactId>jbpm-runtime-manager</artifactId> </dependency> <dependency> <groupId>org.jbpm</groupId> <artifactId>jbpm-persistence-jpa</artifactId> </dependency> <dependency> <groupId>org.jbpm</groupId> <artifactId>jbpm-query-jpa</artifactId> </dependency> <dependency> <groupId>org.jbpm</groupId> <artifactId>jbpm-audit</artifactId> </dependency> <dependency> <groupId>org.jbpm</groupId> <artifactId>jbpm-kie-services</artifactId> </dependency> <!-- Dependency needed for default WorkItemHandler implementations. --> <dependency> <groupId>org.jbpm</groupId> <artifactId>jbpm-workitems-core</artifactId> </dependency> <!-- Logging dependency. You can use any logging framework compatible with slf4j. --> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>${logback.version}</version> </dependency>For a Red Hat Process Automation Manager project that uses CDI, you typically declare the following dependencies:
CDI-enabled jBPM engine dependencies
<dependency> <groupId>org.kie</groupId> <artifactId>kie-api</artifactId> </dependency> <dependency> <groupId>org.jbpm</groupId> <artifactId>jbpm-kie-services</artifactId> </dependency> <dependency> <groupId>org.jbpm</groupId> <artifactId>jbpm-services-cdi</artifactId> </dependency>
For a basic Red Hat Process Automation Manager project, declare the following dependencies:
Embedded Drools engine dependencies
<dependency> <groupId>org.drools</groupId> <artifactId>drools-compiler</artifactId> </dependency> <!-- Dependency for persistence support. --> <dependency> <groupId>org.drools</groupId> <artifactId>drools-persistence-jpa</artifactId> </dependency> <!-- Dependencies for decision tables, templates, and scorecards. For other assets, declare org.drools:drools-workbench-models-* dependencies. --> <dependency> <groupId>org.drools</groupId> <artifactId>drools-decisiontables</artifactId> </dependency> <dependency> <groupId>org.drools</groupId> <artifactId>drools-templates</artifactId> </dependency> <dependency> <groupId>org.drools</groupId> <artifactId>drools-scorecards</artifactId> </dependency> <!-- Dependency for loading KJARs from a Maven repository using KieScanner. --> <dependency> <groupId>org.kie</groupId> <artifactId>kie-ci</artifactId> </dependency>
To use the Process Server, declare the following dependencies:
Client application Process Server dependencies
<dependency> <groupId>org.kie.server</groupId> <artifactId>kie-server-client</artifactId> </dependency>
To create a remote client for Red Hat Process Automation Manager, declare the following dependency:
Client dependency
<dependency> <groupId>org.uberfire</groupId> <artifactId>uberfire-rest-client</artifactId> </dependency>
When creating a JAR file that includes assets, such as rules and process definitions, specify the packaging type for your Maven project as
kjarand useorg.kie:kie-maven-pluginto process thekjarpackaging type located under the<project>element. In the following example,${kie.version}is the Maven library version listed in What is the mapping between RHPAM product and maven library version?:<packaging>kjar</packaging> <build> <plugins> <plugin> <groupId>org.kie</groupId> <artifactId>kie-maven-plugin</artifactId> <version>${kie.version}</version> <extensions>true</extensions> </plugin> </plugins> </build>

Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.