diff --git a/build/maven.go b/build/maven.go index 970c1394..5cff00bd 100644 --- a/build/maven.go +++ b/build/maven.go @@ -45,7 +45,8 @@ type MavenModule struct { // A pipe to write the maven extractor output to. outputWriter io.Writer // Path to the build info temp file that will be generated by the maven extractor. - buildInfoPath string + buildInfoPath string + rootProjectDir string } // Maven extractor is the engine for calculating the project dependencies. @@ -161,6 +162,7 @@ func (mm *MavenModule) createMvnRunConfig() (*mvnRunConfig, error) { buildInfoProperties: extractorProps, mavenOpts: mm.extractorDetails.mavenOpts, logger: mm.containingBuild.logger, + rootProjectDir: mm.rootProjectDir, }, nil } @@ -288,6 +290,10 @@ func (mm *MavenModule) extractMavenPath(mavenVersionOutput bytes.Buffer) (mavenH return } +func (mm *MavenModule) SetMavenRootDir(rootDir string) { + mm.rootProjectDir = rootDir +} + func downloadMavenExtractor(downloadTo string, downloadExtractorFunc func(downloadTo, downloadPath string) error, logger utils.Log) error { filename := fmt.Sprintf(MavenExtractorFileName, MavenExtractorDependencyVersion) filePath := fmt.Sprintf(MavenExtractorRemotePath, MavenExtractorDependencyVersion) @@ -313,7 +319,7 @@ func (config *mvnRunConfig) GetCmd() *exec.Cmd { cmd = append(cmd, "-DbuildInfoConfig.propertiesFile="+config.buildInfoProperties) cmd = append(cmd, "-Dm3plugin.lib="+config.pluginDependencies) cmd = append(cmd, "-Dclassworlds.conf="+config.cleassworldsConfig) - cmd = append(cmd, "-Dmaven.multiModuleProjectDirectory="+config.workspace) + cmd = append(cmd, "-Dmaven.multiModuleProjectDirectory="+config.rootProjectDir) if config.mavenOpts != nil { cmd = append(cmd, config.mavenOpts...) } @@ -334,6 +340,7 @@ type mvnRunConfig struct { mavenOpts []string logger utils.Log outputWriter io.Writer + rootProjectDir string } func (config *mvnRunConfig) SetOutputWriter(outputWriter io.Writer) *mvnRunConfig { diff --git a/build/maven_test.go b/build/maven_test.go index a6cb8f60..46b36f06 100644 --- a/build/maven_test.go +++ b/build/maven_test.go @@ -180,3 +180,22 @@ func TestAddColorToCmdOutput(t *testing.T) { }) } } + +func TestCommandWithRootProjectDir(t *testing.T) { + mvnc := &mvnRunConfig{ + java: "java", + plexusClassworlds: "plexus", + cleassworldsConfig: "", + mavenHome: "", + pluginDependencies: "", + workspace: "", + goals: nil, + buildInfoProperties: "", + mavenOpts: nil, + logger: nil, + outputWriter: nil, + rootProjectDir: "root", + } + cmd := mvnc.GetCmd() + assert.Equal(t, "-Dmaven.multiModuleProjectDirectory=root", cmd.Args[7]) +}