You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by as...@apache.org on 2022/01/12 13:53:47 UTC
[camel-k] 01/31: feat(maven): Support platform Maven settings
This is an automated email from the ASF dual-hosted git repository.
astefanutti pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel-k.git
commit 57b9569f4b7687fa890ff33039d1cbb997bafa2f
Author: Antonin Stefanutti <an...@stefanutti.fr>
AuthorDate: Thu Jan 6 17:43:32 2022 +0100
feat(maven): Support platform Maven settings
---
pkg/builder/project.go | 10 +++++++++-
pkg/builder/project_test.go | 4 ++--
pkg/builder/quarkus.go | 6 ++++--
pkg/builder/types.go | 3 ++-
pkg/cmd/util_dependencies.go | 5 ++---
pkg/trait/openapi.go | 15 ++++++++++-----
pkg/util/camel/catalog.go | 27 +++++++++++++++++----------
pkg/util/maven/maven_command.go | 23 +++++++++++++++++------
8 files changed, 63 insertions(+), 30 deletions(-)
diff --git a/pkg/builder/project.go b/pkg/builder/project.go
index 609769d..e9cd843 100644
--- a/pkg/builder/project.go
+++ b/pkg/builder/project.go
@@ -23,6 +23,7 @@ import (
"github.com/apache/camel-k/pkg/util/camel"
"github.com/apache/camel-k/pkg/util/jvm"
"github.com/apache/camel-k/pkg/util/kubernetes"
+ "github.com/apache/camel-k/pkg/util/maven"
)
func init() {
@@ -90,9 +91,16 @@ func generateProjectSettings(ctx *builderContext) error {
return err
}
if val != "" {
- ctx.Maven.SettingsData = []byte(val)
+ ctx.Maven.UserSettings = []byte(val)
}
+ settings := maven.NewSettings()
+ data, err := settings.MarshalBytes()
+ if err != nil {
+ return err
+ }
+ ctx.Maven.GlobalSettings = data
+
return nil
}
diff --git a/pkg/builder/project_test.go b/pkg/builder/project_test.go
index 9855cac..9a1c7fa 100644
--- a/pkg/builder/project_test.go
+++ b/pkg/builder/project_test.go
@@ -74,7 +74,7 @@ func TestMavenSettingsFromConfigMap(t *testing.T) {
err = Project.GenerateProjectSettings.execute(&ctx)
assert.Nil(t, err)
- assert.Equal(t, []byte("setting-data"), ctx.Maven.SettingsData)
+ assert.Equal(t, []byte("setting-data"), ctx.Maven.UserSettings)
}
func TestMavenSettingsFromSecret(t *testing.T) {
@@ -121,5 +121,5 @@ func TestMavenSettingsFromSecret(t *testing.T) {
err = Project.GenerateProjectSettings.execute(&ctx)
assert.Nil(t, err)
- assert.Equal(t, []byte("setting-data"), ctx.Maven.SettingsData)
+ assert.Equal(t, []byte("setting-data"), ctx.Maven.UserSettings)
}
diff --git a/pkg/builder/quarkus.go b/pkg/builder/quarkus.go
index aa52763..7189c1a 100644
--- a/pkg/builder/quarkus.go
+++ b/pkg/builder/quarkus.go
@@ -151,7 +151,8 @@ func GenerateQuarkusProjectCommon(camelQuarkusVersion string, runtimeVersion str
func buildQuarkusRunner(ctx *builderContext) error {
mc := maven.NewContext(path.Join(ctx.Path, "maven"))
- mc.SettingsContent = ctx.Maven.SettingsData
+ mc.GlobalSettings = ctx.Maven.GlobalSettings
+ mc.UserSettings = ctx.Maven.UserSettings
mc.LocalRepository = ctx.Build.Maven.LocalRepository
if ctx.Maven.TrustStoreName != "" {
@@ -196,7 +197,8 @@ func BuildQuarkusRunnerCommon(ctx context.Context, mc maven.Context, project mav
func computeQuarkusDependencies(ctx *builderContext) error {
mc := maven.NewContext(path.Join(ctx.Path, "maven"))
- mc.SettingsContent = ctx.Maven.SettingsData
+ mc.GlobalSettings = ctx.Maven.GlobalSettings
+ mc.UserSettings = ctx.Maven.UserSettings
mc.LocalRepository = ctx.Build.Maven.LocalRepository
// Process artifacts list and add it to existing artifacts
diff --git a/pkg/builder/types.go b/pkg/builder/types.go
index 8897e11..bb2a2f2 100644
--- a/pkg/builder/types.go
+++ b/pkg/builder/types.go
@@ -85,7 +85,8 @@ type builderContext struct {
Resources []resource
Maven struct {
Project maven.Project
- SettingsData []byte
+ UserSettings []byte
+ GlobalSettings []byte
TrustStoreName string
TrustStorePass string
}
diff --git a/pkg/cmd/util_dependencies.go b/pkg/cmd/util_dependencies.go
index 8a5e3ea..96b83f8 100644
--- a/pkg/cmd/util_dependencies.go
+++ b/pkg/cmd/util_dependencies.go
@@ -140,7 +140,7 @@ func getTransitiveDependencies(ctx context.Context, catalog *camel.RuntimeCatalo
if err != nil {
return nil, err
}
- mc.SettingsContent = settingsData
+ mc.UserSettings = settingsData
}
// Make maven command less verbose
@@ -210,7 +210,6 @@ func getLocalBuildRoutes(integrationDirectory string) ([]string, error) {
func generateCatalog(ctx context.Context) (*camel.RuntimeCatalog, error) {
// A Camel catalog is required for this operation
- settings := ""
mvn := v1.MavenSpec{
LocalRepository: "",
}
@@ -220,7 +219,7 @@ func generateCatalog(ctx context.Context) (*camel.RuntimeCatalog, error) {
}
var providerDependencies []maven.Dependency
var caCert []byte
- catalog, err := camel.GenerateCatalogCommon(ctx, settings, caCert, mvn, runtime, providerDependencies)
+ catalog, err := camel.GenerateCatalogCommon(ctx, nil, nil, caCert, mvn, runtime, providerDependencies)
if err != nil {
return nil, err
}
diff --git a/pkg/trait/openapi.go b/pkg/trait/openapi.go
index a4545be..1961355 100644
--- a/pkg/trait/openapi.go
+++ b/pkg/trait/openapi.go
@@ -175,7 +175,7 @@ func (t *openAPITrait) generateFromDataSpecs(e *Environment, tmpDir string, spec
}
}
- // Add an additional source that references the config map
+ // Add a source that references the config map
generatedSources = append(generatedSources, v1.SourceSpec{
DataSpec: v1.DataSpec{
Name: generatedSourceName,
@@ -256,13 +256,18 @@ func (t *openAPITrait) createNewOpenAPIConfigMap(e *Environment, resource v1.Dat
mc.AddArgument("-Dopenapi.spec=" + in)
mc.AddArgument("-Ddsl.out=" + out)
- settings, err := kubernetes.ResolveValueSource(e.Ctx, e.Client, e.Platform.Namespace, &e.Platform.Status.Build.Maven.Settings)
- if err != nil {
+ if settings, err := kubernetes.ResolveValueSource(e.Ctx, e.Client, e.Platform.Namespace, &e.Platform.Status.Build.Maven.Settings); err != nil {
return err
+ } else if settings != "" {
+ mc.UserSettings = []byte(settings)
}
- if settings != "" {
- mc.SettingsContent = []byte(settings)
+
+ settings := maven.NewSettings()
+ data, err := settings.MarshalBytes()
+ if err != nil {
+ return err
}
+ mc.GlobalSettings = data
if e.Platform.Status.Build.Maven.CASecret != nil {
certData, err := kubernetes.GetSecretRefData(e.Ctx, e.Client, e.Platform.Namespace, e.Platform.Status.Build.Maven.CASecret)
diff --git a/pkg/util/camel/catalog.go b/pkg/util/camel/catalog.go
index b645955..88df86d 100644
--- a/pkg/util/camel/catalog.go
+++ b/pkg/util/camel/catalog.go
@@ -21,14 +21,13 @@ import (
"context"
"path"
- "github.com/apache/camel-k/pkg/util"
-
yaml2 "gopkg.in/yaml.v2"
- k8sclient "sigs.k8s.io/controller-runtime/pkg/client"
+ ctrl "sigs.k8s.io/controller-runtime/pkg/client"
v1 "github.com/apache/camel-k/pkg/apis/camel/v1"
"github.com/apache/camel-k/pkg/resources"
+ "github.com/apache/camel-k/pkg/util"
"github.com/apache/camel-k/pkg/util/defaults"
"github.com/apache/camel-k/pkg/util/jvm"
"github.com/apache/camel-k/pkg/util/kubernetes"
@@ -75,13 +74,18 @@ func catalogForRuntimeProvider(provider v1.RuntimeProvider) (*RuntimeCatalog, er
func GenerateCatalog(
ctx context.Context,
- client k8sclient.Reader,
+ client ctrl.Reader,
namespace string,
mvn v1.MavenSpec,
runtime v1.RuntimeSpec,
providerDependencies []maven.Dependency) (*RuntimeCatalog, error) {
- settings, err := kubernetes.ResolveValueSource(ctx, client, namespace, &mvn.Settings)
+ userSettings, err := kubernetes.ResolveValueSource(ctx, client, namespace, &mvn.Settings)
+ if err != nil {
+ return nil, err
+ }
+ settings := maven.NewSettings()
+ globalSettings, err := settings.MarshalBytes()
if err != nil {
return nil, err
}
@@ -94,12 +98,13 @@ func GenerateCatalog(
}
}
- return GenerateCatalogCommon(ctx, settings, caCert, mvn, runtime, providerDependencies)
+ return GenerateCatalogCommon(ctx, globalSettings, []byte(userSettings), caCert, mvn, runtime, providerDependencies)
}
func GenerateCatalogCommon(
ctx context.Context,
- settings string,
+ globalSettings []byte,
+ userSettings []byte,
caCert []byte,
mvn v1.MavenSpec,
runtime v1.RuntimeSpec,
@@ -116,9 +121,11 @@ func GenerateCatalogCommon(
mc.AddSystemProperty("catalog.file", "catalog.yaml")
mc.AddSystemProperty("catalog.runtime", string(runtime.Provider))
- mc.SettingsContent = nil
- if settings != "" {
- mc.SettingsContent = []byte(settings)
+ if globalSettings != nil {
+ mc.GlobalSettings = globalSettings
+ }
+ if userSettings != nil {
+ mc.UserSettings = userSettings
}
if caCert != nil {
diff --git a/pkg/util/maven/maven_command.go b/pkg/util/maven/maven_command.go
index e42d9cd..96c819b 100644
--- a/pkg/util/maven/maven_command.go
+++ b/pkg/util/maven/maven_command.go
@@ -62,12 +62,16 @@ func (c *Command) Do(ctx context.Context) error {
}
settingsPath := path.Join(c.context.Path, "settings.xml")
- settingsExists, err := util.FileExists(settingsPath)
- if err != nil {
+ if settingsExists, err := util.FileExists(settingsPath); err != nil {
return err
+ } else if settingsExists {
+ args = append(args, "--global-settings", settingsPath)
}
- if settingsExists {
+ settingsPath = path.Join(c.context.Path, "user-settings.xml")
+ if settingsExists, err := util.FileExists(settingsPath); err != nil {
+ return err
+ } else if settingsExists {
args = append(args, "--settings", settingsPath)
}
@@ -162,7 +166,8 @@ func NewContext(buildDir string) Context {
type Context struct {
Path string
ExtraMavenOpts []string
- SettingsContent []byte
+ GlobalSettings []byte
+ UserSettings []byte
AdditionalArguments []string
AdditionalEntries map[string]interface{}
LocalRepository string
@@ -197,8 +202,14 @@ func generateProjectStructure(context Context, project Project) error {
return err
}
- if context.SettingsContent != nil {
- if err := util.WriteFileWithContent(path.Join(context.Path, "settings.xml"), context.SettingsContent); err != nil {
+ if context.GlobalSettings != nil {
+ if err := util.WriteFileWithContent(path.Join(context.Path, "settings.xml"), context.GlobalSettings); err != nil {
+ return err
+ }
+ }
+
+ if context.UserSettings != nil {
+ if err := util.WriteFileWithContent(path.Join(context.Path, "user-settings.xml"), context.UserSettings); err != nil {
return err
}
}