Skip to content

Commit

Permalink
Allow searching for the .mvn dir recursively by other modules that us…
Browse files Browse the repository at this point in the history
…e this module (#279)
  • Loading branch information
galusben authored Oct 6, 2024
1 parent 7bd47c2 commit bec6e4e
Show file tree
Hide file tree
Showing 2 changed files with 41 additions and 1 deletion.
10 changes: 9 additions & 1 deletion build/maven.go
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,8 @@ type MavenModule struct {
outputWriter io.Writer
// Path to the build info temp file that will be generated by the maven extractor.
buildInfoPath string
// Path to the root project directory in maven multi-module project. May contain .mvn directory.
rootProjectDir string
}

// Maven extractor is the engine for calculating the project dependencies.
Expand Down Expand Up @@ -161,6 +163,7 @@ func (mm *MavenModule) createMvnRunConfig() (*mvnRunConfig, error) {
buildInfoProperties: extractorProps,
mavenOpts: mm.extractorDetails.mavenOpts,
logger: mm.containingBuild.logger,
rootProjectDir: mm.rootProjectDir,
}, nil
}

Expand Down Expand Up @@ -288,6 +291,10 @@ func (mm *MavenModule) extractMavenPath(mavenVersionOutput bytes.Buffer) (mavenH
return
}

func (mm *MavenModule) SetRootProjectDir(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)
Expand All @@ -313,7 +320,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...)
}
Expand All @@ -334,6 +341,7 @@ type mvnRunConfig struct {
mavenOpts []string
logger utils.Log
outputWriter io.Writer
rootProjectDir string
}

func (config *mvnRunConfig) SetOutputWriter(outputWriter io.Writer) *mvnRunConfig {
Expand Down
32 changes: 32 additions & 0 deletions build/maven_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -180,3 +180,35 @@ func TestAddColorToCmdOutput(t *testing.T) {
})
}
}

func TestCommandWithRootProjectDir(t *testing.T) {
mvnc := &mvnRunConfig{
java: "myJava",
plexusClassworlds: "myPlexus",
cleassworldsConfig: "myCleassworldsConfig",
mavenHome: "myMavenHome",
pluginDependencies: "myPluginDependencies",
workspace: "myWorkspace",
goals: []string{"myGoal1", "myGoal2"},
buildInfoProperties: "myBuildInfoProperties",
mavenOpts: []string{"myMavenOpt1", "myMavenOpt2"},
logger: nil,
outputWriter: nil,
rootProjectDir: "myRootProjectDir",
}
cmd := mvnc.GetCmd()
assert.Equal(t, "myJava", cmd.Args[0])
assert.Equal(t, "-classpath", cmd.Args[1])
assert.Equal(t, "myPlexus", cmd.Args[2])
assert.Contains(t, cmd.Args, "-DbuildInfoConfig.propertiesFile=myBuildInfoProperties")
assert.Contains(t, cmd.Args, "-Dclassworlds.conf=myCleassworldsConfig")
assert.Contains(t, cmd.Args, "-Dclassworlds.conf=myCleassworldsConfig")
assert.Contains(t, cmd.Args, "-Dmaven.home=myMavenHome")
assert.Contains(t, cmd.Args, "-Dm3plugin.lib=myPluginDependencies")
assert.Contains(t, cmd.Args, "myGoal1")
assert.Contains(t, cmd.Args, "myGoal2")
assert.Contains(t, cmd.Args, "-DbuildInfoConfig.propertiesFile=myBuildInfoProperties")
assert.Contains(t, cmd.Args, "myMavenOpt1")
assert.Contains(t, cmd.Args, "myMavenOpt2")
assert.Contains(t, cmd.Args, "-Dmaven.multiModuleProjectDirectory=myRootProjectDir")
}

0 comments on commit bec6e4e

Please sign in to comment.