Use project location to infer the artifactId
On start.spring.io, if you customize the artifactId it creates a zip file with the same name. The `spring init` command did not have a similar shortcut. This commit updates the request to customize the artifactId if none is set and a custom location was specified. Just as we check for the presence of a dot to figure out if we have to extract the archive or not, we check for it to generate an artifactId without an extension. In practice, `spring init foo` creates a foo directory with a project whose artifactId is `foo` and `spring init foo.zip` stores a foo.zip file with the same project (i.e. the artifactId is `foo`). Closes gh-3714
This commit is contained in:
parent
58d0776abe
commit
73ee6652fd
|
@ -324,8 +324,9 @@ class ProjectGenerationRequest {
|
|||
if (this.groupId != null) {
|
||||
builder.setParameter("groupId", this.groupId);
|
||||
}
|
||||
if (this.artifactId != null) {
|
||||
builder.setParameter("artifactId", this.artifactId);
|
||||
String resolvedArtifactId = resolveArtifactId();
|
||||
if (resolvedArtifactId != null) {
|
||||
builder.setParameter("artifactId", resolvedArtifactId);
|
||||
}
|
||||
if (this.version != null) {
|
||||
builder.setParameter("version", this.version);
|
||||
|
@ -405,6 +406,21 @@ class ProjectGenerationRequest {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Resolve the artifactId to use or {@code null} if it should not be customized.
|
||||
* @return the artifactId
|
||||
*/
|
||||
protected String resolveArtifactId() {
|
||||
if (this.artifactId != null) {
|
||||
return this.artifactId;
|
||||
}
|
||||
if (this.output != null) {
|
||||
int i = this.output.lastIndexOf('.');
|
||||
return (i == -1 ? this.output : this.output.substring(0, i));
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private static void filter(Map<String, ProjectType> projects, String tag,
|
||||
String tagValue) {
|
||||
for (Iterator<Map.Entry<String, ProjectType>> it = projects.entrySet().iterator(); it
|
||||
|
|
|
@ -139,6 +139,39 @@ public class ProjectGenerationRequestTests {
|
|||
this.request.generateUrl(createDefaultMetadata()));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void outputCustomizeArtifactId() {
|
||||
this.request.setOutput("my-project");
|
||||
assertEquals(
|
||||
createDefaultUrl("?artifactId=my-project&type=test-type"),
|
||||
this.request.generateUrl(createDefaultMetadata()));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void outputArchiveCustomizeArtifactId() {
|
||||
this.request.setOutput("my-project.zip");
|
||||
assertEquals(
|
||||
createDefaultUrl("?artifactId=my-project&type=test-type"),
|
||||
this.request.generateUrl(createDefaultMetadata()));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void outputArchiveWithDotsCustomizeArtifactId() {
|
||||
this.request.setOutput("my.nice.project.zip");
|
||||
assertEquals(
|
||||
createDefaultUrl("?artifactId=my.nice.project&type=test-type"),
|
||||
this.request.generateUrl(createDefaultMetadata()));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void outputDoesNotOverrideCustomArtifactId() {
|
||||
this.request.setOutput("my-project");
|
||||
this.request.setArtifactId("my-id");
|
||||
assertEquals(
|
||||
createDefaultUrl("?artifactId=my-id&type=test-type"),
|
||||
this.request.generateUrl(createDefaultMetadata()));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void buildNoMatch() {
|
||||
InitializrServiceMetadata metadata = readMetadata();
|
||||
|
|
Loading…
Reference in New Issue