Merge pull request #1134 from mikomatic

* pr/1134:
  Polish "Add support for Maven defaultGoal"
  Add support for Maven defaultGoal

Closes gh-1134
This commit is contained in:
Stephane Nicoll
2020-10-09 09:27:29 +02:00
3 changed files with 42 additions and 3 deletions

View File

@@ -47,6 +47,8 @@ public class MavenBuildSettings extends BuildSettings {
private final MavenScm scm;
private final String defaultGoal;
private final String finalName;
private final String sourceDirectory;
@@ -62,6 +64,7 @@ public class MavenBuildSettings extends BuildSettings {
this.licenses = Collections.unmodifiableList(new ArrayList<>(builder.licenses));
this.developers = Collections.unmodifiableList(new ArrayList<>(builder.developers));
this.scm = builder.scm.build();
this.defaultGoal = builder.defaultGoal;
this.finalName = builder.finalName;
this.sourceDirectory = builder.sourceDirectory;
this.testSourceDirectory = builder.testSourceDirectory;
@@ -125,6 +128,14 @@ public class MavenBuildSettings extends BuildSettings {
return this.scm;
}
/**
* Return the default goal or phase to execute if none is given.
* @return the default goal or {@code null} to use the default
*/
public String getDefaultGoal() {
return this.defaultGoal;
}
/**
* Return the final name of the artifact.
* @return the final name or {@code null} to use the default
@@ -172,6 +183,8 @@ public class MavenBuildSettings extends BuildSettings {
private final MavenScm.Builder scm = new MavenScm.Builder();
private String defaultGoal;
private String finalName;
private String sourceDirectory;
@@ -274,6 +287,16 @@ public class MavenBuildSettings extends BuildSettings {
return self();
}
/**
* Set the default goal or phase to execute if none is given.
* @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();
}
/**
* Set the the location of main source code. Can use Maven properties such as
* {@code ${basedir}}.

View File

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

View File

@@ -672,6 +672,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"));
}
@Test
void pomWithNoFinalName() {
MavenBuild build = new MavenBuild();