This is an automated email from the ASF dual-hosted git repository. astefanutti pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/camel-k.git
commit 2d66b6b8523127f1a1a4f5911df34470913278fe Author: Antonin Stefanutti <[email protected]> AuthorDate: Thu Mar 25 18:55:53 2021 +0100 feat(build): Do not override user-provided Maven options --- pkg/util/maven/maven.go | 54 ++++++++++++++++++++++++++++++++++--------------- 1 file changed, 38 insertions(+), 16 deletions(-) diff --git a/pkg/util/maven/maven.go b/pkg/util/maven/maven.go index f49658f..081e35e 100644 --- a/pkg/util/maven/maven.go +++ b/pkg/util/maven/maven.go @@ -124,26 +124,48 @@ func Run(ctx Context) error { cmd.Stdout = os.Stdout } - mavenOpts, ok := os.LookupEnv("MAVEN_OPTS") - // FIXME: do not override duplicated Maven options - mavenOpts = strings.Join(append(strings.Fields(mavenOpts), ctx.ExtraMavenOpts...), " ") - - // Inherit the parent process environment - env := os.Environ() - if !ok { - env = append(env, mavenOpts) - } else { - for i, e := range env { - if strings.HasPrefix(e, "MAVEN_OPTS=") { - env[i] = mavenOpts - break + var mavenOptions string + if len(ctx.ExtraMavenOpts) > 0 { + // Inherit the parent process environment + env := os.Environ() + + mavenOpts, ok := os.LookupEnv("MAVEN_OPTS") + if !ok { + mavenOptions = strings.Join(ctx.ExtraMavenOpts, " ") + env = append(env, "MAVEN_OPTS="+mavenOptions) + } else { + var extraOptions []string + options := strings.Fields(mavenOpts) + for _, extraOption := range ctx.ExtraMavenOpts { + // Basic duplicated key detection, that should be improved + // to support a wider range of JVM options + key := strings.SplitN(extraOption, "=", 2)[0] + exists := false + for _, opt := range options { + if strings.HasPrefix(opt, key) { + exists = true + break + } + } + if !exists { + extraOptions = append(extraOptions, extraOption) + } + } + + options = append(options, extraOptions...) + mavenOptions = strings.Join(options, " ") + for i, e := range env { + if strings.HasPrefix(e, "MAVEN_OPTS=") { + env[i] = "MAVEN_OPTS=" + mavenOptions + break + } } } - } - cmd.Env = env + cmd.Env = env + } - Log.WithValues("timeout", timeout.String(), "env", env). + Log.WithValues("timeout", timeout.String(), "MAVEN_OPTS", mavenOptions). Infof("executing: %s", strings.Join(cmd.Args, " ")) return cmd.Run()
