Getting Started
Get started quickly with Red Hat Fuse!
Abstract
Preface Copy linkLink copied to clipboard!
To get started with Fuse, you need to download and install the files for your desired container, whether that is Spring Boot, JBoss EAP, or Apache Karaf. The information and instructions here guide you in installing, developing, and building your first Fuse application for each of those containers.
Chapter 1. Getting started with Fuse on Spring Boot Copy linkLink copied to clipboard!
To develop Fuse applications on Spring Boot, get started by generating and building a Fuse sample booster project that runs on Spring Boot. The following topics provide details:
1.1. About Fuse on Spring Boot Copy linkLink copied to clipboard!
Spring Boot is an evolution of the well-known Spring container. A distinctive quality of the Spring Boot container is that container functionality is divided up into small chunks, which can be deployed independently. This enables you to deploy a container with a small footprint, specialized for a particular kind of service, and this happens to be exactly what you need to fit the paradigm of a microservices architecture.
Distinctive features of this container technology are:
- Particularly suited to running on a scalable cloud platform (Kubernetes and OpenShift).
- Small footprint (ideal for microservices architecture).
- Optimized for convention over configuration.
- No application server required. You can run a Spring Boot application Jar directly in a JVM.
1.2. Generating your booster project Copy linkLink copied to clipboard!
Fuse booster projects exist to help developers get started with running standalone applications. The instructions provided here guide you through generating one of those booster projects, the Circuit Breaker booster. This exercise demonstrates useful components of the Fuse on Spring Boot.
The Netflix/Hystrix circuit breaker enables distributed applications to handle interruptions to network connectivity and temporary unavailability of backend services. The basic idea of the circuit breaker pattern is that the loss of a dependent service is detected automatically and an alternative behavior can be programmed, in case the backend service is temporarily unavailable.
The Fuse circuit breaker booster consists of two related services:
-
A
nameservice, the backend service that returns a name to greet. -
A
greetingsservice, the frontend service that invokes thenameservice to get a name and then returns the string,Hello, NAME.
In this booster demonstration, the Hystrix circuit breaker is inserted between the greetings service and the name service. If the backend name service becomes unavailable, the greetings service can fall back to an alternative behavior and respond to the client immediately, instead of being blocked while it waits for the name service to restart.
Prerequisites
- You must have access to the Red Hat Developer Platform.
- You must have a supported version of the Java Developer Kit (JDK). See the Supported Configurations page for details.
- You must have Apache Maven 3.3.x or later.
Procedure
- Navigate to https://developers.redhat.com/launch.
Click START.
The launcher wizard prompts you to log in to your Red Hat account.
- Click the Log in or register button and then log in.
- On the Launcher page, click the Deploy an Example Application button.
- On the Create Example Application page, type the name, fuse-circuit-breaker, in the Create Example Application as field.
- Click Select an Example.
In the Example dialog, select the Circuit Breaker option. A Select a Runtime dropdown menu appears.
- From the Select a Runtime dropdown, select Fuse.
-
From the version dropdown menu, select 7.3.0 (Red Hat Fuse) (do not select the
2.21.2 (Community)version). - Click Save.
- On the Create Example Application page, click Download.
-
When you see the Your Application is Ready dialog, click
Download.zip. Your browser downloads the generated booster project (packaged as a ZIP file). - Use an archive utility to extract the generated project to a convenient location on your local file system.
1.3. Building your booster project Copy linkLink copied to clipboard!
These instructions guide you through building the Circuir Breaker booster with Fuse on Spring Boot.
Prerequisites
- You must have generated and downloaded your booster project via the Red Hat Developer Portal.
- You must have a supported version of the Java Developer Kit (JDK). See the Supported Configurations page for details.
- You must have Apache Maven 3.3.x or later.
Procedure
Open a shell prompt and build the project from the command line, using Maven:
cd fuse-circuit-breaker
cd fuse-circuit-breakerCopy to Clipboard Copied! Toggle word wrap Toggle overflow mvn clean package
mvn clean packageCopy to Clipboard Copied! Toggle word wrap Toggle overflow After Maven builds the project, it displays a Build Success message.
Open a new shell prompt and start the name service, as follows:
cd name-service
cd name-serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow mvn spring-boot:run -DskipTests -Dserver.port=8081
mvn spring-boot:run -DskipTests -Dserver.port=8081Copy to Clipboard Copied! Toggle word wrap Toggle overflow As Spring Boot starts up, you should see output similar to the following:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Open a new shell prompt and start the greetings service, as follows:
cd greetings-service
cd greetings-serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow mvn spring-boot:run -DskipTests
mvn spring-boot:run -DskipTestsCopy to Clipboard Copied! Toggle word wrap Toggle overflow As Spring Boot starts up, you should see output similar to the following:
... 2019-05-06 20:22:19.051 INFO 9729 --- [ main] o.a.c.c.s.CamelHttpTransportServlet : Initialized CamelHttpTransportServlet[name=CamelServlet, contextPath=] 2019-05-06 20:22:19.115 INFO 9729 --- [ main] b.c.e.u.UndertowEmbeddedServletContainer : Undertow started on port(s) 8080 (http) 2019-05-06 20:22:19.123 INFO 9729 --- [ main] com.redhat.fuse.boosters.cb.Application : Started Application in 7.68 seconds (JVM running for 12.66)
... 2019-05-06 20:22:19.051 INFO 9729 --- [ main] o.a.c.c.s.CamelHttpTransportServlet : Initialized CamelHttpTransportServlet[name=CamelServlet, contextPath=] 2019-05-06 20:22:19.115 INFO 9729 --- [ main] b.c.e.u.UndertowEmbeddedServletContainer : Undertow started on port(s) 8080 (http) 2019-05-06 20:22:19.123 INFO 9729 --- [ main] com.redhat.fuse.boosters.cb.Application : Started Application in 7.68 seconds (JVM running for 12.66)Copy to Clipboard Copied! Toggle word wrap Toggle overflow The greetings service exposes a REST endpoint at the
http://localhost:8080/camel/greetingsURL.Invoke the REST endpoint by either opening the URL in a web browser or by opening another shell prompt and typing the following
curlcommand:curl http://localhost:8080/camel/greetings
curl http://localhost:8080/camel/greetingsCopy to Clipboard Copied! Toggle word wrap Toggle overflow Here is the response:
{"greetings":"Hello, Jacopo"}{"greetings":"Hello, Jacopo"}Copy to Clipboard Copied! Toggle word wrap Toggle overflow To demonstrate the circuit breaker functionality provided by Camel Hystrix, kill the backend name service by typing Ctrl-C in the shell prompt window where the name service is running.
Now that the name service is unavailable, the circuit breaker kicks in to prevent the greetings service from hanging when it is invoked.
Invoke the greetings REST endpoint by either opening
http://localhost:8080/camel/greetingsin a web browser or by typing the followingcurlcommand in another shell prompt window:curl http://localhost:8080/camel/greetings
curl http://localhost:8080/camel/greetingsCopy to Clipboard Copied! Toggle word wrap Toggle overflow Here is the response:
{"greetings":"Hello, default fallback"}{"greetings":"Hello, default fallback"}Copy to Clipboard Copied! Toggle word wrap Toggle overflow In the window where the greetings service is running, the log shows the following sequence of messages:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
For more information about this example, open the Circuit Breaker - Red Hat Fuse page at http://localhost:8080/ (while the
greetings-serviceis running). This page includes a link to the Hystrix dashboard that monitors the state of the circuit breaker.
Chapter 2. Getting started with Fuse on Karaf Copy linkLink copied to clipboard!
To learn about Fuse on Karaf as well as install, develop, and build your first Fuse application on a Karaf container, the information and instructions here assist you with this. See the following topics for details:
2.1. About Fuse on Karaf Copy linkLink copied to clipboard!
Apache Karaf is based on the OSGi standard from the OSGi Alliance. OSGi originated in the telecommunications industry, where it was used to develop gateway servers that could be upgraded on the fly, without needing to shut down the server (a feature known as hot code swapping). Subsequently, OSGi container technology has found a variety of other uses and is popular for modularised applications (for example, the Eclipse IDE).
Distinctive features of this container technology are:
- Particularly suited to running in standalone mode.
- Strong support for modularisation (OSGi bundles), with sophisticated class-loading support.
- Multiple versions of a dependency can be deployed side by side in a container (but this requires some care in practice).
- Hot code swapping, enabling you to upgrade or replace a module without shutting down the container. This is a unique feature, but requires significant effort to make it work properly.
2.2. Installing Fuse on Karaf Copy linkLink copied to clipboard!
The standard installation package for Fuse 7.4 on Karaf is available for download from the Red Hat Customer Portal. It installs the standard assembly of the Karaf container, and provides the full Fuse technology stack.
Prerequisites
- You need a full-subscription account on the Red Hat Customer Portal.
- You must be logged into the customer portal.
- You must have downloaded the CodeReady Studio installer.
- You must have downloaded the Fuse on Karaf installer.
Procedure
-
Unpack the downloaded
.ziparchive file for Fuse on Apache Karaf to a convenient location on your file system,FUSE_INSTALL. Add an administrator user to the Fuse runtime.
-
Open the
FUSE_INSTALL/etc/users.propertiesfile in a text editor. -
Delete the
#character at the start of the line that starts with#admin = admin. -
Delete the
#character at the start of the line that starts with#g\:admingroup. Customize the username,
USERNAME, and password,PASSWORD, of the user entry, so that you have a user entry and an admin group entry like the following (on consecutive lines):USERNAME = PASSWORD,_g_:admingroup _g_\:admingroup = group,admin,manager,viewer,systembundles,ssh
USERNAME = PASSWORD,_g_:admingroup _g_\:admingroup = group,admin,manager,viewer,systembundles,sshCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
Save the
etc/users.propertiesfile.
-
Open the
Run the CodeReady Studio installer as follows:
java -jar DOWNLOAD_LOCATION/codereadystudio-12.12.0.GA-installer-standalone.jar
java -jar DOWNLOAD_LOCATION/codereadystudio-12.12.0.GA-installer-standalone.jarCopy to Clipboard Copied! Toggle word wrap Toggle overflow During installation:
- Accept the terms and conditions.
- Choose your preferred installation path.
- Select the Java 8 JVM.
-
At the Select Platforms and Servers step, configure the Fuse on Karaf runtime by clicking Add and browsing to the location of the
FUSE_INSTALLdirectory. - At the Select Additional Features to Install step, select Red Hat Fuse Tooling.
- CodeReady Studio starts up. When the Searching for runtimes dialog appears, click OK to create the Fuse on Karaf runtime.
(Optional) In order to use Apache Maven from the command line, you need to install and configure Maven.
NoteIf you are using CodeReady Studio exclusively, it is not strictly necessary to install Maven, because CodeReady Studio has Maven pre-installed and configured for you. However, if you plan to invoke Maven from the command line, it is necessary to perform this step.
2.3. Building your first Fuse application on Karaf Copy linkLink copied to clipboard!
This set of instructions assists you in building your first Fuse application on Karaf.
Prerequisites
- You need a full-subscription account on the Red Hat Customer Portal.
- You must be logged into the customer portal.
- You must have downloaded the CodeReady Studio installer.
- You must have downloaded and successfully installed Fuse on Karaf.
Procedure
In CodeReady Studio, create a new project, as follows:
- Select File→New→Fuse Integration Project.
-
Enter
fuse-camel-cbrin the Project Name field. - Click Next.
In the Select a Target Environment pane, choose the following settings:
- Select Standalone as the deployment platform.
-
Select Karaf/Fuse on Karaf as the runtime environment and use the Runtime (optional) dropdown menu to select the
Red Had JBoss Middleware> Red Hat Fuse 7+ Runtimeserver as the target runtime.
- After selecting the target runtime, the Camel Version is automatically selected for you and the field is grayed out.
- Click Next.
- In the Advanced Project Setup pane, select the Beginner→Content Based Router - Blueprint DSL template.
- Click Finish.
- If prompted to open the associated Fuse Integration perspective, click Yes.
Wait while CodeReady Studio downloads required artifacts and builds the project in the background.
ImportantIf this is the first time you are building a Fuse project in CodeReady Studio, it will take several minutes for the wizard to finish generating the project, as it downloads dependencies from remote Maven repositories. Do not attempt to interrupt the wizard or close CodeReady Studio while the project is building in the background.
Deploy the project to the server, as follows:
In the Servers view (bottom left corner of the Fuse Integration perspective), if the server is not already started, select the
fuse-karaf-7.4.0.fuse-740028-redhat-00001 Runtime Serverserver and click the green arrow to start it.NoteIf you see the dialog, Warning: The authenticity of host 'localhost' can’t be established., click Yes to connect to the server and access the Karaf console.
Wait until you see a message like the following in the Console view:
Karaf started in 1s. Bundle stats: 12 active, 12 total
Karaf started in 1s. Bundle stats: 12 active, 12 totalCopy to Clipboard Copied! Toggle word wrap Toggle overflow - After the server has started, switch back to the Servers view, right-click on the server and select Add and Remove from the context menu.
-
In the Add and Remove dialog, select the
fuse-camel-cbrproject and click the Add > button. - Click Finish.
You can check whether the project’s OSGi bundle has started up by going to the Terminal view and entering
bundle:list | tail. You should see some output like the following:... 228 │ Active │ 80 │ 1.0.0.201505202023 │ org.osgi:org.osgi.service.j 232 │ Active │ 80 │ 1.0.0.SNAPSHOT │ Fuse CBR Quickstart
... 228 │ Active │ 80 │ 1.0.0.201505202023 │ org.osgi:org.osgi.service.j 232 │ Active │ 80 │ 1.0.0.SNAPSHOT │ Fuse CBR QuickstartCopy to Clipboard Copied! Toggle word wrap Toggle overflow
As soon as the Camel route starts up, it will create a directory, work/cbr/input in the fuse-camel-cbr project.
-
In the Project Explorer view, click Refresh to see the newly created
work/cbr/inputdirectory. -
Copy the files you find in the project’s
src/main/datadirectory to thework/cbr/inputdirectory. Wait a few moments and then refresh the Project Explorer view again to see the same files organized by country under the
work/cbr/outputdirectory:-
order1.xmlinwork/cbr/output/others -
order2.xmlandorder4.xmlinwork/cbr/output/uk -
order3.xmlandorder5.xmlinwork/cbr/output/us
-
Undeploy the project, as follows:
-
In the Servers view, select the
Red Hat Fuse 7+ Runtime Serverserver. - Right-click on the server and select Add and Remove from the context menu.
-
In the Add and Remove dialog, select your
fuse-camel-cbrproject and click the < Remove button. - Click Finish.
-
In the Servers view, select the
Chapter 3. Getting started with Fuse on JBoss EAP Copy linkLink copied to clipboard!
This chapter introduces Fuse on JBoss EAP, and explains how to install, develop, and build your first Fuse application on a JBoss EAP container.
See the following topics for details:
3.1. About Fuse on JBoss EAP Copy linkLink copied to clipboard!
JBoss Enterprise Application Platform (EAP), based on Jakarta EE technology (previously, Java EE) from the Eclipse Foundation, was originally created to address use cases for developing enterprise applications. JBoss EAP is characterized by well-defined patterns for implementing services and standardized Java APIs (for example, for persistence, messaging, security, and so on). In recent years, this technology has evolved to be more lightweight, with the introduction of CDI for dependency injection and simplified annotations for enterprise Java beans.
Distinctive features of this container technology are:
- Particularly suited to running in standalone mode.
- Many standard services (for example, persistence, messaging, security, and so on) pre-configured and provided out-of the-box.
- Application WARs typically small and lightweight (because many dependencies are pre-installed in the container).
- Standardized, backward-compatible Java APIs.
3.2. Installing Fuse on JBoss EAP Copy linkLink copied to clipboard!
The standard installation package for Fuse 7.4 on JBoss EAP is available for download from the Red Hat Customer Portal. It installs the standard assembly of the JBoss EAP container, and provides the full Fuse technology stack.
Prerequisites
- You must have a full-subscription account on the Red Hat Customer Portal.
- You must be logged into the customer portal.
- You must have downloaded JBoss EAP and JBoss EAP 7.2 Update 01.
- You must have downloaded Fuse on JBoss EAP.
- You must have downloaded the CodeReady Studio installer.
Procedure
Run the JBoss EAP installer from a shell prompt, as follows:
java -jar DOWNLOAD_LOCATION/jboss-eap-7.2.0-installer.jar
java -jar DOWNLOAD_LOCATION/jboss-eap-7.2.0-installer.jarCopy to Clipboard Copied! Toggle word wrap Toggle overflow During installation:
- Accept the terms and conditions.
-
Choose your preferred installation path,
EAP_INSTALL, for the JBoss EAP runtime. - Create an administrative user and make a careful note of these administrative user credentials for later.
- You can accept the default settings on the remaining screens.
-
Open a shell prompt and change directory to
EAP_INSTALL. From the
EAP_INSTALLdirectory, apply JBoss EAP 7.2 Update 01. For example:bin/jboss-cli.sh "patch apply jboss-eap-7.2.1-patch.zip"
bin/jboss-cli.sh "patch apply jboss-eap-7.2.1-patch.zip"Copy to Clipboard Copied! Toggle word wrap Toggle overflow From the
EAP_INSTALLdirectory, run the Fuse on EAP installer, as follows:java -jar DOWNLOAD_LOCATION/fuse-eap-installer-7.4.0.jar
java -jar DOWNLOAD_LOCATION/fuse-eap-installer-7.4.0.jarCopy to Clipboard Copied! Toggle word wrap Toggle overflow Run the CodeReady Studio installer, as follows:
java -jar DOWNLOAD_LOCATION/codereadystudio-12.12.0.GA-installer-standalone.jar
java -jar DOWNLOAD_LOCATION/codereadystudio-12.12.0.GA-installer-standalone.jarCopy to Clipboard Copied! Toggle word wrap Toggle overflow During installation:
- Accept the terms and conditions.
- Choose your preferred installation path.
- Select the Java 8 JVM.
-
At the Select Platforms and Servers step, configure the JBoss EAP runtime by clicking Add and browsing to the location of the
EAP_INSTALLdirectory. - At the Select Additional Features to Install step, select Red Hat Fuse Tooling.
- CodeReady Studio starts up. When the Searching for runtimes dialog appears, click OK to create the JBoss EAP runtime.
(Optional) In order to use Apache Maven from the command line, you need to install and configure Maven.
NoteIf you are using CodeReady Studio exclusively, it is not strictly necessary to install Maven, because CodeReady Studio has Maven pre-installed and configured. However, if you plan to invoke Maven from the command line, you must perform this step.
3.3. Building your first Fuse application on JBoss EAP Copy linkLink copied to clipboard!
This set of instructions assists you in building your first Fuse application on JBoss EAP.
Prerequisites
- You need a full-subscription account on the Red Hat Customer Portal.
- You must be logged into the customer portal.
- You must have downloaded the CodeReady Studio installer.
- You must have downloaded and successfully installed Fuse on JBoss EAP.
Procedure
In CodeReady Studio, create a new project, as follows:
- Select File→New→Fuse Integration Project.
-
In the Project Name field, enter
eap-camel. - Click Next.
In the Select a Target Environment pane, choose the following settings:
- Select Standalone as the deployment platform.
-
Select Wildfly/Fuse on EAP as the runtime environment and use the Runtime (optional) dropdown menu to select the
JBoss EAP 7.x Runtimeserver as the target runtime.
- After selecting the target runtime, the Camel Version is automatically selected for you and the field is grayed out.
- Click Next.
- In the Advanced Project Setup pane, select the Spring Bean - Spring DSL template.
Click Finish.
ImportantIf this is the first time you are building a Fuse project in CodeReady Studio, it will take several minutes for the wizard to finish generating the project. This is because it downloads dependencies from remote Maven repositories. Do not interrupt the wizard or close CodeReady Studio while the project is building in the background.
- If prompted to open the associated Fuse Integration perspective, click Yes.
- Wait while CodeReady Studio downloads required artifacts and builds the project in the background.
Deploy the project to the server, as follows:
-
In the Servers view (bottom left corner of the Fuse Integration perspective), if the server is not already started, select the
Red Hat JBoss EAP 7.2 Runtimeserver and click the green arrow to start it. Wait until you see a message like the following in the Console view:
14:47:07,283 INFO [org.jboss.as] (Controller Boot Thread) WFLYSRV0025: JBoss EAP 7.2.0.GA (WildFly Core 6.0.11.Final-redhat-00001) started in 13948ms - Started 495 of 680 services (326 services are lazy, passive or on-demand)
14:47:07,283 INFO [org.jboss.as] (Controller Boot Thread) WFLYSRV0025: JBoss EAP 7.2.0.GA (WildFly Core 6.0.11.Final-redhat-00001) started in 13948ms - Started 495 of 680 services (326 services are lazy, passive or on-demand)Copy to Clipboard Copied! Toggle word wrap Toggle overflow - After the server has started, switch back to the Servers view, right-click the server and select Add and Remove from the context menu.
-
In the Add and Remove dialog, select the
eap-camelproject and click Add >. - Click Finish.
-
In the Servers view (bottom left corner of the Fuse Integration perspective), if the server is not already started, select the
Verify that the project is working, as follows:
-
Browse to the following URL to access the service running in the
eap-camelproject: http://localhost:8080/camel-test-spring?name=Kermit -
The browser window should show the response
Hello Kermit.
-
Browse to the following URL to access the service running in the
Undeploy the project, as follows:
-
In the Servers view, select the
Red Hat JBoss EAP 7.2 Runtimeserver. - Right-click the server and select Add and Remove from the context menu.
-
In the Add and Remove dialog, select your
eap-camelproject and click < Remove. - Click Finish.
-
In the Servers view, select the
Chapter 4. Setting up Maven locally Copy linkLink copied to clipboard!
Typical Fuse application development uses Maven to build and manage projects.
The following topics describe how to set up Maven locally:
4.1. Preparing to set up Maven Copy linkLink copied to clipboard!
Maven is a free, open source, build tool from Apache. Typically, you use Maven to build Fuse applications.
Procedure
- Download the latest version of Maven from the Maven download page.
Ensure that your system is connected to the Internet.
While building a project, the default behavior is that Maven searches external repositories and downloads the required artifacts. Maven looks for repositories that are accessible over the Internet.
You can change this behavior so that Maven searches only repositories that are on a local network. That is, Maven can run in an offline mode. In offline mode, Maven looks for artifacts in its local repository. See Section 4.3, “Using local Maven repositories”.
4.2. Adding Red Hat repositories to Maven Copy linkLink copied to clipboard!
To access artifacts that are in Red Hat Maven repositories, you need to add those repositories to Maven’s settings.xml file. Maven looks for the settings.xml file in the .m2 directory of the user’s home directory. If there is not a user specified settings.xml file, Maven uses the system-level settings.xml file at M2_HOME/conf/settings.xml.
Prerequisite
You know the location of the settings.xml file in which you want to add the Red Hat repositories.
Procedure
In the settings.xml file, add repository elements for the Red Hat repositories as shown in this example:
4.3. Using local Maven repositories Copy linkLink copied to clipboard!
If you are running the Apache Karaf container without an Internet connection, and you need to deploy an application that has dependencies that are not available offline, you can use the Maven dependency plug-in to download the application’s dependencies into a Maven offline repository. You can then distribute this customized Maven offline repository to machines that do not have an Internet connection.
Procedure
In the project directory that contains the
pom.xmlfile, download a repository for a Maven project by running a command such as the following:mvn org.apache.maven.plugins:maven-dependency-plugin:3.1.0:go-offline -Dmaven.repo.local=/tmp/my-project
mvn org.apache.maven.plugins:maven-dependency-plugin:3.1.0:go-offline -Dmaven.repo.local=/tmp/my-projectCopy to Clipboard Copied! Toggle word wrap Toggle overflow In this example, Maven dependencies and plug-ins that are required to build the project are downloaded to the
/tmp/my-projectdirectory.Edit the
etc/org.ops4j.pax.url.mvn.cfgfile to setorg.ops4j.pax.url.mvn.offlineto true. This enables offline mode:If set to true, no remote repository will be accessed when resolving artifacts
## # If set to true, no remote repository will be accessed when resolving artifacts # org.ops4j.pax.url.mvn.offline = trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow - Distribute this customized Maven offline repository internally to any machines that do not have an Internet connection.
4.4. About Maven artifacts and coordinates Copy linkLink copied to clipboard!
In the Maven build system, the basic building block is an artifact. After a build, the output of an artifact is typically an archive, such as a JAR or WAR file.
A key aspect of Maven is the ability to locate artifacts and manage the dependencies between them. A Maven coordinate is a set of values that identifies the location of a particular artifact. A basic coordinate has three values in the following form:
groupId:artifactId:version
Sometimes Maven augments a basic coordinate with a packaging value or with both a packaging value and a classifier value. A Maven coordinate can have any one of the following forms:
groupId:artifactId:version groupId:artifactId:packaging:version groupId:artifactId:packaging:classifier:version
groupId:artifactId:version
groupId:artifactId:packaging:version
groupId:artifactId:packaging:classifier:version
Here are descriptions of the values:
- groupdId
-
Defines a scope for the name of the artifact. You would typically use all or part of a package name as a group ID. For example,
org.fusesource.example. - artifactId
- Defines the artifact name relative to the group ID.
- version
-
Specifies the artifact’s version. A version number can have up to four parts:
n.n.n.n, where the last part of the version number can contain non-numeric characters. For example, the last part of1.0-SNAPSHOTis the alphanumeric substring,0-SNAPSHOT. - packaging
-
Defines the packaged entity that is produced when you build the project. For OSGi projects, the packaging is
bundle. The default value isjar. - classifier
- Enables you to distinguish between artifacts that were built from the same POM, but have different content.
Elements in an artifact’s POM file define the artifact’s group ID, artifact ID, packaging, and version, as shown here:
To define a dependency on the preceding artifact, you would add the following dependency element to a POM file:
It is not necessary to specify the bundle package type in the preceding dependency, because a bundle is just a particular kind of JAR file and jar is the default Maven package type. If you do need to specify the packaging type explicitly in a dependency, however, you can use the type element.