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 2022/11/10 09:33:38 UTC
[camel] branch main updated: CAMEL-18706: camel-jbang - Automatic include ASF snapshot repo if using SNAPSHOT jars
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 4d27866c91f CAMEL-18706: camel-jbang - Automatic include ASF snapshot repo if using SNAPSHOT jars
4d27866c91f is described below
commit 4d27866c91f456b003eead3987497a6158be409d
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Thu Nov 10 10:33:13 2022 +0100
CAMEL-18706: camel-jbang - Automatic include ASF snapshot repo if using SNAPSHOT jars
---
.../dsl/jbang/core/commands/ExportBaseCommand.java | 27 +++++++++++++
.../dsl/jbang/core/commands/ExportCamelMain.java | 10 ++++-
.../dsl/jbang/core/commands/ExportQuarkus.java | 38 ++++++++++++++-----
.../dsl/jbang/core/commands/ExportSpringBoot.java | 44 +++++++++++++---------
.../resources/templates/apache-snapshot-maven.tmpl | 13 -------
.../main/resources/templates/spring-boot-pom.tmpl | 2 -
.../camel-jbang-main/dist/CamelJBang.java | 2 +-
.../src/main/jbang/main/CamelJBang.java | 2 +-
.../main/download/MavenDependencyDownloader.java | 2 +-
9 files changed, 93 insertions(+), 47 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 f5ddd6967e0..88f7cb9aa90 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
@@ -33,6 +33,7 @@ import java.util.TreeSet;
import java.util.function.Function;
import java.util.stream.Collectors;
+import org.apache.camel.catalog.DefaultCamelCatalog;
import org.apache.camel.dsl.jbang.core.common.RuntimeUtil;
import org.apache.camel.main.download.MavenGav;
import org.apache.camel.util.CamelCaseOrderedProperties;
@@ -451,6 +452,32 @@ abstract class ExportBaseCommand extends CamelCommand {
return key + "=" + value;
}
+ /**
+ * Gets the maven repositories
+ *
+ * @param prop settings
+ * @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");
+
+ 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/";
+ }
+ }
+
+ return answer;
+ }
+
protected static void safeCopy(File source, File target, boolean override) throws Exception {
if (!source.exists()) {
return;
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 3dd641752bf..6647124f43e 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
@@ -138,7 +138,7 @@ class ExportCamelMain extends Export {
Properties prop = new CamelCaseOrderedProperties();
RuntimeUtil.loadProperties(prop, settings);
- String repos = prop.getProperty("camel.jbang.repos");
+ String repos = getMavenRepos(prop, camelVersion);
if (repos == null) {
context = context.replaceFirst("\\{\\{ \\.MavenRepositories }}", "");
} else {
@@ -149,6 +149,14 @@ class ExportCamelMain extends Export {
sb.append(" <repository>\n");
sb.append(" <id>custom").append(i++).append("</id>\n");
sb.append(" <url>").append(repo).append("</url>\n");
+ if (repo.contains("snapshots")) {
+ sb.append(" <releases>\n");
+ sb.append(" <enabled>false</enabled>\n");
+ sb.append(" </releases>\n");
+ sb.append(" <snapshots>\n");
+ sb.append(" <enabled>true</enabled>\n");
+ sb.append(" </snapshots>\n");
+ }
sb.append(" </repository>\n");
}
sb.append(" </repositories>\n");
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 9bf218d6ea6..f996cf24302 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
@@ -175,7 +175,12 @@ class ExportQuarkus extends Export {
String context = IOHelper.loadText(is);
IOHelper.close(is);
- CamelCatalog catalog = loadQuarkusCatalog();
+ Properties prop = new CamelCaseOrderedProperties();
+ RuntimeUtil.loadProperties(prop, settings);
+ // quarkus controls the camel version
+ String repos = getMavenRepos(prop, quarkusVersion);
+
+ CamelCatalog catalog = loadQuarkusCatalog(repos);
if (camelVersion == null) {
camelVersion = catalog.getCatalogVersion();
}
@@ -190,16 +195,18 @@ class ExportQuarkus extends Export {
context = context.replaceAll("\\{\\{ \\.JavaVersion }}", javaVersion);
context = context.replaceAll("\\{\\{ \\.CamelVersion }}", camelVersion);
- Properties prop = new CamelCaseOrderedProperties();
- RuntimeUtil.loadProperties(prop, settings);
- String repos = prop.getProperty("camel.jbang.repos");
if (repos == null) {
context = context.replaceFirst("\\{\\{ \\.MavenRepositories }}", "");
} else {
StringBuilder sb = new StringBuilder();
for (String repo : repos.split(",")) {
sb.append(" maven {\n");
- sb.append(" url: '").append(repo).append("'\n");
+ sb.append(" url '").append(repo).append("'\n");
+ if (repo.contains("snapshots")) {
+ sb.append(" mavenContent {\n");
+ sb.append(" snapshotsOnly()\n");
+ sb.append(" }\n");
+ }
sb.append(" }\n");
}
context = context.replaceFirst("\\{\\{ \\.MavenRepositories }}", sb.toString());
@@ -276,7 +283,12 @@ class ExportQuarkus extends Export {
String context = IOHelper.loadText(is);
IOHelper.close(is);
- CamelCatalog catalog = loadQuarkusCatalog();
+ Properties prop = new CamelCaseOrderedProperties();
+ RuntimeUtil.loadProperties(prop, settings);
+ // quarkus controls the camel version
+ String repos = getMavenRepos(prop, quarkusVersion);
+
+ CamelCatalog catalog = loadQuarkusCatalog(repos);
if (camelVersion == null) {
camelVersion = catalog.getCatalogVersion();
}
@@ -290,9 +302,6 @@ class ExportQuarkus extends Export {
context = context.replaceFirst("\\{\\{ \\.JavaVersion }}", javaVersion);
context = context.replaceFirst("\\{\\{ \\.CamelVersion }}", camelVersion);
- Properties prop = new CamelCaseOrderedProperties();
- RuntimeUtil.loadProperties(prop, settings);
- String repos = prop.getProperty("camel.jbang.repos");
if (repos == null) {
context = context.replaceFirst("\\{\\{ \\.MavenRepositories }}", "");
} else {
@@ -303,6 +312,14 @@ class ExportQuarkus extends Export {
sb.append(" <repository>\n");
sb.append(" <id>custom").append(i++).append("</id>\n");
sb.append(" <url>").append(repo).append("</url>\n");
+ if (repo.contains("snapshots")) {
+ sb.append(" <releases>\n");
+ sb.append(" <enabled>false</enabled>\n");
+ sb.append(" </releases>\n");
+ sb.append(" <snapshots>\n");
+ sb.append(" <enabled>true</enabled>\n");
+ sb.append(" </snapshots>\n");
+ }
sb.append(" </repository>\n");
}
sb.append(" </repositories>\n");
@@ -370,12 +387,13 @@ class ExportQuarkus extends Export {
return answer;
}
- private CamelCatalog loadQuarkusCatalog() {
+ private CamelCatalog loadQuarkusCatalog(String repos) {
CamelCatalog answer = new DefaultCamelCatalog(true);
// use kamelet-main to dynamic download dependency via maven
KameletMain main = new KameletMain();
try {
+ main.setRepos(repos);
main.start();
// shrinkwrap does not return POM file as result (they are hardcoded to be filtered out)
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 50e63f67092..4a31edff20c 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,11 @@ class ExportSpringBoot extends Export {
String context = readResourceTemplate("templates/spring-boot-pom.tmpl");
- CamelCatalog catalog = loadSpringBootCatalog(camelSpringBootVersion);
+ Properties prop = new CamelCaseOrderedProperties();
+ RuntimeUtil.loadProperties(prop, settings);
+ String repos = getMavenRepos(prop, camelSpringBootVersion);
+
+ CamelCatalog catalog = loadSpringBootCatalog(repos, camelSpringBootVersion);
String camelVersion = catalog.getLoadedVersion();
context = context.replaceFirst("\\{\\{ \\.GroupId }}", ids[0]);
@@ -166,10 +170,6 @@ class ExportSpringBoot extends Export {
context = context.replaceFirst(Pattern.quote("{{ .jkubeProperties }}"),
Matcher.quoteReplacement(sbJKube.toString()));
- Properties prop = new CamelCaseOrderedProperties();
- RuntimeUtil.loadProperties(prop, settings);
-
- String repos = prop.getProperty("camel.jbang.repos");
if (repos == null) {
context = context.replaceFirst("\\{\\{ \\.MavenRepositories }}", "");
} else {
@@ -180,6 +180,14 @@ class ExportSpringBoot extends Export {
sb.append(" <repository>\n");
sb.append(" <id>custom").append(i++).append("</id>\n");
sb.append(" <url>").append(repo).append("</url>\n");
+ if (repo.contains("snapshots")) {
+ sb.append(" <releases>\n");
+ sb.append(" <enabled>false</enabled>\n");
+ sb.append(" </releases>\n");
+ sb.append(" <snapshots>\n");
+ sb.append(" <enabled>true</enabled>\n");
+ sb.append(" </snapshots>\n");
+ }
sb.append(" </repository>\n");
}
sb.append(" </repositories>\n");
@@ -233,13 +241,6 @@ class ExportSpringBoot extends Export {
}
context = context.replaceFirst("\\{\\{ \\.CamelDependencies }}", sb.toString());
- // add apache snapshot repository if camel version ends with SNAPSHOT
- String contextSnapshot = "";
- if (camelVersion.endsWith("SNAPSHOT")) {
- contextSnapshot = readResourceTemplate("templates/apache-snapshot-maven.tmpl");
- }
- context = context.replaceFirst(Pattern.quote("{{ .snapshotRepository }}"), Matcher.quoteReplacement(contextSnapshot));
-
// add jkube profiles if there is jkube version property
String jkubeProfiles = "";
if (allProps.getProperty("jkube.version") != null) {
@@ -255,7 +256,11 @@ class ExportSpringBoot extends Export {
String context = readResourceTemplate("templates/spring-boot-build-gradle.tmpl");
- CamelCatalog catalog = loadSpringBootCatalog(camelSpringBootVersion);
+ Properties prop = new CamelCaseOrderedProperties();
+ RuntimeUtil.loadProperties(prop, settings);
+ String repos = getMavenRepos(prop, camelSpringBootVersion);
+
+ CamelCatalog catalog = loadSpringBootCatalog(repos, camelSpringBootVersion);
String camelVersion = catalog.getLoadedVersion();
context = context.replaceFirst("\\{\\{ \\.GroupId }}", ids[0]);
@@ -265,16 +270,18 @@ class ExportSpringBoot extends Export {
context = context.replaceFirst("\\{\\{ \\.JavaVersion }}", javaVersion);
context = context.replaceAll("\\{\\{ \\.CamelVersion }}", camelVersion);
- Properties prop = new CamelCaseOrderedProperties();
- RuntimeUtil.loadProperties(prop, settings);
- String repos = prop.getProperty("camel.jbang.repos");
if (repos == null) {
context = context.replaceFirst("\\{\\{ \\.MavenRepositories }}", "");
} else {
StringBuilder sb = new StringBuilder();
for (String repo : repos.split(",")) {
sb.append(" maven {\n");
- sb.append(" url: '").append(repo).append("'\n");
+ sb.append(" url '").append(repo).append("'\n");
+ if (repo.contains("snapshots")) {
+ sb.append(" mavenContent {\n");
+ sb.append(" snapshotsOnly()\n");
+ sb.append(" }\n");
+ }
sb.append(" }\n");
}
context = context.replaceFirst("\\{\\{ \\.MavenRepositories }}", sb.toString());
@@ -365,7 +372,7 @@ class ExportSpringBoot extends Export {
return super.applicationPropertyLine(key, value);
}
- private CamelCatalog loadSpringBootCatalog(String version) throws Exception {
+ private CamelCatalog loadSpringBootCatalog(String repos, String version) throws Exception {
CamelCatalog answer = new DefaultCamelCatalog();
if (version == null) {
version = answer.getCatalogVersion();
@@ -374,6 +381,7 @@ class ExportSpringBoot extends Export {
// use kamelet-main to dynamic download dependency via maven
KameletMain main = new KameletMain();
try {
+ main.setRepos(repos);
main.start();
// wrap downloaded catalog files in an isolated classloader
diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/resources/templates/apache-snapshot-maven.tmpl b/dsl/camel-jbang/camel-jbang-core/src/main/resources/templates/apache-snapshot-maven.tmpl
deleted file mode 100644
index 251e3f10ffa..00000000000
--- a/dsl/camel-jbang/camel-jbang-core/src/main/resources/templates/apache-snapshot-maven.tmpl
+++ /dev/null
@@ -1,13 +0,0 @@
- <repositories>
- <repository>
- <id>apache.snapshots</id>
- <name>Apache Development Snapshot Repository</name>
- <url>https://repository.apache.org/content/repositories/snapshots/</url>
- <releases>
- <enabled>false</enabled>
- </releases>
- <snapshots>
- <enabled>true</enabled>
- </snapshots>
- </repository>
- </repositories>
\ No newline at end of file
diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/resources/templates/spring-boot-pom.tmpl b/dsl/camel-jbang/camel-jbang-core/src/main/resources/templates/spring-boot-pom.tmpl
index 18a185a7415..361297da6b6 100644
--- a/dsl/camel-jbang/camel-jbang-core/src/main/resources/templates/spring-boot-pom.tmpl
+++ b/dsl/camel-jbang/camel-jbang-core/src/main/resources/templates/spring-boot-pom.tmpl
@@ -83,8 +83,6 @@
</plugins>
</build>
-{{ .snapshotRepository }}
-
{{ .jkubeProfiles }}
</project>
diff --git a/dsl/camel-jbang/camel-jbang-main/dist/CamelJBang.java b/dsl/camel-jbang/camel-jbang-main/dist/CamelJBang.java
index a927980ab79..c51f7952913 100755
--- a/dsl/camel-jbang/camel-jbang-main/dist/CamelJBang.java
+++ b/dsl/camel-jbang/camel-jbang-main/dist/CamelJBang.java
@@ -18,7 +18,7 @@
*/
//JAVA 11+
-//REPOS mavencentral,apache=https://repository.apache.org/snapshots
+//REPOS mavencentral,apache-snapshot=http://repository.apache.org/content/groups/snapshots/
//DEPS org.apache.camel:camel-bom:${camel.jbang.version:3.19.0}@pom
//DEPS org.apache.camel:camel-jbang-core:${camel.jbang.version:3.19.0}
//DEPS org.apache.camel.kamelets:camel-kamelets:${camel-kamelets.version:0.9.3}
diff --git a/dsl/camel-jbang/camel-jbang-main/src/main/jbang/main/CamelJBang.java b/dsl/camel-jbang/camel-jbang-main/src/main/jbang/main/CamelJBang.java
index a927980ab79..c51f7952913 100755
--- a/dsl/camel-jbang/camel-jbang-main/src/main/jbang/main/CamelJBang.java
+++ b/dsl/camel-jbang/camel-jbang-main/src/main/jbang/main/CamelJBang.java
@@ -18,7 +18,7 @@
*/
//JAVA 11+
-//REPOS mavencentral,apache=https://repository.apache.org/snapshots
+//REPOS mavencentral,apache-snapshot=http://repository.apache.org/content/groups/snapshots/
//DEPS org.apache.camel:camel-bom:${camel.jbang.version:3.19.0}@pom
//DEPS org.apache.camel:camel-jbang-core:${camel.jbang.version:3.19.0}
//DEPS org.apache.camel.kamelets:camel-kamelets:${camel-kamelets.version:0.9.3}
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 b8a29a8b27f..eaf5ecba2d5 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
@@ -1094,7 +1094,7 @@ public class MavenDependencyDownloader extends ServiceSupport implements Depende
String id = "custom" + customCount++;
RepositoryPolicy releasePolicy = fresh ? POLICY_FRESH : POLICY_DEFAULT;
if (repositoryURLs.add(url)) {
- if (url.getHost().equals("repository.apache.org") && url.getPath().startsWith("/snapshots")) {
+ if (url.getHost().equals("repository.apache.org") && url.getPath().contains("/snapshots")) {
apacheSnapshotsIncluded = true;
repositories.add(apacheSnapshots);
} else {