mirror of
https://gitee.com/dcren/initializr.git
synced 2026-09-19 14:27:41 +08:00
Improve imports and annotations model
This commit is contained in:
+104
-26
@@ -414,9 +414,7 @@ public class ProjectGenerator {
|
|||||||
}
|
}
|
||||||
|
|
||||||
model.put("isRelease", request.getBootVersion().contains("RELEASE"));
|
model.put("isRelease", request.getBootVersion().contains("RELEASE"));
|
||||||
// @SpringBootApplication available as from 1.2.0.RC1
|
setupApplicationModel(request, model);
|
||||||
model.put("useSpringBootApplication", VERSION_1_2_0_RC1
|
|
||||||
.compareTo(Version.safeParse(request.getBootVersion())) <= 0);
|
|
||||||
|
|
||||||
// Gradle plugin has changed as from 1.3.0
|
// Gradle plugin has changed as from 1.3.0
|
||||||
model.put("bootOneThreeAvailable", VERSION_1_3_0_M1
|
model.put("bootOneThreeAvailable", VERSION_1_3_0_M1
|
||||||
@@ -483,34 +481,48 @@ public class ProjectGenerator {
|
|||||||
return property.toStandardFormat();
|
return property.toStandardFormat();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void setupTestModel(ProjectRequest request, Map<String, Object> model) {
|
protected void setupApplicationModel(ProjectRequest request,
|
||||||
String imports = "";
|
Map<String, Object> model) {
|
||||||
String testAnnotations = "";
|
Imports imports = new Imports(request.getLanguage());
|
||||||
boolean newTestInfrastructure = isNewTestInfrastructureAvailable(request);
|
Annotations annotations = new Annotations();
|
||||||
if (newTestInfrastructure) {
|
boolean useSpringBootApplication = VERSION_1_2_0_RC1
|
||||||
imports += String.format(
|
.compareTo(Version.safeParse(request.getBootVersion())) <= 0;
|
||||||
generateImport("org.springframework.boot.test.context.SpringBootTest",
|
if (useSpringBootApplication) {
|
||||||
request.getLanguage()) + "%n");
|
imports.add("org.springframework.boot.autoconfigure.SpringBootApplication");
|
||||||
imports += String.format(
|
annotations.add("@SpringBootApplication");
|
||||||
generateImport("org.springframework.test.context.junit4.SpringRunner",
|
|
||||||
request.getLanguage()) + "%n");
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
imports += String.format(generateImport(
|
imports.add("org.springframework.boot.autoconfigure.EnableAutoConfiguration")
|
||||||
"org.springframework.boot.test.SpringApplicationConfiguration",
|
.add("org.springframework.context.annotation.ComponentScan")
|
||||||
request.getLanguage()) + "%n");
|
.add("org.springframework.context.annotation.Configuration");
|
||||||
imports += String.format(generateImport(
|
annotations.add("@EnableAutoConfiguration")
|
||||||
"org.springframework.test.context.junit4.SpringJUnit4ClassRunner",
|
.add("@ComponentScan")
|
||||||
request.getLanguage()) + "%n");
|
.add("@Configuration");
|
||||||
|
}
|
||||||
|
model.put("applicationImports", imports.toString());
|
||||||
|
model.put("applicationAnnotations", annotations.toString());
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void setupTestModel(ProjectRequest request, Map<String, Object> model) {
|
||||||
|
Imports imports = new Imports(request.getLanguage());
|
||||||
|
Annotations testAnnotations = new Annotations();
|
||||||
|
boolean newTestInfrastructure = isNewTestInfrastructureAvailable(request);
|
||||||
|
if (newTestInfrastructure) {
|
||||||
|
imports.add("org.springframework.boot.test.context.SpringBootTest")
|
||||||
|
.add("org.springframework.test.context.junit4.SpringRunner");
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
imports.add("org.springframework.boot.test.SpringApplicationConfiguration")
|
||||||
|
.add("org.springframework.test.context.junit4.SpringJUnit4ClassRunner");
|
||||||
}
|
}
|
||||||
if (request.hasWebFacet() && !newTestInfrastructure) {
|
if (request.hasWebFacet() && !newTestInfrastructure) {
|
||||||
imports += String.format(generateImport(
|
imports.add("org.springframework.test.context.web.WebAppConfiguration");
|
||||||
"org.springframework.test.context.web.WebAppConfiguration",
|
testAnnotations.add("@WebAppConfiguration");
|
||||||
request.getLanguage()) + "%n");
|
|
||||||
testAnnotations = String.format("@WebAppConfiguration%n");
|
|
||||||
}
|
}
|
||||||
model.put("testImports", imports);
|
model.put("testImports", imports.withFinalCarriageReturn().toString());
|
||||||
model.put("testAnnotations", testAnnotations);
|
model.put("testAnnotations", testAnnotations.withFinalCarriageReturn().toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
protected String getServletInitializrClass(ProjectRequest request) {
|
protected String getServletInitializrClass(ProjectRequest request) {
|
||||||
@@ -526,11 +538,17 @@ public class ProjectGenerator {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected String addImport(String type, String language) {
|
||||||
|
return String.format("%s%n", generateImport(type, language));
|
||||||
|
}
|
||||||
|
|
||||||
protected String generateImport(String type, String language) {
|
protected String generateImport(String type, String language) {
|
||||||
String end = ("groovy".equals(language) || "kotlin".equals(language)) ? "" : ";";
|
String end = ("groovy".equals(language) || "kotlin".equals(language)) ? "" : ";";
|
||||||
return "import " + type + end;
|
return "import " + type + end;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private static boolean isGradleBuild(ProjectRequest request) {
|
private static boolean isGradleBuild(ProjectRequest request) {
|
||||||
return "gradle".equals(request.getBuild());
|
return "gradle".equals(request.getBuild());
|
||||||
}
|
}
|
||||||
@@ -661,4 +679,64 @@ public class ProjectGenerator {
|
|||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static class Imports {
|
||||||
|
|
||||||
|
private final List<String> statements = new ArrayList<>();
|
||||||
|
private final String language;
|
||||||
|
private boolean finalCarriageReturn;
|
||||||
|
|
||||||
|
public Imports(String language) {
|
||||||
|
this.language = language;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Imports add(String type) {
|
||||||
|
this.statements.add(generateImport(type, language));
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Imports withFinalCarriageReturn() {
|
||||||
|
this.finalCarriageReturn = true;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
private String generateImport(String type, String language) {
|
||||||
|
String end = ("groovy".equals(language) || "kotlin".equals(language)) ? "" : ";";
|
||||||
|
return "import " + type + end;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String toString() {
|
||||||
|
if (this.statements.isEmpty()) {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
String content = String.join(String.format("%n"), this.statements);
|
||||||
|
return (finalCarriageReturn ? String.format("%s%n", content) : content);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private static class Annotations {
|
||||||
|
|
||||||
|
private final List<String> statements = new ArrayList<>();
|
||||||
|
private boolean finalCarriageReturn;
|
||||||
|
|
||||||
|
public Annotations add(String type) {
|
||||||
|
this.statements.add(type);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Annotations withFinalCarriageReturn() {
|
||||||
|
this.finalCarriageReturn = true;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String toString() {
|
||||||
|
if (this.statements.isEmpty()) {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
String content = String.join(String.format("%n"), this.statements);
|
||||||
|
return (finalCarriageReturn ? String.format("%s%n", content) : content);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,23 +1,9 @@
|
|||||||
package {{packageName}}
|
package {{packageName}}
|
||||||
|
|
||||||
import org.springframework.boot.SpringApplication
|
import org.springframework.boot.SpringApplication
|
||||||
{{#useSpringBootApplication}}
|
{{applicationImports}}
|
||||||
import org.springframework.boot.autoconfigure.SpringBootApplication
|
|
||||||
{{/useSpringBootApplication}}
|
|
||||||
{{^useSpringBootApplication}}
|
|
||||||
import org.springframework.boot.autoconfigure.EnableAutoConfiguration
|
|
||||||
import org.springframework.context.annotation.ComponentScan
|
|
||||||
import org.springframework.context.annotation.Configuration
|
|
||||||
{{/useSpringBootApplication}}
|
|
||||||
|
|
||||||
{{#useSpringBootApplication}}
|
{{applicationAnnotations}}
|
||||||
@SpringBootApplication
|
|
||||||
{{/useSpringBootApplication}}
|
|
||||||
{{^useSpringBootApplication}}
|
|
||||||
@Configuration
|
|
||||||
@ComponentScan
|
|
||||||
@EnableAutoConfiguration
|
|
||||||
{{/useSpringBootApplication}}
|
|
||||||
class {{applicationName}} {
|
class {{applicationName}} {
|
||||||
|
|
||||||
static void main(String[] args) {
|
static void main(String[] args) {
|
||||||
|
|||||||
@@ -1,23 +1,9 @@
|
|||||||
package {{packageName}};
|
package {{packageName}};
|
||||||
|
|
||||||
import org.springframework.boot.SpringApplication;
|
import org.springframework.boot.SpringApplication;
|
||||||
{{#useSpringBootApplication}}
|
{{applicationImports}}
|
||||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
|
||||||
{{/useSpringBootApplication}}
|
|
||||||
{{^useSpringBootApplication}}
|
|
||||||
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
|
|
||||||
import org.springframework.context.annotation.ComponentScan;
|
|
||||||
import org.springframework.context.annotation.Configuration;
|
|
||||||
{{/useSpringBootApplication}}
|
|
||||||
|
|
||||||
{{#useSpringBootApplication}}
|
{{applicationAnnotations}}
|
||||||
@SpringBootApplication
|
|
||||||
{{/useSpringBootApplication}}
|
|
||||||
{{^useSpringBootApplication}}
|
|
||||||
@Configuration
|
|
||||||
@ComponentScan
|
|
||||||
@EnableAutoConfiguration
|
|
||||||
{{/useSpringBootApplication}}
|
|
||||||
public class {{applicationName}} {
|
public class {{applicationName}} {
|
||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
|
|||||||
@@ -1,23 +1,9 @@
|
|||||||
package {{packageName}}
|
package {{packageName}}
|
||||||
|
|
||||||
import org.springframework.boot.SpringApplication
|
import org.springframework.boot.SpringApplication
|
||||||
{{#useSpringBootApplication}}
|
{{applicationImports}}
|
||||||
import org.springframework.boot.autoconfigure.SpringBootApplication
|
|
||||||
{{/useSpringBootApplication}}
|
|
||||||
{{^useSpringBootApplication}}
|
|
||||||
import org.springframework.boot.autoconfigure.EnableAutoConfiguration
|
|
||||||
import org.springframework.context.annotation.ComponentScan
|
|
||||||
import org.springframework.context.annotation.Configuration
|
|
||||||
{{/useSpringBootApplication}}
|
|
||||||
|
|
||||||
{{#useSpringBootApplication}}
|
{{applicationAnnotations}}
|
||||||
@SpringBootApplication
|
|
||||||
{{/useSpringBootApplication}}
|
|
||||||
{{^useSpringBootApplication}}
|
|
||||||
@Configuration
|
|
||||||
@ComponentScan
|
|
||||||
@EnableAutoConfiguration
|
|
||||||
{{/useSpringBootApplication}}
|
|
||||||
class {{applicationName}}
|
class {{applicationName}}
|
||||||
|
|
||||||
fun main(args: Array<String>) {
|
fun main(args: Array<String>) {
|
||||||
|
|||||||
Reference in New Issue
Block a user