14.4. Configuring Maven Proxies Directly
Overview
The default approach to configuring the Maven proxy settings is to edit the properties from the
io.fabric8.agent
PID and the io.fabric8.maven
PID. Because these properties are set in a profile, they are immediately available to all containers in a fabric.
Note
In order to use the direct configuration approach, you must at least set the
org.ops4j.pax.url.mvn.repositories
property in the io.fabric8.agent
PID. If this property is not set, the Fabric8 agent falls back to reading configuration from the Maven settings.xml
file.
Note
If you also need to configure a HTTP proxy, it is recommended that you take the approach of configuring through the Maven
settings.xml
file. See Section 14.5, “Configuring Maven Proxies and HTTP Proxies through settings.xml”.
Tools for editing configuration
The examples in the following sections show how to modify Maven proxy configuration using Karaf console commands (for example, by invoking
fabric:profile-edit
). It is worth recalling, however, that there are several different tools you can use to modify the settings in a fabric:
- Karaf console—use the
fabric:*
family of commands (for example,fabric:profile-edit
). - Fuse Management Console (Hawtio)—you can edit profile settings through the Profile tab or the Wiki tab in the Fabric perspective of the Hawtio console, http://localhost:8181/hawtio/login.
- Git configuration—you can edit profile settings by cloning the Git profile repository. See Chapter 16, Configuring with Git for details.
Rolling out configuration changes
The examples in the following sections show the form of command for editing the current version of the profile, which causes the changes to take effect immediately in the current fabric. If you prefer to have a more controlled rollout of configuration changes, however, you should use profile versioning to roll out the changes (see Section 6.3, “Profile Versions”).
For example, instead of adding a remote repository to the current version of the
default
profile, as follows:
profile-edit --pid io.fabric8.agent/org.ops4j.pax.url.mvn.repositories='http://foo/bar@id=myfoo' --append default
You could implement a phased rollout using versions, as follows (assuming the current version is
1.0
):
version-create 1.1 profile-edit --pid io.fabric8.agent/org.ops4j.pax.url.mvn.repositories='http://foo/bar@id=myfoo' --append default 1.1
You can now upgrade a specific container to version
1.1
, using the following command:
container-upgrade 1.1 mycontainer
Adding a remote Maven repository
To add another remote Maven repository to the list of remote repositories used by the Maven proxy, add the relevant repository URL to the comma-separated list of repository URLs in the
org.ops4j.pax.url.mvn.repositories
property of the io.fabric8.agent
PID in the default
profile (not forgetting to specify the mandatory @id
suffix in the repository URL).
For example, to add the
http://foo/bar
Maven repository to the list of remote repositories, enter the following console command:
profile-edit --pid io.fabric8.agent/org.ops4j.pax.url.mvn.repositories='http://foo/bar@id=myfoo' --append default
Note the following points about this configuration approach:
- The preceding setting simultaneously updates the
io.fabric8.maven/io.fabric8.maven.repositories
property (which, by default, is configured to copy the contents of theio.fabric8.agent/org.ops4j.pax.url.mvn.repositories
property). This is the property that actually configures the Maven proxy. - By editing this property in the
default
profile (which is normally the base profile of every profile), you ensure that this setting is propagated to all containers and to all Maven proxies in the Fabric. - The preceding command immediately changes the configuration of all containers at the current version. If you prefer to implement a phased rollout of the new configuration, use profile versions, as described in Section 6.3, “Profile Versions”.
Note
The
@id
option specifies the name of the repository and is required. You can choose an arbitrary value for this ID.