You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by fm...@apache.org on 2023/03/07 15:01:13 UTC
[camel] 07/08: 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.
fmariani pushed a commit to branch camel-3.20.x
in repository https://gitbox.apache.org/repos/asf/camel.git
commit cd020bc9330ee7d267d3bda393d19147f1c6d4b3
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 | 14 ++++++++++++
7 files changed, 53 insertions(+), 13 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 ca607ec635a..b9a108a4885 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
@@ -31,6 +31,7 @@ import java.util.Map;
import java.util.Optional;
import java.util.Properties;
import java.util.Set;
+import java.util.StringJoiner;
import java.util.TreeSet;
import java.util.function.Function;
import java.util.regex.Matcher;
@@ -498,23 +499,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 3303b0c8472..d25e7945322 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
@@ -142,7 +142,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 fd4bafaf3c3..0bc1edf443c 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
@@ -225,7 +225,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) {
@@ -334,7 +334,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 76519f658a2..3348211f2b3 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
@@ -144,7 +144,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);
@@ -283,7 +283,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 a543981cd9f..be238706898 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
@@ -1044,6 +1044,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<>();
@@ -1065,6 +1066,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 33d9841a97e..55a04316ce6 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
@@ -361,6 +361,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)
+ extaRepositories.addAll(resolveExtraRepositories(extraRepos));
+ // and from known extra repositories (if any)
+ String known = knownReposResolver.getRepo(artifactId);
+ extaRepositories.addAll(resolveExtraRepositories(known));
+ repositories.addAll(extaRepositories);
List<MavenArtifact> artifacts = resolveDependenciesViaAether(deps, repositories, transitively);
List<File> files = new ArrayList<>();
@@ -391,6 +398,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);
}