Add support for Maven defaultGoal

See gh-1134
This commit is contained in:
Miguel Ortega
2020-10-07 22:31:10 +02:00
committed by Stephane Nicoll
parent 314586de6a
commit db0b33df42
4 changed files with 48 additions and 2 deletions

View File

@@ -53,6 +53,8 @@ public class MavenBuildSettings extends BuildSettings {
private final String testSourceDirectory; private final String testSourceDirectory;
private final String defaultGoal;
protected MavenBuildSettings(Builder builder) { protected MavenBuildSettings(Builder builder) {
super(builder); super(builder);
this.parent = builder.parent; this.parent = builder.parent;
@@ -65,6 +67,7 @@ public class MavenBuildSettings extends BuildSettings {
this.finalName = builder.finalName; this.finalName = builder.finalName;
this.sourceDirectory = builder.sourceDirectory; this.sourceDirectory = builder.sourceDirectory;
this.testSourceDirectory = builder.testSourceDirectory; this.testSourceDirectory = builder.testSourceDirectory;
this.defaultGoal = builder.defaultGoal;
} }
/** /**
@@ -151,6 +154,14 @@ public class MavenBuildSettings extends BuildSettings {
return this.testSourceDirectory; return this.testSourceDirectory;
} }
/**
* Return the default goal to execute when none is specified for the project.
* @return the default goal or {@code null} to use the default
*/
public String getDefaultGoal() {
return this.defaultGoal;
}
/** /**
* Builder for a Maven dependency. * Builder for a Maven dependency.
* *
@@ -178,6 +189,8 @@ public class MavenBuildSettings extends BuildSettings {
private String testSourceDirectory; private String testSourceDirectory;
private String defaultGoal;
public Builder() { public Builder() {
} }
@@ -298,6 +311,16 @@ public class MavenBuildSettings extends BuildSettings {
return self(); return self();
} }
/**
* Set the default goal to execute when none is specified for the project.
* @param defaultGoal the default goal or {@code null} to use the default
* @return this for method chaining
*/
public Builder defaultGoal(String defaultGoal) {
this.defaultGoal = defaultGoal;
return self();
}
@Override @Override
public MavenBuildSettings build() { public MavenBuildSettings build() {
return new MavenBuildSettings(this); return new MavenBuildSettings(this);

View File

@@ -305,12 +305,13 @@ public class MavenBuildWriter {
private void writeBuild(IndentingWriter writer, MavenBuild build) { private void writeBuild(IndentingWriter writer, MavenBuild build) {
MavenBuildSettings settings = build.getSettings(); MavenBuildSettings settings = build.getSettings();
if (settings.getFinalName() == null && settings.getSourceDirectory() == null if (settings.getFinalName() == null && settings.getSourceDirectory() == null
&& settings.getTestSourceDirectory() == null && build.resources().isEmpty() && settings.getTestSourceDirectory() == null && settings.getDefaultGoal() == null
&& build.testResources().isEmpty() && build.plugins().isEmpty()) { && build.resources().isEmpty() && build.testResources().isEmpty() && build.plugins().isEmpty()) {
return; return;
} }
writer.println(); writer.println();
writeElement(writer, "build", () -> { writeElement(writer, "build", () -> {
writeSingleElement(writer, "defaultGoal", settings.getDefaultGoal());
writeSingleElement(writer, "finalName", settings.getFinalName()); writeSingleElement(writer, "finalName", settings.getFinalName());
writeSingleElement(writer, "sourceDirectory", settings.getSourceDirectory()); writeSingleElement(writer, "sourceDirectory", settings.getSourceDirectory());
writeSingleElement(writer, "testSourceDirectory", settings.getTestSourceDirectory()); writeSingleElement(writer, "testSourceDirectory", settings.getTestSourceDirectory());

View File

@@ -139,4 +139,11 @@ class MavenBuildTests {
.hasOnlyOneElementSatisfying((testPlugin) -> assertThat(testPlugin.isExtensions()).isTrue()); .hasOnlyOneElementSatisfying((testPlugin) -> assertThat(testPlugin.isExtensions()).isTrue());
} }
@Test
void mavenDefaultGoalCanBeCustomized() {
MavenBuild build = new MavenBuild();
build.settings().defaultGoal("clean package");
assertThat(build.getSettings().getDefaultGoal()).isEqualTo("clean package");
}
} }

View File

@@ -802,6 +802,21 @@ class MavenBuildWriterTests {
}); });
} }
@Test
void pomWithNoDefaultGoal() {
MavenBuild build = new MavenBuild();
build.settings().coordinates("com.example.demo", "demo").build();
generatePom(build, (pom) -> assertThat(pom.nodeAtPath("/project/build/defaultGoal")).isNull());
}
@Test
void pomWithDefaultGoal() {
MavenBuild build = new MavenBuild();
build.settings().coordinates("com.example.demo", "demo").defaultGoal("clean package");
generatePom(build,
(pom) -> assertThat(pom).textAtPath("/project/build/defaultGoal").isEqualTo("clean package"));
}
private void generatePom(MavenBuild mavenBuild, Consumer<NodeAssert> consumer) { private void generatePom(MavenBuild mavenBuild, Consumer<NodeAssert> consumer) {
MavenBuildWriter writer = new MavenBuildWriter(); MavenBuildWriter writer = new MavenBuildWriter();
StringWriter out = new StringWriter(); StringWriter out = new StringWriter();