You've already forked sap-jenkins-library
							
							
				mirror of
				https://github.com/SAP/jenkins-library.git
				synced 2025-10-30 23:57:50 +02:00 
			
		
		
		
	support for sub-module in maven build (#4950)
* support for sub-module in maven build * fixed test-cases Signed-off-by: Vijayan T <vijayanjay@gmail.com> * fixed test-cases Signed-off-by: Vijayan T <vijayanjay@gmail.com> * changed the function name --------- Signed-off-by: Vijayan T <vijayanjay@gmail.com> Co-authored-by: Vyacheslav Starostin <32613074+vstarostin@users.noreply.github.com>
This commit is contained in:
		| @@ -7,6 +7,7 @@ import ( | ||||
| 	"fmt" | ||||
| 	"io" | ||||
| 	"os" | ||||
| 	"path/filepath" | ||||
| 	"strings" | ||||
| 	"testing" | ||||
|  | ||||
| @@ -53,7 +54,10 @@ func TestGetMavenSettings(t *testing.T) { | ||||
| 		config := codeqlExecuteScanOptions{BuildTool: "maven", ProjectSettingsFile: "test.xml"} | ||||
| 		buildCmd := "mvn clean install" | ||||
| 		params := getMavenSettings(buildCmd, &config, newCodeqlExecuteScanTestsUtils()) | ||||
| 		assert.Equal(t, " --settings=test.xml", params) | ||||
| 		dir, _ := os.Getwd() | ||||
| 		projectSettingsPath := filepath.Join(dir, "test.xml") | ||||
| 		expectedCommand := fmt.Sprintf(" --settings=%s", projectSettingsPath) | ||||
| 		assert.Equal(t, expectedCommand, params) | ||||
| 	}) | ||||
|  | ||||
| 	t.Run("Skip Project Settings file in case already used", func(t *testing.T) { | ||||
| @@ -67,84 +71,127 @@ func TestGetMavenSettings(t *testing.T) { | ||||
| 		config := codeqlExecuteScanOptions{BuildTool: "maven", GlobalSettingsFile: "global.xml"} | ||||
| 		buildCmd := "mvn clean install" | ||||
| 		params := getMavenSettings(buildCmd, &config, newCodeqlExecuteScanTestsUtils()) | ||||
| 		assert.Equal(t, " --global-settings=global.xml", params) | ||||
| 		dir, _ := os.Getwd() | ||||
| 		globalSettingsPath := filepath.Join(dir, "global.xml") | ||||
| 		expectedCommand := fmt.Sprintf(" --global-settings=%s", globalSettingsPath) | ||||
| 		assert.Equal(t, expectedCommand, params) | ||||
| 	}) | ||||
|  | ||||
| 	t.Run("Project and Global Settings file", func(t *testing.T) { | ||||
| 		config := codeqlExecuteScanOptions{BuildTool: "maven", ProjectSettingsFile: "test.xml", GlobalSettingsFile: "global.xml"} | ||||
| 		buildCmd := "mvn clean install" | ||||
| 		params := getMavenSettings(buildCmd, &config, newCodeqlExecuteScanTestsUtils()) | ||||
| 		assert.Equal(t, " --global-settings=global.xml --settings=test.xml", params) | ||||
| 		dir, _ := os.Getwd() | ||||
| 		globalSettingsPath := filepath.Join(dir, "global.xml") | ||||
| 		projectSettingsPath := filepath.Join(dir, "test.xml") | ||||
| 		expectedCommand := fmt.Sprintf(" --global-settings=%s --settings=%s", globalSettingsPath, projectSettingsPath) | ||||
| 		assert.Equal(t, expectedCommand, params) | ||||
| 	}) | ||||
|  | ||||
| 	t.Run("ProjectSettingsFile https url", func(t *testing.T) { | ||||
| 		config := codeqlExecuteScanOptions{BuildTool: "maven", ProjectSettingsFile: "https://jenkins-sap-test.com/test.xml"} | ||||
| 		buildCmd := "mvn clean install" | ||||
| 		params := getMavenSettings(buildCmd, &config, newCodeqlExecuteScanTestsUtils()) | ||||
| 		assert.Equal(t, " --settings=.pipeline/mavenProjectSettings.xml", params) | ||||
| 		dir, _ := os.Getwd() | ||||
| 		projectSettingsPath := filepath.Join(dir, ".pipeline/mavenProjectSettings.xml") | ||||
| 		expectedCommand := fmt.Sprintf(" --settings=%s", projectSettingsPath) | ||||
| 		assert.Equal(t, expectedCommand, params) | ||||
| 	}) | ||||
|  | ||||
| 	t.Run("ProjectSettingsFile http url", func(t *testing.T) { | ||||
| 		config := codeqlExecuteScanOptions{BuildTool: "maven", ProjectSettingsFile: "http://jenkins-sap-test.com/test.xml"} | ||||
| 		buildCmd := "mvn clean install" | ||||
| 		params := getMavenSettings(buildCmd, &config, newCodeqlExecuteScanTestsUtils()) | ||||
| 		assert.Equal(t, " --settings=.pipeline/mavenProjectSettings.xml", params) | ||||
| 		dir, _ := os.Getwd() | ||||
| 		projectSettingsPath := filepath.Join(dir, ".pipeline/mavenProjectSettings.xml") | ||||
| 		expectedCommand := fmt.Sprintf(" --settings=%s", projectSettingsPath) | ||||
| 		assert.Equal(t, expectedCommand, params) | ||||
| 	}) | ||||
|  | ||||
| 	t.Run("GlobalSettingsFile https url", func(t *testing.T) { | ||||
| 		config := codeqlExecuteScanOptions{BuildTool: "maven", GlobalSettingsFile: "https://jenkins-sap-test.com/test.xml"} | ||||
| 		buildCmd := "mvn clean install" | ||||
| 		params := getMavenSettings(buildCmd, &config, newCodeqlExecuteScanTestsUtils()) | ||||
| 		assert.Equal(t, " --global-settings=.pipeline/mavenGlobalSettings.xml", params) | ||||
| 		dir, _ := os.Getwd() | ||||
| 		globalSettingsPath := filepath.Join(dir, ".pipeline/mavenGlobalSettings.xml") | ||||
| 		expectedCommand := fmt.Sprintf(" --global-settings=%s", globalSettingsPath) | ||||
| 		assert.Equal(t, expectedCommand, params) | ||||
| 	}) | ||||
|  | ||||
| 	t.Run("GlobalSettingsFile http url", func(t *testing.T) { | ||||
| 		config := codeqlExecuteScanOptions{BuildTool: "maven", GlobalSettingsFile: "http://jenkins-sap-test.com/test.xml"} | ||||
| 		buildCmd := "mvn clean install" | ||||
| 		params := getMavenSettings(buildCmd, &config, newCodeqlExecuteScanTestsUtils()) | ||||
| 		assert.Equal(t, " --global-settings=.pipeline/mavenGlobalSettings.xml", params) | ||||
| 		dir, _ := os.Getwd() | ||||
| 		globalSettingsPath := filepath.Join(dir, ".pipeline/mavenGlobalSettings.xml") | ||||
| 		expectedCommand := fmt.Sprintf(" --global-settings=%s", globalSettingsPath) | ||||
| 		assert.Equal(t, expectedCommand, params) | ||||
| 	}) | ||||
|  | ||||
| 	t.Run("ProjectSettingsFile and GlobalSettingsFile https url", func(t *testing.T) { | ||||
| 		config := codeqlExecuteScanOptions{BuildTool: "maven", GlobalSettingsFile: "https://jenkins-sap-test.com/test.xml", ProjectSettingsFile: "http://jenkins-sap-test.com/test.xml"} | ||||
| 		buildCmd := "mvn clean install" | ||||
| 		params := getMavenSettings(buildCmd, &config, newCodeqlExecuteScanTestsUtils()) | ||||
| 		assert.Equal(t, " --global-settings=.pipeline/mavenGlobalSettings.xml --settings=.pipeline/mavenProjectSettings.xml", params) | ||||
| 		dir, _ := os.Getwd() | ||||
| 		globalSettingsPath := filepath.Join(dir, ".pipeline/mavenGlobalSettings.xml") | ||||
| 		projectSettingsPath := filepath.Join(dir, ".pipeline/mavenProjectSettings.xml") | ||||
| 		expectedCommand := fmt.Sprintf(" --global-settings=%s --settings=%s", globalSettingsPath, projectSettingsPath) | ||||
| 		assert.Equal(t, expectedCommand, params) | ||||
| 	}) | ||||
|  | ||||
| 	t.Run("ProjectSettingsFile and GlobalSettingsFile http url", func(t *testing.T) { | ||||
| 		config := codeqlExecuteScanOptions{BuildTool: "maven", GlobalSettingsFile: "http://jenkins-sap-test.com/test.xml", ProjectSettingsFile: "http://jenkins-sap-test.com/test.xml"} | ||||
| 		buildCmd := "mvn clean install" | ||||
| 		params := getMavenSettings(buildCmd, &config, newCodeqlExecuteScanTestsUtils()) | ||||
| 		assert.Equal(t, " --global-settings=.pipeline/mavenGlobalSettings.xml --settings=.pipeline/mavenProjectSettings.xml", params) | ||||
| 		dir, _ := os.Getwd() | ||||
| 		globalSettingsPath := filepath.Join(dir, ".pipeline/mavenGlobalSettings.xml") | ||||
| 		projectSettingsPath := filepath.Join(dir, ".pipeline/mavenProjectSettings.xml") | ||||
| 		expectedCommand := fmt.Sprintf(" --global-settings=%s --settings=%s", globalSettingsPath, projectSettingsPath) | ||||
| 		assert.Equal(t, expectedCommand, params) | ||||
| 	}) | ||||
|  | ||||
| 	t.Run("ProjectSettingsFile file and GlobalSettingsFile https url", func(t *testing.T) { | ||||
| 		config := codeqlExecuteScanOptions{BuildTool: "maven", GlobalSettingsFile: "https://jenkins-sap-test.com/test.xml", ProjectSettingsFile: "test.xml"} | ||||
| 		buildCmd := "mvn clean install" | ||||
| 		params := getMavenSettings(buildCmd, &config, newCodeqlExecuteScanTestsUtils()) | ||||
| 		assert.Equal(t, " --global-settings=.pipeline/mavenGlobalSettings.xml --settings=test.xml", params) | ||||
| 		dir, _ := os.Getwd() | ||||
| 		globalSettingsPath := filepath.Join(dir, ".pipeline/mavenGlobalSettings.xml") | ||||
| 		projectSettingsPath := filepath.Join(dir, "test.xml") | ||||
| 		expectedCommand := fmt.Sprintf(" --global-settings=%s --settings=%s", globalSettingsPath, projectSettingsPath) | ||||
| 		assert.Equal(t, expectedCommand, params) | ||||
| 	}) | ||||
|  | ||||
| 	t.Run("ProjectSettingsFile file and GlobalSettingsFile https url", func(t *testing.T) { | ||||
| 		config := codeqlExecuteScanOptions{BuildTool: "maven", GlobalSettingsFile: "http://jenkins-sap-test.com/test.xml", ProjectSettingsFile: "test.xml"} | ||||
| 		buildCmd := "mvn clean install" | ||||
| 		params := getMavenSettings(buildCmd, &config, newCodeqlExecuteScanTestsUtils()) | ||||
| 		assert.Equal(t, " --global-settings=.pipeline/mavenGlobalSettings.xml --settings=test.xml", params) | ||||
| 		dir, _ := os.Getwd() | ||||
| 		globalSettingsPath := filepath.Join(dir, ".pipeline/mavenGlobalSettings.xml") | ||||
| 		projectSettingsPath := filepath.Join(dir, "test.xml") | ||||
| 		expectedCommand := fmt.Sprintf(" --global-settings=%s --settings=%s", globalSettingsPath, projectSettingsPath) | ||||
| 		assert.Equal(t, expectedCommand, params) | ||||
| 	}) | ||||
|  | ||||
| 	t.Run("ProjectSettingsFile https url and GlobalSettingsFile file", func(t *testing.T) { | ||||
| 		config := codeqlExecuteScanOptions{BuildTool: "maven", GlobalSettingsFile: "global.xml", ProjectSettingsFile: "http://jenkins-sap-test.com/test.xml"} | ||||
| 		buildCmd := "mvn clean install" | ||||
| 		params := getMavenSettings(buildCmd, &config, newCodeqlExecuteScanTestsUtils()) | ||||
| 		assert.Equal(t, " --global-settings=global.xml --settings=.pipeline/mavenProjectSettings.xml", params) | ||||
| 		dir, _ := os.Getwd() | ||||
| 		globalSettingsPath := filepath.Join(dir, "global.xml") | ||||
| 		projectSettingsPath := filepath.Join(dir, ".pipeline/mavenProjectSettings.xml") | ||||
| 		expectedCommand := fmt.Sprintf(" --global-settings=%s --settings=%s", globalSettingsPath, projectSettingsPath) | ||||
| 		assert.Equal(t, expectedCommand, params) | ||||
| 	}) | ||||
|  | ||||
| 	t.Run("ProjectSettingsFile http url and GlobalSettingsFile file", func(t *testing.T) { | ||||
| 		config := codeqlExecuteScanOptions{BuildTool: "maven", GlobalSettingsFile: "global.xml", ProjectSettingsFile: "http://jenkins-sap-test.com/test.xml"} | ||||
| 		buildCmd := "mvn clean install" | ||||
| 		params := getMavenSettings(buildCmd, &config, newCodeqlExecuteScanTestsUtils()) | ||||
| 		assert.Equal(t, " --global-settings=global.xml --settings=.pipeline/mavenProjectSettings.xml", params) | ||||
| 		dir, _ := os.Getwd() | ||||
| 		globalSettingsPath := filepath.Join(dir, "global.xml") | ||||
| 		projectSettingsPath := filepath.Join(dir, ".pipeline/mavenProjectSettings.xml") | ||||
| 		expectedCommand := fmt.Sprintf(" --global-settings=%s --settings=%s", globalSettingsPath, projectSettingsPath) | ||||
| 		assert.Equal(t, expectedCommand, params) | ||||
| 	}) | ||||
| } | ||||
|  | ||||
| @@ -196,7 +243,11 @@ func TestUpdateCmdFlag(t *testing.T) { | ||||
| 			"--command": "mvn clean install", | ||||
| 		} | ||||
| 		updateCmdFlag(&config, customFlags, newCodeqlExecuteScanTestsUtils()) | ||||
| 		assert.Equal(t, "mvn clean install --global-settings=global.xml --settings=test.xml", customFlags["--command"]) | ||||
| 		dir, _ := os.Getwd() | ||||
| 		globalSettingsPath := filepath.Join(dir, "global.xml") | ||||
| 		projectSettingsPath := filepath.Join(dir, "test.xml") | ||||
| 		expectedCommand := fmt.Sprintf("mvn clean install --global-settings=%s --settings=%s", globalSettingsPath, projectSettingsPath) | ||||
| 		assert.Equal(t, expectedCommand, customFlags["--command"]) | ||||
| 		assert.Equal(t, "", customFlags["-c"]) | ||||
| 	}) | ||||
|  | ||||
|   | ||||
| @@ -348,8 +348,10 @@ func TestRunDetect(t *testing.T) { | ||||
| 		assert.Equal(t, ".", utilsMock.Dir, "Wrong execution directory used") | ||||
| 		assert.Equal(t, "/bin/bash", utilsMock.Shell[0], "Bash shell expected") | ||||
| 		absoluteLocalPath := string(os.PathSeparator) + filepath.Join("root_folder", ".pipeline", "local_repo") | ||||
|  | ||||
| 		expectedParam := "\"--detect.maven.build.command=--global-settings global-settings.xml --settings project-settings.xml -Dmaven.repo.local=" + absoluteLocalPath + "\"" | ||||
| 		dir, _ := os.Getwd() | ||||
| 		globalSettingsPath := filepath.Join(dir, "global-settings.xml") | ||||
| 		projectSettingsPath := filepath.Join(dir, "project-settings.xml") | ||||
| 		expectedParam := "\"--detect.maven.build.command=--global-settings " + globalSettingsPath + " --settings " + projectSettingsPath + " -Dmaven.repo.local=" + absoluteLocalPath + "\"" | ||||
| 		assert.Contains(t, utilsMock.Calls[0], expectedParam) | ||||
| 	}) | ||||
|  | ||||
|   | ||||
| @@ -6,15 +6,16 @@ package cmd | ||||
| import ( | ||||
| 	"errors" | ||||
| 	"fmt" | ||||
| 	"github.com/SAP/jenkins-library/pkg/maven" | ||||
| 	"github.com/SAP/jenkins-library/pkg/mock" | ||||
| 	"github.com/SAP/jenkins-library/pkg/nexus" | ||||
| 	"github.com/stretchr/testify/assert" | ||||
| 	"net/http" | ||||
| 	"os" | ||||
| 	"path/filepath" | ||||
| 	"strings" | ||||
| 	"testing" | ||||
|  | ||||
| 	"github.com/SAP/jenkins-library/pkg/maven" | ||||
| 	"github.com/SAP/jenkins-library/pkg/mock" | ||||
| 	"github.com/SAP/jenkins-library/pkg/nexus" | ||||
| 	"github.com/stretchr/testify/assert" | ||||
| ) | ||||
|  | ||||
| type mockUtilsBundle struct { | ||||
| @@ -679,9 +680,11 @@ func TestUploadMavenProjects(t *testing.T) { | ||||
| 		assert.NoError(t, err, "expected Maven upload to work") | ||||
|  | ||||
| 		assert.Equal(t, 1, len(utils.Calls)) | ||||
| 		dir, _ := os.Getwd() | ||||
| 		absoluteSettingsPath := filepath.Join(dir, settingsPath) | ||||
| 		expectedParameters1 := []string{ | ||||
| 			"--settings", | ||||
| 			settingsPath, | ||||
| 			absoluteSettingsPath, | ||||
| 			"-Durl=http://localhost:8081/repository/maven-releases/", | ||||
| 			"-DgroupId=com.mycompany.app", | ||||
| 			"-Dversion=1.0", | ||||
|   | ||||
| @@ -5,9 +5,11 @@ package maven | ||||
|  | ||||
| import ( | ||||
| 	"errors" | ||||
| 	"github.com/SAP/jenkins-library/pkg/mock" | ||||
| 	"os" | ||||
| 	"path/filepath" | ||||
|  | ||||
| 	"github.com/SAP/jenkins-library/pkg/mock" | ||||
|  | ||||
| 	"net/http" | ||||
| 	"testing" | ||||
|  | ||||
| @@ -78,7 +80,10 @@ func TestExecute(t *testing.T) { | ||||
| 			Goals: []string{"flatten", "install"}, Defines: []string{"-Da=b"}, | ||||
| 			Flags: []string{"-q"}, LogSuccessfulMavenTransfers: true, | ||||
| 			ReturnStdout: false} | ||||
| 		expectedParameters := []string{"--global-settings", "anotherSettings.xml", "--settings", "settings.xml", | ||||
| 		dir, _ := os.Getwd() | ||||
| 		globalSettingsPath := filepath.Join(dir, "anotherSettings.xml") | ||||
| 		projectSettingsPath := filepath.Join(dir, "settings.xml") | ||||
| 		expectedParameters := []string{"--global-settings", globalSettingsPath, "--settings", projectSettingsPath, | ||||
| 			"-Dmaven.repo.local=.m2/", "--file", "pom.xml", "-q", "-Da=b", "--batch-mode", | ||||
| 			"flatten", "install"} | ||||
|  | ||||
| @@ -115,9 +120,12 @@ func TestGetParameters(t *testing.T) { | ||||
| 	t.Run("should resolve configured parameters and download the settings files", func(t *testing.T) { | ||||
| 		utils := NewMockUtils(false) | ||||
| 		opts := ExecuteOptions{PomPath: "pom.xml", GlobalSettingsFile: "https://mysettings.com", ProjectSettingsFile: "http://myprojectsettings.com", ReturnStdout: false} | ||||
| 		dir, _ := os.Getwd() | ||||
| 		globalSettingsPath := filepath.Join(dir, ".pipeline", "mavenGlobalSettings.xml") | ||||
| 		projectSettingsPath := filepath.Join(dir, ".pipeline", "mavenProjectSettings.xml") | ||||
| 		expectedParameters := []string{ | ||||
| 			"--global-settings", ".pipeline/mavenGlobalSettings.xml", | ||||
| 			"--settings", ".pipeline/mavenProjectSettings.xml", | ||||
| 			"--global-settings", globalSettingsPath, | ||||
| 			"--settings", projectSettingsPath, | ||||
| 			"--file", "pom.xml", | ||||
| 			"-Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn", | ||||
| 			"--batch-mode"} | ||||
| @@ -139,9 +147,12 @@ func TestGetParameters(t *testing.T) { | ||||
| 		utils.AddFile(".pipeline/mavenGlobalSettings.xml", []byte("dummyContent")) | ||||
| 		utils.AddFile(".pipeline/mavenProjectSettings.xml", []byte("dummyContent")) | ||||
| 		opts := ExecuteOptions{PomPath: "pom.xml", GlobalSettingsFile: "https://mysettings.com", ProjectSettingsFile: "http://myprojectsettings.com", ReturnStdout: false} | ||||
| 		dir, _ := os.Getwd() | ||||
| 		globalSettingsPath := filepath.Join(dir, ".pipeline", "mavenGlobalSettings.xml") | ||||
| 		projectSettingsPath := filepath.Join(dir, ".pipeline", "mavenProjectSettings.xml") | ||||
| 		expectedParameters := []string{ | ||||
| 			"--global-settings", ".pipeline/mavenGlobalSettings.xml", | ||||
| 			"--settings", ".pipeline/mavenProjectSettings.xml", | ||||
| 			"--global-settings", globalSettingsPath, | ||||
| 			"--settings", projectSettingsPath, | ||||
| 			"--file", "pom.xml", | ||||
| 			"-Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn", | ||||
| 			"--batch-mode"} | ||||
| @@ -207,16 +218,17 @@ func TestMavenInstall(t *testing.T) { | ||||
|  | ||||
| 		options := EvaluateOptions{} | ||||
| 		options.ProjectSettingsFile = "settings.xml" | ||||
| 		utils.StdoutReturn = map[string]string{"mvn --settings settings.xml --file pom.xml -Dexpression=project.build.finalName -DforceStdout -q -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn --batch-mode org.apache.maven.plugins:maven-help-plugin:3.1.0:evaluate": "foo"} | ||||
| 		dir, _ := os.Getwd() | ||||
| 		projectSettingsPath := filepath.Join(dir, "settings.xml") | ||||
| 		utils.StdoutReturn = map[string]string{"mvn --settings " + projectSettingsPath + " --file pom.xml -Dexpression=project.build.finalName -DforceStdout -q -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn --batch-mode org.apache.maven.plugins:maven-help-plugin:3.1.0:evaluate": "foo"} | ||||
| 		err := doInstallMavenArtifacts(&options, &utils) | ||||
|  | ||||
| 		assert.NoError(t, err) | ||||
| 		if assert.Equal(t, 5, len(utils.Calls)) { | ||||
| 			assert.Equal(t, mock.ExecCall{Exec: "mvn", Params: []string{"--settings", "settings.xml", "-Dflatten.mode=resolveCiFriendliesOnly", "-Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn", "--batch-mode", "flatten:flatten"}}, utils.Calls[0]) | ||||
| 			assert.Equal(t, mock.ExecCall{Exec: "mvn", Params: []string{"--settings", "settings.xml", "--file", "pom.xml", "-Dexpression=project.packaging", "-DforceStdout", "-q", "-Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn", "--batch-mode", "org.apache.maven.plugins:maven-help-plugin:3.1.0:evaluate"}}, utils.Calls[1]) | ||||
| 			assert.Equal(t, mock.ExecCall{Exec: "mvn", Params: []string{"--settings", "settings.xml", "--file", "pom.xml", "-Dexpression=project.build.finalName", "-DforceStdout", "-q", "-Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn", "--batch-mode", "org.apache.maven.plugins:maven-help-plugin:3.1.0:evaluate"}}, utils.Calls[2]) | ||||
| 			assert.Equal(t, mock.ExecCall{Exec: "mvn", Params: []string{"--settings", "settings.xml", "-Dfile=" + filepath.Join(".", "target", "foo.jar"), "-Dpackaging=jar", "-DpomFile=pom.xml", "-Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn", "--batch-mode", "install:install-file"}}, utils.Calls[3]) | ||||
| 			assert.Equal(t, mock.ExecCall{Exec: "mvn", Params: []string{"--settings", "settings.xml", "-Dfile=" + filepath.Join(".", "target", "foo.war"), "-DpomFile=pom.xml", "-Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn", "--batch-mode", "install:install-file"}}, utils.Calls[4]) | ||||
| 			assert.Equal(t, mock.ExecCall{Exec: "mvn", Params: []string{"--settings", projectSettingsPath, "-Dflatten.mode=resolveCiFriendliesOnly", "-Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn", "--batch-mode", "flatten:flatten"}}, utils.Calls[0]) | ||||
| 			assert.Equal(t, mock.ExecCall{Exec: "mvn", Params: []string{"--settings", projectSettingsPath, "--file", "pom.xml", "-Dexpression=project.packaging", "-DforceStdout", "-q", "-Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn", "--batch-mode", "org.apache.maven.plugins:maven-help-plugin:3.1.0:evaluate"}}, utils.Calls[1]) | ||||
| 			assert.Equal(t, mock.ExecCall{Exec: "mvn", Params: []string{"--settings", projectSettingsPath, "--file", "pom.xml", "-Dexpression=project.build.finalName", "-DforceStdout", "-q", "-Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn", "--batch-mode", "org.apache.maven.plugins:maven-help-plugin:3.1.0:evaluate"}}, utils.Calls[2]) | ||||
| 			assert.Equal(t, mock.ExecCall{Exec: "mvn", Params: []string{"--settings", projectSettingsPath, "-Dfile=" + filepath.Join(".", "target", "foo.jar"), "-Dpackaging=jar", "-DpomFile=pom.xml", "-Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn", "--batch-mode", "install:install-file"}}, utils.Calls[3]) | ||||
| 			assert.Equal(t, mock.ExecCall{Exec: "mvn", Params: []string{"--settings", projectSettingsPath, "-Dfile=" + filepath.Join(".", "target", "foo.war"), "-DpomFile=pom.xml", "-Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn", "--batch-mode", "install:install-file"}}, utils.Calls[4]) | ||||
| 		} | ||||
| 	}) | ||||
|  | ||||
|   | ||||
| @@ -5,6 +5,7 @@ import ( | ||||
| 	"fmt" | ||||
| 	"net/http" | ||||
| 	"os" | ||||
| 	"path" | ||||
| 	"path/filepath" | ||||
| 	"strings" | ||||
|  | ||||
| @@ -28,7 +29,7 @@ type SettingsDownloadUtils interface { | ||||
| func DownloadAndGetMavenParameters(globalSettingsFile string, projectSettingsFile string, utils SettingsDownloadUtils) ([]string, error) { | ||||
| 	mavenArgs := []string{} | ||||
| 	if len(globalSettingsFile) > 0 { | ||||
| 		globalSettingsFileName, err := downloadSettingsIfURL(globalSettingsFile, ".pipeline/mavenGlobalSettings.xml", utils, false) | ||||
| 		globalSettingsFileName, err := getSettingsFilePath(globalSettingsFile, ".pipeline/mavenGlobalSettings.xml", utils, false) | ||||
| 		if err != nil { | ||||
| 			return nil, err | ||||
| 		} | ||||
| @@ -39,7 +40,7 @@ func DownloadAndGetMavenParameters(globalSettingsFile string, projectSettingsFil | ||||
| 	} | ||||
|  | ||||
| 	if len(projectSettingsFile) > 0 { | ||||
| 		projectSettingsFileName, err := downloadSettingsIfURL(projectSettingsFile, ".pipeline/mavenProjectSettings.xml", utils, false) | ||||
| 		projectSettingsFileName, err := getSettingsFilePath(projectSettingsFile, ".pipeline/mavenProjectSettings.xml", utils, false) | ||||
| 		if err != nil { | ||||
| 			return nil, err | ||||
| 		} | ||||
| @@ -276,8 +277,9 @@ func downloadAndCopySettingsFile(src string, dest string, utils SettingsDownload | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| func downloadSettingsIfURL(settingsFileOption, settingsFile string, utils SettingsDownloadUtils, overwrite bool) (string, error) { | ||||
| func getSettingsFilePath(settingsFileOption, settingsFile string, utils SettingsDownloadUtils, overwrite bool) (string, error) { | ||||
| 	result := settingsFileOption | ||||
| 	var absoluteFilePath string | ||||
| 	if strings.HasPrefix(settingsFileOption, "http:") || strings.HasPrefix(settingsFileOption, "https:") { | ||||
| 		err := downloadSettingsFromURL(settingsFileOption, settingsFile, utils, overwrite) | ||||
| 		if err != nil { | ||||
| @@ -285,7 +287,17 @@ func downloadSettingsIfURL(settingsFileOption, settingsFile string, utils Settin | ||||
| 		} | ||||
| 		result = settingsFile | ||||
| 	} | ||||
| 	return result, nil | ||||
| 	//Added support for sub-mobules in maven build by providing absolute path | ||||
| 	if filepath.IsAbs(result) { | ||||
| 		absoluteFilePath = result | ||||
| 	} else { | ||||
| 		dir, err := os.Getwd() | ||||
| 		if err != nil { | ||||
| 			return "", fmt.Errorf("failed to get current working directory: %w", err) | ||||
| 		} | ||||
| 		absoluteFilePath = path.Join(dir, result) | ||||
| 	} | ||||
| 	return absoluteFilePath, nil | ||||
| } | ||||
|  | ||||
| func downloadSettingsFromURL(url, filename string, utils SettingsDownloadUtils, overwrite bool) error { | ||||
|   | ||||
| @@ -5,6 +5,8 @@ package whitesource | ||||
|  | ||||
| import ( | ||||
| 	"fmt" | ||||
| 	"os" | ||||
| 	"path/filepath" | ||||
| 	"testing" | ||||
|  | ||||
| 	"github.com/stretchr/testify/assert" | ||||
| @@ -231,7 +233,10 @@ func TestAddBuildToolDefaults(t *testing.T) { | ||||
| 		} | ||||
| 		utilsMock.AddFile("unit-tests/pom.xml", []byte("dummy")) | ||||
| 		testConfig.addBuildToolDefaults(&whitesourceConfig, utilsMock) | ||||
| 		assert.Contains(t, testConfig, ConfigOption{Name: "maven.additionalArguments", Value: "--global-settings global-settings.xml --settings project-settings.xml --projects !unit-tests", Append: true}) | ||||
| 		dir, _ := os.Getwd() | ||||
| 		globalSettingsPath := filepath.Join(dir, "global-settings.xml") | ||||
| 		projectSettingsPath := filepath.Join(dir, "project-settings.xml") | ||||
| 		assert.Contains(t, testConfig, ConfigOption{Name: "maven.additionalArguments", Value: "--global-settings " + globalSettingsPath + " --settings " + projectSettingsPath + " --projects !unit-tests", Append: true}) | ||||
| 	}) | ||||
|  | ||||
| 	t.Run("Docker - default", func(t *testing.T) { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user