You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2023/03/06 08:26:39 UTC
[camel] branch camel-3.x updated: CAMEL-18983: camel-jbang - export - Add known maven repos such when using camel-jira.
This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a commit to branch camel-3.x
in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/camel-3.x by this push:
new 0811758c6b2 CAMEL-18983: camel-jbang - export - Add known maven repos such when using camel-jira.
0811758c6b2 is described below
commit 0811758c6b22c4f7b055695aeda58ba678620880
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Mon Mar 6 09:26:00 2023 +0100
CAMEL-18983: camel-jbang - export - Add known maven repos such when using camel-jira.
---
.../dsl/jbang/core/commands/ExportBaseCommand.java | 26 +++++++++++++++-------
.../dsl/jbang/core/commands/ExportCamelMain.java | 2 +-
.../dsl/jbang/core/commands/ExportQuarkus.java | 4 ++--
.../dsl/jbang/core/commands/ExportSpringBoot.java | 4 ++--
.../apache/camel/dsl/jbang/core/commands/Run.java | 9 ++++++++
.../camel/main/download/DownloadListener.java | 7 ++++++
.../main/download/MavenDependencyDownloader.java | 13 +++++++++--
7 files changed, 50 insertions(+), 15 deletions(-)
diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportBaseCommand.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportBaseCommand.java
index 4016c4cc556..856b505707b 100644
--- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportBaseCommand.java
+++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportBaseCommand.java
@@ -29,6 +29,7 @@ import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.Set;
+import java.util.StringJoiner;
import java.util.TreeSet;
import java.util.function.Function;
import java.util.stream.Collectors;
@@ -472,23 +473,32 @@ abstract class ExportBaseCommand extends CamelCommand {
* @param camelVersion the camel version
* @return repositories or null if none are in use
*/
- protected static String getMavenRepos(Properties prop, String camelVersion) {
- String answer = prop.getProperty("camel.jbang.repos");
+ protected static String getMavenRepos(File settings, Properties prop, String camelVersion) throws Exception {
+ StringJoiner sj = new StringJoiner(",");
+
+ String repos = prop.getProperty("camel.jbang.repos");
+ if (repos != null) {
+ sj.add(repos);
+ }
if (camelVersion == null) {
camelVersion = new DefaultCamelCatalog().getCatalogVersion();
}
-
// include apache snapshot repo if we use SNAPSHOT version of Camel
if (camelVersion.endsWith("-SNAPSHOT")) {
- if (answer == null) {
- answer = "https://repository.apache.org/content/groups/snapshots/";
- } else if (!answer.contains("https://repository.apache.org/content/groups/snapshots/")) {
- answer += ",https://repository.apache.org/content/groups/snapshots/";
+ sj.add("https://repository.apache.org/content/groups/snapshots/");
+ }
+
+ // there may be additional extra repositories
+ List<String> lines = Files.readAllLines(settings.toPath());
+ for (String line : lines) {
+ if (line.startsWith("repository=")) {
+ String r = StringHelper.after(line, "repository=");
+ sj.add(r);
}
}
- return answer;
+ return sj.toString();
}
protected static boolean hasModeline(File settings) {
diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportCamelMain.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportCamelMain.java
index 73e6c079f52..fe86d723193 100644
--- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportCamelMain.java
+++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportCamelMain.java
@@ -141,7 +141,7 @@ class ExportCamelMain extends Export {
Properties prop = new CamelCaseOrderedProperties();
RuntimeUtil.loadProperties(prop, settings);
- String repos = getMavenRepos(prop, camelVersion);
+ String repos = getMavenRepos(settings, prop, camelVersion);
if (repos == null) {
context = context.replaceFirst("\\{\\{ \\.MavenRepositories }}", "");
} else {
diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportQuarkus.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportQuarkus.java
index 6731c7528c8..923ddcee67f 100644
--- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportQuarkus.java
+++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportQuarkus.java
@@ -224,7 +224,7 @@ class ExportQuarkus extends Export {
Properties prop = new CamelCaseOrderedProperties();
RuntimeUtil.loadProperties(prop, settings);
// quarkus controls the camel version
- String repos = getMavenRepos(prop, quarkusVersion);
+ String repos = getMavenRepos(settings, prop, quarkusVersion);
CamelCatalog catalog = CatalogLoader.loadQuarkusCatalog(repos, quarkusVersion);
if (camelVersion == null) {
@@ -333,7 +333,7 @@ class ExportQuarkus extends Export {
Properties prop = new CamelCaseOrderedProperties();
RuntimeUtil.loadProperties(prop, settings);
// quarkus controls the camel version
- String repos = getMavenRepos(prop, quarkusVersion);
+ String repos = getMavenRepos(settings, prop, quarkusVersion);
CamelCatalog catalog = CatalogLoader.loadQuarkusCatalog(repos, quarkusVersion);
if (camelVersion == null) {
diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportSpringBoot.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportSpringBoot.java
index ef0264add9d..d91e804b140 100644
--- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportSpringBoot.java
+++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportSpringBoot.java
@@ -143,7 +143,7 @@ class ExportSpringBoot extends Export {
Properties prop = new CamelCaseOrderedProperties();
RuntimeUtil.loadProperties(prop, settings);
- String repos = getMavenRepos(prop, camelSpringBootVersion);
+ String repos = getMavenRepos(settings, prop, camelSpringBootVersion);
CamelCatalog catalog = CatalogLoader.loadSpringBootCatalog(repos, camelSpringBootVersion);
String camelVersion = catalog.getLoadedVersion();
@@ -256,7 +256,7 @@ class ExportSpringBoot extends Export {
Properties prop = new CamelCaseOrderedProperties();
RuntimeUtil.loadProperties(prop, settings);
- String repos = getMavenRepos(prop, camelSpringBootVersion);
+ String repos = getMavenRepos(settings, prop, camelSpringBootVersion);
CamelCatalog catalog = CatalogLoader.loadSpringBootCatalog(repos, camelSpringBootVersion);
String camelVersion = catalog.getLoadedVersion();
diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Run.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Run.java
index de462ba942c..76a4f41f365 100644
--- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Run.java
+++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Run.java
@@ -1045,6 +1045,7 @@ class Run extends CamelCommand {
private class RunDownloadListener implements DownloadListener {
final Set<String> downloaded = new HashSet<>();
+ final Set<String> repos = new HashSet<>();
final Set<String> kamelets = new HashSet<>();
final Set<String> modelines = new HashSet<>();
@@ -1066,6 +1067,14 @@ class Run extends CamelCommand {
onDownloadDependency(groupId, artifactId, version);
}
+ @Override
+ public void onExtraRepository(String repo) {
+ if (!repos.contains(repo)) {
+ writeSettings("repository", repo);
+ repos.add(repo);
+ }
+ }
+
@Override
public void onLoadingKamelet(String name) {
if (!kamelets.contains(name)) {
diff --git a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DownloadListener.java b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DownloadListener.java
index d9707c31197..842aa0c5ceb 100644
--- a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DownloadListener.java
+++ b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DownloadListener.java
@@ -33,6 +33,13 @@ public interface DownloadListener {
// noop
}
+ /**
+ * Some dependencies require third-party maven repositories to be downloaded.
+ */
+ default void onExtraRepository(String repo) {
+ // noop
+ }
+
/**
* Uses an existing already downloaded dependency
*/
diff --git a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/MavenDependencyDownloader.java b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/MavenDependencyDownloader.java
index 5c812f28799..41a3b48ef9f 100644
--- a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/MavenDependencyDownloader.java
+++ b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/MavenDependencyDownloader.java
@@ -382,11 +382,13 @@ public class MavenDependencyDownloader extends ServiceSupport implements Depende
if (!apacheSnapshotsIncluded && "org.apache.camel".equals(groupId) && version.contains("SNAPSHOT")) {
repositories.add(apacheSnapshots);
}
+ List<RemoteRepository> extaRepositories = new ArrayList<>();
// include extra repositories (if any)
- repositories.addAll(resolveExtraRepositories(extraRepos));
+ extaRepositories.addAll(resolveExtraRepositories(extraRepos));
// and from known extra repositories (if any)
String known = knownReposResolver.getRepo(artifactId);
- repositories.addAll(resolveExtraRepositories(known));
+ extaRepositories.addAll(resolveExtraRepositories(known));
+ repositories.addAll(extaRepositories);
List<MavenArtifact> artifacts = resolveDependenciesViaAether(deps, repositories, transitively);
List<File> files = new ArrayList<>();
@@ -417,6 +419,13 @@ public class MavenDependencyDownloader extends ServiceSupport implements Depende
listener.onDownloadedDependency(groupId, artifactId, version);
}
}
+ if (!extaRepositories.isEmpty()) {
+ for (RemoteRepository repo : extaRepositories) {
+ for (DownloadListener listener : downloadListeners) {
+ listener.onExtraRepository(repo.getUrl());
+ }
+ }
+ }
}, gav);
}