This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/main by this push:
new 55e7363ca55d chore: fix misleading javadoc and document
camel.extra.repos (#26328)
55e7363ca55d is described below
commit 55e7363ca55d5bc236687daf67add8243ca6744e
Author: Claus Ibsen <[email protected]>
AuthorDate: Fri Sep 11 15:20:09 2026 +0200
chore: fix misleading javadoc and document camel.extra.repos (#26328)
The javadoc on MavenDownloaderImpl.loadExtraDefaultRepositories described a
classpath properties file mechanism that was never implemented, announced
"two
complementary mechanisms" while listing only one, claimed both were
"additive
and merged" when the second property is in fact only a fallback, and used a
malformed {@value} tag referencing two fields at once.
Also document camel.extra.repos in the Camel CLI running guide: the id=url
value
format, why that form matters for settings.xml server authentication, and
the
camel.default.extra.repos.default.value fallback intended for custom
distributions.
No functional change.
Co-authored-by: Claude Opus 5 (1M context) <[email protected]>
Signed-off-by: Claus Ibsen <[email protected]>
---
.../modules/ROOT/pages/camel-jbang-running.adoc | 12 +++++++++-
.../camel/tooling/maven/MavenDownloaderImpl.java | 28 ++++++++++++++--------
2 files changed, 29 insertions(+), 11 deletions(-)
diff --git a/docs/user-manual/modules/ROOT/pages/camel-jbang-running.adoc
b/docs/user-manual/modules/ROOT/pages/camel-jbang-running.adoc
index de2016494d1e..cefdef8abcff 100644
--- a/docs/user-manual/modules/ROOT/pages/camel-jbang-running.adoc
+++ b/docs/user-manual/modules/ROOT/pages/camel-jbang-running.adoc
@@ -201,13 +201,23 @@ You can also configure repositories in
`application.properties`:
camel.jbang.repos=https://packages.atlassian.com/maven-external
----
-Or set a global default via environment variable:
+Or set a global default with the `camel.extra.repos` JVM system property,
which applies to every
+Camel CLI command without having to repeat `--repos`:
[source,bash]
----
export
JAVA_TOOL_OPTIONS="-Dcamel.extra.repos=repo1=https://repo1.example.com/maven2,repo2=https://repo2.example.com/releases"
----
+The value is a comma-separated list of repositories, where each entry is
either a plain URL or an
+`id=url` pair. Prefer the `id=url` form when the repository requires
authentication, as the id is
+what Camel matches against the `<server>` entries in `~/.m2/settings.xml`.
+
+NOTE: A custom Camel distribution can provide a baseline for this via the
+`camel.default.extra.repos.default.value` system property. It is only
consulted when
+`camel.extra.repos` is not set, so setting `camel.extra.repos` replaces that
baseline rather than
+adding to it. Apache Camel itself sets neither property.
+
== Downloading JARs over the internet
Camel CLI automatically resolves and downloads dependencies in this order:
diff --git
a/tooling/camel-tooling-maven/src/main/java/org/apache/camel/tooling/maven/MavenDownloaderImpl.java
b/tooling/camel-tooling-maven/src/main/java/org/apache/camel/tooling/maven/MavenDownloaderImpl.java
index 76831878cb76..5f731482c9a1 100644
---
a/tooling/camel-tooling-maven/src/main/java/org/apache/camel/tooling/maven/MavenDownloaderImpl.java
+++
b/tooling/camel-tooling-maven/src/main/java/org/apache/camel/tooling/maven/MavenDownloaderImpl.java
@@ -85,8 +85,10 @@ public class MavenDownloaderImpl extends ServiceSupport
implements MavenDownload
public static final String MAVEN_CENTRAL_REPO =
"https://repo1.maven.org/maven2";
public static final String APACHE_SNAPSHOT_REPO =
"https://repository.apache.org/snapshots";
- private static final String EXTRA_DEFAULT_REPOS_DEFAULT_VALUE =
"camel.default.extra.repos.default.value";
+ // extra default Maven repositories, as a comma-separated list of id=url
pairs
private static final String EXTRA_DEFAULT_REPOS_PROPERTY =
"camel.extra.repos";
+ // fallback for the above, consulted only when camel.extra.repos is not set
+ private static final String EXTRA_DEFAULT_REPOS_DEFAULT_VALUE =
"camel.default.extra.repos.default.value";
private static final RepositoryPolicy POLICY_DEFAULT = new
RepositoryPolicy(
true, RepositoryPolicy.UPDATE_POLICY_NEVER,
RepositoryPolicy.CHECKSUM_POLICY_WARN);
@@ -503,18 +505,24 @@ public class MavenDownloaderImpl extends ServiceSupport
implements MavenDownload
}
/**
- * Loads extra default Maven repositories from classpath properties files
and system property.
+ * Loads extra default Maven repositories from a system property, so they
are used in addition to Maven Central and
+ * the repositories from {@code settings.xml} without having to pass
{@code --repos} on every command.
+ * <p>
+ * The value is a comma-separated list of repositories, where each entry
is either a plain URL or an {@code id=url}
+ * pair, for example {@code
repo1=https://repo1.example.com/maven2,repo2=https://repo2.example.com/releases}.
See
+ * {@link #configureRepositories(List, Set)} for why the {@code id=url}
form is preferable.
* <p>
- * Two complementary mechanisms:
- * <ul>
- * <li>System property: {@value #EXTRA_DEFAULT_REPOS_PROPERTY or
EXTRA_DEFAULT_REPOS_DEFAULT_VALUE} (comma-separated
- * id=url pairs)</li>
- * </ul>
- * Both are additive and merged. Upstream ships no properties file
(no-op). Product builds can add the file or use
- * the system property.
+ * Two system properties are consulted, in order:
+ * <ol>
+ * <li>{@value #EXTRA_DEFAULT_REPOS_PROPERTY} – intended for end
users</li>
+ * <li>{@value #EXTRA_DEFAULT_REPOS_DEFAULT_VALUE} – a fallback used
only when the former is not set, so that
+ * a custom Camel distribution can bake in a baseline that end users are
still able to override</li>
+ * </ol>
+ * They are not merged: the first one that is set wins. Apache Camel does
not set either of them, so this is a no-op
+ * unless configured.
*/
private void loadExtraDefaultRepositories(List<RemoteRepository>
repositories) {
- // Load from system property (comma-separated id=url pairs)
+ // user-provided value first, then any baseline a custom distribution
provided
String sysProp
= System.getProperty(EXTRA_DEFAULT_REPOS_PROPERTY,
System.getProperty(EXTRA_DEFAULT_REPOS_DEFAULT_VALUE));
if (sysProp != null && !sysProp.isBlank()) {