package cmd import ( "github.com/SAP/jenkins-library/pkg/command" piperhttp "github.com/SAP/jenkins-library/pkg/http" "github.com/SAP/jenkins-library/pkg/log" "github.com/SAP/jenkins-library/pkg/maven" "github.com/SAP/jenkins-library/pkg/piperutils" "os" "github.com/SAP/jenkins-library/pkg/telemetry" ) type mavenExecuteUtils interface { maven.Utils FileWrite(path string, content []byte, perm os.FileMode) error } type mavenExecuteUtilsBundle struct { *command.Command *piperutils.Files *piperhttp.Client } func newMavenExecuteUtilsBundle() mavenExecuteUtils { utils := mavenExecuteUtilsBundle{ Command: &command.Command{}, Files: &piperutils.Files{}, Client: &piperhttp.Client{}, } utils.Stdout(log.Writer()) utils.Stderr(log.Writer()) return &utils } func mavenExecute(config mavenExecuteOptions, _ *telemetry.CustomData) { err := runMavenExecute(config, newMavenExecuteUtilsBundle()) if err != nil { log.Entry().WithError(err).Fatal("step execution failed") } } func runMavenExecute(config mavenExecuteOptions, utils mavenExecuteUtils) error { options := maven.ExecuteOptions{ PomPath: config.PomPath, ProjectSettingsFile: config.ProjectSettingsFile, GlobalSettingsFile: config.GlobalSettingsFile, M2Path: config.M2Path, Goals: config.Goals, Defines: config.Defines, Flags: config.Flags, LogSuccessfulMavenTransfers: config.LogSuccessfulMavenTransfers, ReturnStdout: config.ReturnStdout, } output, err := maven.Execute(&options, utils) if err == nil && config.ReturnStdout { err = utils.FileWrite(".pipeline/maven_output.txt", []byte(output), 0644) } return err }