fix: Unique syntax for Maven artifact GAV string representation
This fixes duplication of dependencies.
diff --git a/docs/modules/ROOT/pages/cli/modeline.adoc b/docs/modules/ROOT/pages/cli/modeline.adoc
index 7d77da3..bfc563b 100644
--- a/docs/modules/ROOT/pages/cli/modeline.adoc
+++ b/docs/modules/ROOT/pages/cli/modeline.adoc
@@ -6,7 +6,7 @@
.Hello.java
----
-// camel-k: dependency=mvn:org.my/application:1.0 // <1>
+// camel-k: dependency=mvn:org.my:application:1.0 // <1>
import org.apache.camel.builder.RouteBuilder;
@@ -32,7 +32,7 @@
----
$ kamel run Hello.java
Modeline options have been loaded from source files
-Full command: kamel run Hello.java --dependency mvn:org.my/application:1.0
+Full command: kamel run Hello.java --dependency mvn:org.my:application:1.0
...
----
@@ -66,7 +66,7 @@
|Option | Description
|dependency
-|An external library that should be included. E.g. for Maven dependencies "dependency=mvn:org.my/app:1.0"
+|An external library that should be included. E.g. for Maven dependencies "dependency=mvn:org.my:app:1.0"
|env
|Set an environment variable in the integration container. E.g "env=MY_VAR=my-value"
diff --git a/examples/SampleModeline.java b/examples/SampleModeline.java
index 2226d50..31ff1b6 100644
--- a/examples/SampleModeline.java
+++ b/examples/SampleModeline.java
@@ -1,4 +1,4 @@
-// camel-k: dependency=mvn:com.google.guava/guava:28.0-jre
+// camel-k: dependency=mvn:com.google.guava:guava:28.0-jre
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
diff --git a/pkg/apis/camel/v1/camelcatalog_types_support.go b/pkg/apis/camel/v1/camelcatalog_types_support.go
index 85f6c98..87fce76 100644
--- a/pkg/apis/camel/v1/camelcatalog_types_support.go
+++ b/pkg/apis/camel/v1/camelcatalog_types_support.go
@@ -18,7 +18,6 @@
package v1
import (
- "fmt"
"strings"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -92,7 +91,7 @@
}
deps = make([]string, 0, len(ads))
for _, ad := range ads {
- deps = append(deps, fmt.Sprintf("mvn:%s/%s", ad.GroupID, ad.ArtifactID))
+ deps = append(deps, ad.GetDependencyID())
}
return deps
}
diff --git a/pkg/apis/camel/v1/common_types_support.go b/pkg/apis/camel/v1/common_types_support.go
index 396b525..aec43a1 100644
--- a/pkg/apis/camel/v1/common_types_support.go
+++ b/pkg/apis/camel/v1/common_types_support.go
@@ -27,11 +27,19 @@
return in.ID
}
+func (in *MavenArtifact) GetDependencyID() string {
+ switch {
+ case in.Version == "":
+ return "mvn:" + in.GroupID + ":" + in.ArtifactID
+ default:
+ return "mvn:" + in.GroupID + ":" + in.ArtifactID + ":" + in.Version
+ }
+}
+
func (in *ConfigurationSpec) String() string {
return fmt.Sprintf("%s=%s", in.Type, in.Value)
}
-// CapabilityDependencies ---
func (in *RuntimeSpec) CapabilityDependencies(capability string) []MavenArtifact {
deps := make([]MavenArtifact, 0)
diff --git a/pkg/apis/camel/v1/integration_types_support_test.go b/pkg/apis/camel/v1/integration_types_support_test.go
index 82320a0..0f02817 100644
--- a/pkg/apis/camel/v1/integration_types_support_test.go
+++ b/pkg/apis/camel/v1/integration_types_support_test.go
@@ -66,8 +66,8 @@
assert.Equal(t, integration.Dependencies, []string{"camel:file"})
integration = IntegrationSpec{}
- integration.AddDependency("mvn:com.my/company")
- assert.Equal(t, integration.Dependencies, []string{"mvn:com.my/company"})
+ integration.AddDependency("mvn:com.my:company")
+ assert.Equal(t, integration.Dependencies, []string{"mvn:com.my:company"})
integration = IntegrationSpec{}
integration.AddDependency("file:dep")
diff --git a/pkg/cmd/modeline_test.go b/pkg/cmd/modeline_test.go
index ca6037a..9bc001b 100644
--- a/pkg/cmd/modeline_test.go
+++ b/pkg/cmd/modeline_test.go
@@ -33,7 +33,7 @@
defer os.RemoveAll(dir)
file := `
- // camel-k: dependency=mvn:org.my/lib:1.0
+ // camel-k: dependency=mvn:org.my:lib:1.0
`
fileName := path.Join(dir, "simple.groovy")
err = ioutil.WriteFile(fileName, []byte(file), 0777)
@@ -42,7 +42,7 @@
cmd, flags, err := NewKamelWithModelineCommand(context.TODO(), []string{"kamel", "run", fileName})
assert.NoError(t, err)
assert.NotNil(t, cmd)
- assert.Equal(t, []string{"run", fileName, "--dependency=mvn:org.my/lib:1.0"}, flags)
+ assert.Equal(t, []string{"run", fileName, "--dependency=mvn:org.my:lib:1.0"}, flags)
}
func TestModelineRunHelp(t *testing.T) {
@@ -64,16 +64,16 @@
defer os.RemoveAll(dir)
file := `
- // camel-k: dependency=mvn:org.my/lib:2.0
+ // camel-k: dependency=mvn:org.my:lib:2.0
`
fileName := path.Join(dir, "simple.groovy")
err = ioutil.WriteFile(fileName, []byte(file), 0777)
assert.NoError(t, err)
- cmd, flags, err := NewKamelWithModelineCommand(context.TODO(), []string{"kamel", "run", "-d", "mvn:org.my/lib2:1.0", fileName})
+ cmd, flags, err := NewKamelWithModelineCommand(context.TODO(), []string{"kamel", "run", "-d", "mvn:org.my:lib2:1.0", fileName})
assert.NoError(t, err)
assert.NotNil(t, cmd)
- assert.Equal(t, []string{"run", "-d", "mvn:org.my/lib2:1.0", fileName, "--dependency=mvn:org.my/lib:2.0"}, flags)
+ assert.Equal(t, []string{"run", "-d", "mvn:org.my:lib2:1.0", fileName, "--dependency=mvn:org.my:lib:2.0"}, flags)
}
func TestModelineRunMultipleFiles(t *testing.T) {
@@ -82,14 +82,14 @@
defer os.RemoveAll(dir)
file := `
- // camel-k: dependency=mvn:org.my/lib1:3.0
+ // camel-k: dependency=mvn:org.my:lib1:3.0
`
fileName := path.Join(dir, "simple.groovy")
err = ioutil.WriteFile(fileName, []byte(file), 0777)
assert.NoError(t, err)
file2 := `
- // camel-k: dependency=mvn:org.my/lib2:3.0
+ // camel-k: dependency=mvn:org.my:lib2:3.0
`
fileName2 := path.Join(dir, "ext.groovy")
err = ioutil.WriteFile(fileName2, []byte(file2), 0777)
@@ -98,7 +98,7 @@
cmd, flags, err := NewKamelWithModelineCommand(context.TODO(), []string{"kamel", "run", fileName, fileName2})
assert.NoError(t, err)
assert.NotNil(t, cmd)
- assert.Equal(t, []string{"run", fileName, fileName2, "--dependency=mvn:org.my/lib1:3.0", "--dependency=mvn:org.my/lib2:3.0"}, flags)
+ assert.Equal(t, []string{"run", fileName, fileName2, "--dependency=mvn:org.my:lib1:3.0", "--dependency=mvn:org.my:lib2:3.0"}, flags)
}
func TestModelineRunPropertyFiles(t *testing.T) {
diff --git a/pkg/cmd/util_dependencies.go b/pkg/cmd/util_dependencies.go
index 2be4b02..94cc757 100644
--- a/pkg/cmd/util_dependencies.go
+++ b/pkg/cmd/util_dependencies.go
@@ -42,32 +42,28 @@
where <type> is one of {` + strings.Join(acceptedDependencyTypes, "|") + `}.`
func getDependencies(args []string, additionalDependencies []string, repositories []string, allDependencies bool) ([]string, error) {
- // Fetch existing catalog or create new one if one does not already exist.
+ // Fetch existing catalog or create new one if one does not already exist
catalog, err := createCamelCatalog()
- // Get top-level dependencies.
+ // Get top-level dependencies
dependencies, err := getTopLevelDependencies(catalog, args)
if err != nil {
return nil, err
}
- // Add additional user-provided dependencies.
+ // Add additional user-provided dependencies
if additionalDependencies != nil {
for _, additionalDependency := range additionalDependencies {
dependencies = append(dependencies, additionalDependency)
}
}
- // Compute transitive dependencies.
+ // Compute transitive dependencies
if allDependencies {
// Add runtime dependency since this dependency is always required for running
// an integration. Only add this dependency if it has not been added already.
for _, runtimeDep := range catalog.Runtime.Dependencies {
- dep := fmt.Sprintf("mvn:%s/%s", runtimeDep.GroupID, runtimeDep.ArtifactID)
- if runtimeDep.Version != "" {
- dep = dep + "/" + runtimeDep.Version
- }
- util.StringSliceUniqueAdd(&dependencies, dep)
+ util.StringSliceUniqueAdd(&dependencies, runtimeDep.GetDependencyID())
}
dependencies, err = getTransitiveDependencies(catalog, dependencies, repositories)
@@ -80,10 +76,10 @@
}
func getTopLevelDependencies(catalog *camel.RuntimeCatalog, args []string) ([]string, error) {
- // List of top-level dependencies.
+ // List of top-level dependencies
dependencies := strset.New()
- // Invoke the dependency inspector code for each source file.
+ // Invoke the dependency inspector code for each source file
for _, source := range args {
data, _, err := loadContent(source, false, false)
if err != nil {
@@ -98,7 +94,7 @@
},
}
- // Extract list of top-level dependencies.
+ // Extract list of top-level dependencies
dependencies.Merge(trait.AddSourceDependencies(sourceSpec, catalog))
}
@@ -113,18 +109,18 @@
LocalRepository: "",
}
- // Create Maven project.
+ // Create Maven project
project := runtime.GenerateQuarkusProjectCommon(
catalog.CamelCatalogSpec.Runtime.Metadata["camel-quarkus.version"],
defaults.DefaultRuntimeVersion, catalog.CamelCatalogSpec.Runtime.Metadata["quarkus.version"])
- // Inject dependencies into Maven project.
+ // Inject dependencies into Maven project
err := camel.ManageIntegrationDependencies(&project, dependencies, catalog)
if err != nil {
return nil, err
}
- // Maven local context to be used for generating the transitive dependencies.
+ // Maven local context to be used for generating the transitive dependencies
mc := maven.NewContext(util.MavenWorkingDirectory, project)
mc.LocalRepository = mvn.LocalRepository
mc.Timeout = mvn.GetTimeout().Duration
@@ -147,7 +143,7 @@
mc.SettingsContent = settingsData
}
- // Make maven command less verbose.
+ // Make maven command less verbose
mc.AdditionalArguments = append(mc.AdditionalArguments, "-q")
err = runtime.BuildQuarkusRunnerCommon(mc)
@@ -155,20 +151,19 @@
return nil, err
}
- // Compute dependencies.
content, err := runtime.ComputeQuarkusDependenciesCommon(mc, catalog.Runtime.Version)
if err != nil {
return nil, err
}
- // Compose artifacts list.
+ // Compose artifacts list
artifacts := []v1.Artifact{}
artifacts, err = runtime.ProcessQuarkusTransitiveDependencies(mc, content)
if err != nil {
return nil, err
}
- // Dump dependencies in the dependencies directory and construct the list of dependencies.
+ // Dump dependencies in the dependencies directory and construct the list of dependencies
transitiveDependencies := []string{}
for _, entry := range artifacts {
transitiveDependencies = append(transitiveDependencies, entry.Location)
@@ -178,7 +173,7 @@
}
func generateCatalog() (*camel.RuntimeCatalog, error) {
- // A Camel catalog is requiref for this operatio.
+ // A Camel catalog is required for this operation
settings := ""
mvn := v1.MavenSpec{
LocalRepository: "",
@@ -197,13 +192,13 @@
}
func createCamelCatalog() (*camel.RuntimeCatalog, error) {
- // Attempt to reuse existing Camel catalog if one is present.
+ // Attempt to reuse existing Camel catalog if one is present
catalog, err := camel.DefaultCatalog()
if err != nil {
return nil, err
}
- // Generate catalog if one was not found.
+ // Generate catalog if one was not found
if catalog == nil {
catalog, err = generateCatalog()
if err != nil {
@@ -221,7 +216,7 @@
return err
}
} else {
- // Print output in text form.
+ // Print output in text form
for _, dep := range dependencies {
fmt.Printf("%v\n", dep)
}
@@ -230,16 +225,16 @@
return nil
}
-func printDependencies(format string, dependecies []string) error {
+func printDependencies(format string, dependencies []string) error {
switch format {
case "yaml":
- data, err := util.DependenciesToYAML(dependecies)
+ data, err := util.DependenciesToYAML(dependencies)
if err != nil {
return err
}
fmt.Print(string(data))
case "json":
- data, err := util.DependenciesToJSON(dependecies)
+ data, err := util.DependenciesToJSON(dependencies)
if err != nil {
return err
}
@@ -253,12 +248,10 @@
func validateFile(file string) error {
fileExists, err := util.FileExists(file)
- // Report any error.
if err != nil {
return err
}
- // Signal file not found.
if !fileExists {
return errors.New("File " + file + " file does not exist")
}
@@ -267,7 +260,7 @@
}
func validateFiles(args []string) error {
- // Ensure source files exist.
+ // Ensure source files exist
for _, arg := range args {
err := validateFile(arg)
if err != nil {
@@ -279,8 +272,7 @@
}
func validateAdditionalDependencies(additionalDependencies []string) error {
- // Validate list of additional dependencies i.e. make sure that each dependency has
- // a valid type.
+ // Validate list of additional dependencies i.e. make sure that each dependency has a valid type
if additionalDependencies != nil {
for _, additionalDependency := range additionalDependencies {
isValid := validateDependency(additionalDependency)
@@ -338,8 +330,8 @@
}
func updateIntegrationProperties(properties []string, propertyFiles []string) ([]string, error) {
- // Create properties directory under Maven working directory. This ensures that
- // property files of different integrations do not clash.
+ // Create properties directory under Maven working directory.
+ // This ensures that property files of different integrations do not clash.
err := util.CreateLocalPropertiesDirectory()
if err != nil {
return nil, err
@@ -363,59 +355,53 @@
relocatedPropertyFiles = append(relocatedPropertyFiles, propertyFilePath)
}
- // Return relocated PropertyFiles.
return relocatedPropertyFiles, nil
}
func updateIntegrationDependencies(dependencies []string) error {
- // Create dependencies directory under Maven working directory. This ensures that
- // dependencies will be removed after they are not needed.
+ // Create dependencies directory under Maven working directory.
+ // This ensures that dependencies will be removed after they are not needed.
err := util.CreateLocalDependenciesDirectory()
if err != nil {
return err
}
- // Relocate dependencies files to this integration's dependencies directory.
+ // Relocate dependencies files to this integration's dependencies directory
for _, dependency := range dependencies {
util.CopyFile(dependency, path.Join(util.GetLocalDependenciesDir(), path.Base(dependency)))
}
- // Return relocated PropertyFiles.
return nil
}
func updateIntegrationRoutes(routes []string) error {
- // Create dependencies directory under Maven working directory. This ensures that
- // dependencies will be removed after they are not needed.
err := util.CreateLocalRoutesDirectory()
if err != nil {
return err
}
- // Relocate dependencies files to this integration's dependencies directory.
for _, route := range routes {
util.CopyFile(route, path.Join(util.GetLocalRoutesDir(), path.Base(route)))
}
- // Return relocated PropertyFiles.
return nil
}
func createMavenWorkingDirectory() error {
- // Create local Maven context.
+ // Create local Maven context
temporaryDirectory, err := ioutil.TempDir(os.TempDir(), "maven-")
if err != nil {
return err
}
- // Set the Maven directory to the default value.
+ // Set the Maven directory to the default value
util.MavenWorkingDirectory = temporaryDirectory
return nil
}
func deleteMavenWorkingDirectory() error {
- // Remove directory used for computing the dependencies.
+ // Remove directory used for computing the dependencies
defer os.RemoveAll(util.MavenWorkingDirectory)
return nil
diff --git a/pkg/metadata/metadata_dependencies_test.go b/pkg/metadata/metadata_dependencies_test.go
index bb1c494..03dfe65 100644
--- a/pkg/metadata/metadata_dependencies_test.go
+++ b/pkg/metadata/metadata_dependencies_test.go
@@ -373,8 +373,8 @@
"camel-quarkus:http",
"camel-quarkus:direct",
"camel-quarkus:log",
- "mvn:org.apache.camel.quarkus/camel-quarkus-rest",
- "mvn:org.apache.camel.quarkus/camel-quarkus-platform-http",
+ "mvn:org.apache.camel.quarkus:camel-quarkus-rest",
+ "mvn:org.apache.camel.quarkus:camel-quarkus-platform-http",
},
meta.Dependencies.List())
}
@@ -404,8 +404,8 @@
"camel-quarkus:http",
"camel-quarkus:direct",
"camel-quarkus:log",
- "mvn:org.apache.camel.quarkus/camel-quarkus-rest",
- "mvn:org.apache.camel.quarkus/camel-quarkus-platform-http",
+ "mvn:org.apache.camel.quarkus:camel-quarkus-rest",
+ "mvn:org.apache.camel.quarkus:camel-quarkus-platform-http",
},
meta.Dependencies.List())
}
@@ -433,8 +433,8 @@
t, []string{
"camel-quarkus:http",
"camel-quarkus:log",
- "mvn:org.apache.camel.quarkus/camel-quarkus-rest",
- "mvn:org.apache.camel.quarkus/camel-quarkus-platform-http",
+ "mvn:org.apache.camel.quarkus:camel-quarkus-rest",
+ "mvn:org.apache.camel.quarkus:camel-quarkus-platform-http",
},
meta.Dependencies.List())
}
@@ -463,8 +463,8 @@
[]string{
"camel-quarkus:http",
"camel-quarkus:log",
- "mvn:org.apache.camel.quarkus/camel-quarkus-rest",
- "mvn:org.apache.camel.quarkus/camel-quarkus-platform-http",
+ "mvn:org.apache.camel.quarkus:camel-quarkus-rest",
+ "mvn:org.apache.camel.quarkus:camel-quarkus-platform-http",
},
meta.Dependencies.List())
}
@@ -493,8 +493,8 @@
[]string{
"camel-quarkus:http",
"camel-quarkus:log",
- "mvn:org.apache.camel.quarkus/camel-quarkus-rest",
- "mvn:org.apache.camel.quarkus/camel-quarkus-platform-http",
+ "mvn:org.apache.camel.quarkus:camel-quarkus-rest",
+ "mvn:org.apache.camel.quarkus:camel-quarkus-platform-http",
},
meta.Dependencies.List())
}
diff --git a/pkg/trait/container.go b/pkg/trait/container.go
index 4d84f77..625503f 100644
--- a/pkg/trait/container.go
+++ b/pkg/trait/container.go
@@ -19,16 +19,19 @@
import (
"fmt"
- v1 "github.com/apache/camel-k/pkg/apis/camel/v1"
- "github.com/apache/camel-k/pkg/util"
- "github.com/apache/camel-k/pkg/util/envvar"
+ "sort"
+
appsv1 "k8s.io/api/apps/v1"
"k8s.io/api/batch/v1beta1"
corev1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/api/resource"
"k8s.io/apimachinery/pkg/util/intstr"
+
serving "knative.dev/serving/pkg/apis/serving/v1"
- "sort"
+
+ v1 "github.com/apache/camel-k/pkg/apis/camel/v1"
+ "github.com/apache/camel-k/pkg/util"
+ "github.com/apache/camel-k/pkg/util/envvar"
)
const (
@@ -160,7 +163,7 @@
if e.IntegrationInPhase(v1.IntegrationPhaseInitialization) {
if capability, ok := e.CamelCatalog.Runtime.Capabilities[v1.CapabilityHealth]; ok {
for _, dependency := range capability.Dependencies {
- util.StringSliceUniqueAdd(&e.Integration.Status.Dependencies, fmt.Sprintf("mvn:%s/%s", dependency.GroupID, dependency.ArtifactID))
+ util.StringSliceUniqueAdd(&e.Integration.Status.Dependencies, dependency.GetDependencyID())
}
// sort the dependencies to get always the same list if they don't change
@@ -398,9 +401,6 @@
default:
return fmt.Errorf("unsupported runtime: %s", e.CamelCatalog.Runtime.Provider)
}
-
- return nil
-
}
func (t *containerTrait) configureCapabilities(e *Environment) error {
diff --git a/pkg/trait/container_probes_test.go b/pkg/trait/container_probes_test.go
index c676a6c..57fb6fb 100644
--- a/pkg/trait/container_probes_test.go
+++ b/pkg/trait/container_probes_test.go
@@ -75,7 +75,7 @@
err = ctr.Apply(&env)
assert.Nil(t, err)
- assert.Contains(t, env.Integration.Status.Dependencies, "mvn:org.apache.camel.quarkus/camel-quarkus-microprofile-health")
+ assert.Contains(t, env.Integration.Status.Dependencies, "mvn:org.apache.camel.quarkus:camel-quarkus-microprofile-health")
}
func TestProbesOnDeployment(t *testing.T) {
diff --git a/pkg/trait/cron_test.go b/pkg/trait/cron_test.go
index 9848843..07f77fa 100644
--- a/pkg/trait/cron_test.go
+++ b/pkg/trait/cron_test.go
@@ -287,7 +287,7 @@
assert.NotNil(t, ct)
assert.Nil(t, ct.Fallback)
assert.True(t, util.StringSliceExists(environment.Integration.Status.Capabilities, v1.CapabilityCron))
- assert.Contains(t, environment.Integration.Status.Dependencies, "mvn:org.apache.camel.k/camel-k-cron")
+ assert.Contains(t, environment.Integration.Status.Dependencies, "mvn:org.apache.camel.k:camel-k-cron")
}
func TestCronDepsFallback(t *testing.T) {
@@ -362,7 +362,7 @@
assert.NotNil(t, ct.Fallback)
assert.True(t, util.StringSliceExists(environment.Integration.Status.Capabilities, v1.CapabilityCron))
assert.Contains(t, environment.Integration.Status.Dependencies, "camel-quarkus:quartz")
- assert.Contains(t, environment.Integration.Status.Dependencies, "mvn:org.apache.camel.k/camel-k-cron")
+ assert.Contains(t, environment.Integration.Status.Dependencies, "mvn:org.apache.camel.k:camel-k-cron")
}
func TestCronWithMain(t *testing.T) {
diff --git a/pkg/trait/dependencies.go b/pkg/trait/dependencies.go
index 3a5df80..994d046 100644
--- a/pkg/trait/dependencies.go
+++ b/pkg/trait/dependencies.go
@@ -18,13 +18,12 @@
package trait
import (
- "fmt"
+ "github.com/scylladb/go-set/strset"
v1 "github.com/apache/camel-k/pkg/apis/camel/v1"
"github.com/apache/camel-k/pkg/metadata"
"github.com/apache/camel-k/pkg/util"
"github.com/apache/camel-k/pkg/util/kubernetes"
- "github.com/scylladb/go-set/strset"
)
// The Dependencies trait is internally used to automatically add runtime dependencies based on the
@@ -60,9 +59,9 @@
dependencies.Add(e.Integration.Spec.Dependencies...)
}
- // add runtime specific dependencies
+ // Add runtime specific dependencies
for _, d := range e.CamelCatalog.Runtime.Dependencies {
- dependencies.Add(fmt.Sprintf("mvn:%s/%s", d.GroupID, d.ArtifactID))
+ dependencies.Add(d.GetDependencyID())
}
sources, err := kubernetes.ResolveIntegrationSources(e.C, e.Client, e.Integration, e.Resources)
@@ -70,7 +69,7 @@
return err
}
for _, s := range sources {
- // Add source-related dependencies.
+ // Add source-related dependencies
dependencies.Merge(AddSourceDependencies(s, e.CamelCatalog))
meta := metadata.Extract(e.CamelCatalog, s)
@@ -80,7 +79,7 @@
})
}
- // add dependencies back to integration
+ // Add dependencies back to integration
dependencies.Each(func(item string) bool {
util.StringSliceUniqueAdd(&e.Integration.Status.Dependencies, item)
return true
diff --git a/pkg/trait/dependencies_test.go b/pkg/trait/dependencies_test.go
index 75cd784..c627362 100644
--- a/pkg/trait/dependencies_test.go
+++ b/pkg/trait/dependencies_test.go
@@ -85,8 +85,8 @@
[]string{
"camel-quarkus:direct",
"camel-quarkus:log",
- "mvn:org.apache.camel.k/camel-k-loader-java",
- "mvn:org.apache.camel.k/camel-k-runtime"},
+ "mvn:org.apache.camel.k:camel-k-loader-java",
+ "mvn:org.apache.camel.k:camel-k-runtime"},
e.Integration.Status.Dependencies,
)
}
@@ -133,8 +133,8 @@
"camel-quarkus:log",
"camel:netty-http",
"org.foo:bar",
- "mvn:org.apache.camel.k/camel-k-loader-java",
- "mvn:org.apache.camel.k/camel-k-runtime"},
+ "mvn:org.apache.camel.k:camel-k-loader-java",
+ "mvn:org.apache.camel.k:camel-k-runtime"},
e.Integration.Status.Dependencies,
)
}
@@ -189,11 +189,11 @@
[]string{
"camel-quarkus:direct",
"camel-quarkus:log",
- "mvn:org.apache.camel.quarkus/camel-quarkus-rest",
- "mvn:org.apache.camel.k/camel-k-loader-java",
- "mvn:org.apache.camel.k/camel-k-loader-xml",
- "mvn:org.apache.camel.k/camel-k-runtime",
- "mvn:org.apache.camel.quarkus/camel-quarkus-platform-http"},
+ "mvn:org.apache.camel.quarkus:camel-quarkus-rest",
+ "mvn:org.apache.camel.k:camel-k-loader-java",
+ "mvn:org.apache.camel.k:camel-k-loader-xml",
+ "mvn:org.apache.camel.k:camel-k-runtime",
+ "mvn:org.apache.camel.quarkus:camel-quarkus-platform-http"},
e.Integration.Status.Dependencies,
)
}
@@ -238,8 +238,8 @@
[]string{
"camel-quarkus:direct",
"camel-quarkus:log",
- "mvn:org.apache.camel.k/camel-k-loader-yaml",
- "mvn:org.apache.camel.k/camel-k-runtime"},
+ "mvn:org.apache.camel.k:camel-k-loader-yaml",
+ "mvn:org.apache.camel.k:camel-k-runtime"},
e.Integration.Status.Dependencies,
)
}
@@ -280,8 +280,8 @@
t,
e.Integration.Status.Dependencies,
[]string{
- "mvn:org.apache.camel.quarkus/camel-quarkus-rest",
- "mvn:org.apache.camel.quarkus/camel-quarkus-platform-http",
+ "mvn:org.apache.camel.quarkus:camel-quarkus-rest",
+ "mvn:org.apache.camel.quarkus:camel-quarkus-platform-http",
},
)
}
@@ -322,8 +322,8 @@
t,
e.Integration.Status.Dependencies,
[]string{
- "mvn:org.apache.camel.quarkus/camel-quarkus-rest",
- "mvn:org.apache.camel.quarkus/camel-quarkus-platform-http",
+ "mvn:org.apache.camel.quarkus:camel-quarkus-rest",
+ "mvn:org.apache.camel.quarkus:camel-quarkus-platform-http",
},
)
}
diff --git a/pkg/trait/init.go b/pkg/trait/init.go
index 9685832..07b923d 100644
--- a/pkg/trait/init.go
+++ b/pkg/trait/init.go
@@ -18,7 +18,6 @@
package trait
import (
- "fmt"
"sort"
"github.com/pkg/errors"
@@ -81,7 +80,7 @@
// add runtime specific dependencies
for _, capability := range e.Integration.Status.Capabilities {
for _, dependency := range e.CamelCatalog.Runtime.CapabilityDependencies(capability) {
- util.StringSliceUniqueAdd(&e.Integration.Status.Dependencies, fmt.Sprintf("mvn:%s/%s", dependency.GroupID, dependency.ArtifactID))
+ util.StringSliceUniqueAdd(&e.Integration.Status.Dependencies, dependency.GetDependencyID())
}
}
}
diff --git a/pkg/trait/jolokia.go b/pkg/trait/jolokia.go
index d303307..c9b0bbd 100644
--- a/pkg/trait/jolokia.go
+++ b/pkg/trait/jolokia.go
@@ -89,12 +89,12 @@
switch e.CamelCatalog.Runtime.Provider {
case v1.RuntimeProviderQuarkus:
- util.StringSliceUniqueAdd(&e.Integration.Status.Dependencies, "mvn:org.apache.camel.quarkus/camel-quarkus-management")
+ util.StringSliceUniqueAdd(&e.Integration.Status.Dependencies, "mvn:org.apache.camel.quarkus:camel-quarkus-management")
util.StringSliceUniqueAdd(&e.Integration.Status.Dependencies, "camel-quarkus:jaxb")
}
// TODO: We may want to make the Jolokia version configurable
- util.StringSliceUniqueAdd(&e.Integration.Status.Dependencies, "mvn:org.jolokia/jolokia-jvm:jar:agent:1.6.2")
+ util.StringSliceUniqueAdd(&e.Integration.Status.Dependencies, "mvn:org.jolokia:jolokia-jvm:jar:agent:1.6.2")
return nil
}
diff --git a/pkg/trait/knative.go b/pkg/trait/knative.go
index dbef97d..f085f47 100644
--- a/pkg/trait/knative.go
+++ b/pkg/trait/knative.go
@@ -24,6 +24,15 @@
"strconv"
"strings"
+ "github.com/pkg/errors"
+
+ corev1 "k8s.io/api/core/v1"
+ k8serrors "k8s.io/apimachinery/pkg/api/errors"
+ "k8s.io/apimachinery/pkg/runtime"
+
+ eventing "knative.dev/eventing/pkg/apis/eventing/v1beta1"
+ serving "knative.dev/serving/pkg/apis/serving/v1"
+
v1 "github.com/apache/camel-k/pkg/apis/camel/v1"
knativeapi "github.com/apache/camel-k/pkg/apis/camel/v1/knative"
"github.com/apache/camel-k/pkg/metadata"
@@ -31,12 +40,6 @@
"github.com/apache/camel-k/pkg/util/envvar"
knativeutil "github.com/apache/camel-k/pkg/util/knative"
"github.com/apache/camel-k/pkg/util/kubernetes"
- "github.com/pkg/errors"
- corev1 "k8s.io/api/core/v1"
- k8serrors "k8s.io/apimachinery/pkg/api/errors"
- "k8s.io/apimachinery/pkg/runtime"
- eventing "knative.dev/eventing/pkg/apis/eventing/v1beta1"
- serving "knative.dev/serving/pkg/apis/serving/v1"
)
// The Knative trait automatically discovers addresses of Knative resources and inject them into the
@@ -223,14 +226,14 @@
// Interceptor may have been set by a Knative CamelSource
if util.StringSliceExists(e.getAllInterceptors(), "knative-source") {
// Adding required libraries for Camel sources
- util.StringSliceUniqueAdd(&e.Integration.Status.Dependencies, "mvn:org.apache.camel.k/camel-knative")
- util.StringSliceUniqueAdd(&e.Integration.Status.Dependencies, "mvn:org.apache.camel.k/camel-k-knative")
- util.StringSliceUniqueAdd(&e.Integration.Status.Dependencies, "mvn:org.apache.camel.k/camel-k-knative-producer")
+ util.StringSliceUniqueAdd(&e.Integration.Status.Dependencies, "mvn:org.apache.camel.k:camel-knative")
+ util.StringSliceUniqueAdd(&e.Integration.Status.Dependencies, "mvn:org.apache.camel.k:camel-k-knative")
+ util.StringSliceUniqueAdd(&e.Integration.Status.Dependencies, "mvn:org.apache.camel.k:camel-k-knative-producer")
}
}
if t.SinkBinding != nil && *t.SinkBinding {
- util.StringSliceUniqueAdd(&e.Integration.Status.Dependencies, "mvn:org.apache.camel.k/camel-k-knative")
+ util.StringSliceUniqueAdd(&e.Integration.Status.Dependencies, "mvn:org.apache.camel.k:camel-k-knative")
}
if len(t.ChannelSources) > 0 || len(t.EndpointSources) > 0 || len(t.EventSources) > 0 {
diff --git a/pkg/trait/knative_test.go b/pkg/trait/knative_test.go
index 6bea953..4b9f815 100644
--- a/pkg/trait/knative_test.go
+++ b/pkg/trait/knative_test.go
@@ -19,7 +19,6 @@
import (
"context"
- "knative.dev/eventing/pkg/apis/duck/v1beta1"
"testing"
"github.com/stretchr/testify/assert"
@@ -27,6 +26,7 @@
corev1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+ "knative.dev/eventing/pkg/apis/duck/v1beta1"
eventing "knative.dev/eventing/pkg/apis/eventing/v1beta1"
messaging "knative.dev/eventing/pkg/apis/messaging/v1beta1"
"knative.dev/pkg/apis"
@@ -301,7 +301,7 @@
}
}
-func TestKnativePlatformHttpDepdencies(t *testing.T) {
+func TestKnativePlatformHttpDependencies(t *testing.T) {
sources := []v1.SourceSpec{
{
DataSpec: v1.DataSpec{
@@ -344,7 +344,7 @@
assert.Nil(t, err)
assert.Contains(t, environment.Integration.Status.Capabilities, v1.CapabilityPlatformHTTP)
- assert.Contains(t, environment.Integration.Status.Dependencies, "mvn:org.apache.camel.quarkus/camel-quarkus-platform-http")
+ assert.Contains(t, environment.Integration.Status.Dependencies, "mvn:org.apache.camel.quarkus:camel-quarkus-platform-http")
})
}
}
diff --git a/pkg/trait/prometheus.go b/pkg/trait/prometheus.go
index aa762c4..1ce9505 100644
--- a/pkg/trait/prometheus.go
+++ b/pkg/trait/prometheus.go
@@ -85,7 +85,7 @@
switch e.CamelCatalog.Runtime.Provider {
case v1.RuntimeProviderQuarkus:
// Add the Camel Quarkus MP Metrics extension
- util.StringSliceUniqueAdd(&e.Integration.Status.Dependencies, "mvn:org.apache.camel.quarkus/camel-quarkus-microprofile-metrics")
+ util.StringSliceUniqueAdd(&e.Integration.Status.Dependencies, "mvn:org.apache.camel.quarkus:camel-quarkus-microprofile-metrics")
}
return nil
}
diff --git a/pkg/trait/util.go b/pkg/trait/util.go
index d8381bb..a0b7823 100644
--- a/pkg/trait/util.go
+++ b/pkg/trait/util.go
@@ -55,7 +55,6 @@
return &kit, err
}
-// CollectConfigurationValues --
func CollectConfigurationValues(configurationType string, configurable ...v1.Configurable) []string {
result := strset.New()
@@ -83,7 +82,6 @@
return s
}
-// CollectConfigurationPairs --
func CollectConfigurationPairs(configurationType string, configurable ...v1.Configurable) map[string]string {
result := make(map[string]string)
@@ -159,31 +157,30 @@
return toFileName.ReplaceAllString(h, "_")
}
-// AddSourceDependencies --
func AddSourceDependencies(source v1.SourceSpec, catalog *camel.RuntimeCatalog) *strset.Set {
dependencies := strset.New()
- // Add auto-detected dependencies.
+ // Add auto-detected dependencies
meta := metadata.Extract(catalog, source)
dependencies.Merge(meta.Dependencies)
- // Add loader dependencies.
+ // Add loader dependencies
lang := source.InferLanguage()
for loader, v := range catalog.Loaders {
// add loader specific dependencies
if source.Loader != "" && source.Loader == loader {
- dependencies.Add(fmt.Sprintf("mvn:%s/%s", v.GroupID, v.ArtifactID))
+ dependencies.Add(v.GetDependencyID())
for _, d := range v.Dependencies {
- dependencies.Add(fmt.Sprintf("mvn:%s/%s", d.GroupID, d.ArtifactID))
+ dependencies.Add(d.GetDependencyID())
}
} else if source.Loader == "" {
// add language specific dependencies
if util.StringSliceExists(v.Languages, string(lang)) {
- dependencies.Add(fmt.Sprintf("mvn:%s/%s", v.GroupID, v.ArtifactID))
+ dependencies.Add(v.GetDependencyID())
for _, d := range v.Dependencies {
- dependencies.Add(fmt.Sprintf("mvn:%s/%s", d.GroupID, d.ArtifactID))
+ dependencies.Add(d.GetDependencyID())
}
}
}
diff --git a/pkg/util/camel/camel_dependencies.go b/pkg/util/camel/camel_dependencies.go
index eb0dbf4..d7718ff 100644
--- a/pkg/util/camel/camel_dependencies.go
+++ b/pkg/util/camel/camel_dependencies.go
@@ -36,8 +36,7 @@
for _, d := range dependencies {
switch {
case strings.HasPrefix(d, "bom:"):
- mid := strings.TrimPrefix(d, "bom:")
- gav := strings.Replace(mid, "/", ":", -1)
+ gav := strings.TrimPrefix(d, "bom:")
d, err := maven.ParseGAV(gav)
if err != nil {
@@ -76,8 +75,7 @@
project.AddDependencyGAV("org.apache.camel.quarkus", artifactID, "")
case strings.HasPrefix(d, "mvn:"):
- mid := strings.TrimPrefix(d, "mvn:")
- gav := strings.Replace(mid, "/", ":", -1)
+ gav := strings.TrimPrefix(d, "mvn:")
project.AddEncodedDependencyGAV(gav)
default:
diff --git a/pkg/util/maven/maven_project_test.go b/pkg/util/maven/maven_project_test.go
index 164734c..9780393 100644
--- a/pkg/util/maven/maven_project_test.go
+++ b/pkg/util/maven/maven_project_test.go
@@ -170,11 +170,11 @@
}
func TestParseGAVMvnNoVersion(t *testing.T) {
- dep, err := ParseGAV("mvn:org.apache.camel/camel-core")
+ dep, err := ParseGAV("org.apache.camel:camel-core")
assert.Nil(t, err)
- assert.Equal(t, dep.GroupID, "mvn")
- assert.Equal(t, dep.ArtifactID, "org.apache.camel/camel-core")
+ assert.Equal(t, dep.GroupID, "org.apache.camel")
+ assert.Equal(t, dep.ArtifactID, "camel-core")
}
func TestParseGAVErrorNoColumn(t *testing.T) {
diff --git a/pkg/util/source/inspector.go b/pkg/util/source/inspector.go
index 6de2cb0..746a03a 100644
--- a/pkg/util/source/inspector.go
+++ b/pkg/util/source/inspector.go
@@ -18,7 +18,6 @@
package source
import (
- "fmt"
"regexp"
"strings"
@@ -30,7 +29,7 @@
type catalog2deps func(*camel.RuntimeCatalog) []string
const (
- defaultJsonDataformat = "json-jackson"
+ defaultJsonDataFormat = "json-jackson"
)
var (
@@ -65,14 +64,14 @@
sourceDependencies = map[*regexp.Regexp]catalog2deps{
jsonLibraryRegexp: func(catalog *camel.RuntimeCatalog) []string {
res := make([]string, 0)
- if jsonDF := catalog.GetArtifactByDataFormat(defaultJsonDataformat); jsonDF != nil {
+ if jsonDF := catalog.GetArtifactByDataFormat(defaultJsonDataFormat); jsonDF != nil {
res = append(res, jsonDF.GetDependencyID())
}
return res
},
jsonLanguageRegexp: func(catalog *camel.RuntimeCatalog) []string {
res := make([]string, 0)
- if jsonDF := catalog.GetArtifactByDataFormat(defaultJsonDataformat); jsonDF != nil {
+ if jsonDF := catalog.GetArtifactByDataFormat(defaultJsonDataFormat); jsonDF != nil {
res = append(res, jsonDF.GetDependencyID())
}
return res
@@ -81,7 +80,7 @@
deps := make([]string, 0)
if c, ok := catalog.CamelCatalogSpec.Runtime.Capabilities["rest"]; ok {
for _, d := range c.Dependencies {
- deps = append(deps, fmt.Sprintf("mvn:%s/%s", d.GroupID, d.ArtifactID))
+ deps = append(deps, d.GetDependencyID())
}
}
return deps
@@ -90,7 +89,7 @@
deps := make([]string, 0)
if c, ok := catalog.CamelCatalogSpec.Runtime.Capabilities["rest"]; ok {
for _, d := range c.Dependencies {
- deps = append(deps, fmt.Sprintf("mvn:%s/%s", d.GroupID, d.ArtifactID))
+ deps = append(deps, d.GetDependencyID())
}
}
return deps
@@ -99,7 +98,7 @@
deps := make([]string, 0)
if c, ok := catalog.CamelCatalogSpec.Runtime.Capabilities["rest"]; ok {
for _, d := range c.Dependencies {
- deps = append(deps, fmt.Sprintf("mvn:%s/%s", d.GroupID, d.ArtifactID))
+ deps = append(deps, d.GetDependencyID())
}
}
return deps
diff --git a/pkg/util/source/inspector_yaml.go b/pkg/util/source/inspector_yaml.go
index bcfa6cf..213fbf8 100644
--- a/pkg/util/source/inspector_yaml.go
+++ b/pkg/util/source/inspector_yaml.go
@@ -67,7 +67,7 @@
case "marshal":
if cm, ok := content.(map[interface{}]interface{}); ok {
if js, jsOk := cm["json"]; jsOk {
- dataFormatID := defaultJsonDataformat
+ dataFormatID := defaultJsonDataFormat
if jsContent, jsContentOk := js.(map[interface{}]interface{}); jsContentOk {
if lib, libOk := jsContent["library"]; libOk {
dataFormatID = strings.ToLower(fmt.Sprintf("json-%s", lib))
diff --git a/pkg/util/source/inspector_yaml_test.go b/pkg/util/source/inspector_yaml_test.go
index 18960d0..aedb20d 100644
--- a/pkg/util/source/inspector_yaml_test.go
+++ b/pkg/util/source/inspector_yaml_test.go
@@ -21,9 +21,10 @@
"fmt"
"testing"
+ "github.com/stretchr/testify/assert"
+
v1 "github.com/apache/camel-k/pkg/apis/camel/v1"
"github.com/apache/camel-k/pkg/util/camel"
- "github.com/stretchr/testify/assert"
)
func NewtestYAMLInspector(t *testing.T) YAMLInspector {
@@ -71,19 +72,22 @@
{
name: "consumer",
source: YAMLRouteConsumer,
- dependencies: []string{`mvn:org.apache.camel.k/camel-k-knative-consumer`},
- missingDependencies: []string{`mvn:org.apache.camel.k/camel-k-knative-producer`},
+ dependencies: []string{`mvn:org.apache.camel.k:camel-k-knative-consumer`},
+ missingDependencies: []string{`mvn:org.apache.camel.k:camel-k-knative-producer`},
},
{
name: "producer",
source: YAMLRouteProducer,
- dependencies: []string{`mvn:org.apache.camel.k/camel-k-knative-producer`},
- missingDependencies: []string{`mvn:org.apache.camel.k/camel-k-knative-consumer`},
+ dependencies: []string{`mvn:org.apache.camel.k:camel-k-knative-producer`},
+ missingDependencies: []string{`mvn:org.apache.camel.k:camel-k-knative-consumer`},
},
{
- name: "transformer",
- source: YAMLRouteTransformer,
- dependencies: []string{`mvn:org.apache.camel.k/camel-k-knative-producer`, `mvn:org.apache.camel.k/camel-k-knative-consumer`},
+ name: "transformer",
+ source: YAMLRouteTransformer,
+ dependencies: []string{
+ `mvn:org.apache.camel.k:camel-k-knative-producer`,
+ `mvn:org.apache.camel.k:camel-k-knative-consumer`,
+ },
},
}
for _, test := range tests {