diff --git a/util/maven/project.go b/util/maven/project.go index bdb91a31..1f0dca0c 100644 --- a/util/maven/project.go +++ b/util/maven/project.go @@ -62,6 +62,7 @@ type Project struct { Licenses []License `xml:"licenses>license,omitempty"` Developers []Developer `xml:"developers>developer,omitempty"` + Modules []String `xml:"modules>module,omitempty"` SCM SCM `xml:"scm,omitempty"` IssueManagement IssueManagement `xml:"issueManagement,omitempty"` DistributionManagement DistributionManagement `xml:"distributionManagement,omitempty"` @@ -304,6 +305,14 @@ func (p *Project) Interpolate() error { } p.Repositories = repos + var modules []String + for _, m := range p.Modules { + if ok := m.interpolate(properties); ok { + modules = append(modules, m) + } + } + p.Modules = modules + return nil } diff --git a/util/maven/project_test.go b/util/maven/project_test.go index 995ac395..195bbc77 100644 --- a/util/maven/project_test.go +++ b/util/maven/project_test.go @@ -210,6 +210,27 @@ func TestProject(t *testing.T) { if diff := cmp.Diff(got, want); diff != "" { t.Errorf("unmarshal input:\n(- got, + want):\n%s", diff) } + + inputAggregator, err := os.ReadFile("testdata/aggregator-1.0.0.xml") + if err != nil { + t.Fatalf("failed to read file: %v", err) + } + wantAggregator := Project{ + ProjectKey: ProjectKey{ + GroupID: "com.example", + ArtifactID: "aggregator", + Version: "1.0.0", + }, + Packaging: "pom", + Modules: []String{"module-1", "module-2"}, + } + var gotAggregator Project + if err := xml.Unmarshal(inputAggregator, &gotAggregator); err != nil { + t.Fatalf("failed to unmarshal input: %v", err) + } + if diff := cmp.Diff(gotAggregator, wantAggregator); diff != "" { + t.Errorf("unmarshal aggregator input:\n(- got, + want):\n%s", diff) + } } func TestMergeParent(t *testing.T) { diff --git a/util/maven/testdata/aggregator-1.0.0.xml b/util/maven/testdata/aggregator-1.0.0.xml new file mode 100644 index 00000000..9cc05592 --- /dev/null +++ b/util/maven/testdata/aggregator-1.0.0.xml @@ -0,0 +1,10 @@ + + com.example + aggregator + 1.0.0 + pom + + module-1 + module-2 + +