Add support for Maven's finalName

See gh-1052
This commit is contained in:
Joachim Pasquali
2019-11-22 16:47:02 -05:00
committed by Stephane Nicoll
parent 335cd87e7e
commit 0f7196ae02
3 changed files with 34 additions and 1 deletions

View File

@@ -51,6 +51,8 @@ public class MavenBuildSettings extends BuildSettings {
private final String testSourceDirectory;
private final String finalName;
protected MavenBuildSettings(Builder builder) {
super(builder);
this.parent = builder.parent;
@@ -62,6 +64,7 @@ public class MavenBuildSettings extends BuildSettings {
this.scm = builder.scm.build();
this.sourceDirectory = builder.sourceDirectory;
this.testSourceDirectory = builder.testSourceDirectory;
this.finalName = builder.finalName;
}
/**
@@ -140,6 +143,14 @@ public class MavenBuildSettings extends BuildSettings {
return this.testSourceDirectory;
}
/**
* Return the final name of the compiled artifact.
* @return the final name
*/
public String getFinalName() {
return this.finalName;
}
/**
* Builder for a Maven dependency.
*
@@ -165,6 +176,8 @@ public class MavenBuildSettings extends BuildSettings {
private String testSourceDirectory;
private String finalName;
public Builder() {
}
@@ -275,6 +288,16 @@ public class MavenBuildSettings extends BuildSettings {
return self();
}
/**
* Set the finalName of the artifact as a child tag in the <build> tag.
* @param finalName the final name of the artifact after compiling
* @return this for method chaining
*/
public Builder finalName(String finalName) {
this.finalName = finalName;
return self();
}
@Override
public MavenBuildSettings build() {
return new MavenBuildSettings(this);

View File

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

View File

@@ -685,6 +685,14 @@ class MavenBuildWriterTests {
});
}
@Test
void pomWithFinalName() {
MavenBuild build = new MavenBuild();
build.settings().coordinates("com.example.demo", "demo").finalName("theArtifact.jar");
generatePom(build,
(pom) -> assertThat(pom).textAtPath("/project/build/finalName").isEqualTo("theArtifact.jar"));
}
@Test
void pomWithCustomVersion() {
MavenBuild build = new MavenBuild();