mirror of
https://gitee.com/dcren/initializr.git
synced 2025-09-18 17:48:14 +08:00
Honour custom application name in Kotlin main class
Closes gh-826
This commit is contained in:
@@ -82,14 +82,16 @@ class KotlinProjectGenerationDefaultContributorsConfiguration {
|
||||
}
|
||||
|
||||
@Bean
|
||||
public MainCompilationUnitCustomizer<KotlinTypeDeclaration, KotlinCompilationUnit> boot15MainFunctionContributor() {
|
||||
public MainCompilationUnitCustomizer<KotlinTypeDeclaration, KotlinCompilationUnit> boot15MainFunctionContributor(
|
||||
ResolvedProjectDescription projectDescription) {
|
||||
return (compilationUnit) -> compilationUnit
|
||||
.addTopLevelFunction(KotlinFunctionDeclaration.function("main")
|
||||
.parameters(new Parameter("Array<String>", "args"))
|
||||
.body(new KotlinExpressionStatement(
|
||||
new KotlinFunctionInvocation(
|
||||
"org.springframework.boot.SpringApplication",
|
||||
"run", "DemoApplication::class.java",
|
||||
"run", projectDescription.getApplicationName()
|
||||
+ "::class.java",
|
||||
"*args"))));
|
||||
}
|
||||
|
||||
@@ -110,14 +112,16 @@ class KotlinProjectGenerationDefaultContributorsConfiguration {
|
||||
}
|
||||
|
||||
@Bean
|
||||
public MainCompilationUnitCustomizer<KotlinTypeDeclaration, KotlinCompilationUnit> mainFunctionContributor() {
|
||||
public MainCompilationUnitCustomizer<KotlinTypeDeclaration, KotlinCompilationUnit> mainFunctionContributor(
|
||||
ResolvedProjectDescription projectDescription) {
|
||||
return (compilationUnit) -> compilationUnit
|
||||
.addTopLevelFunction(KotlinFunctionDeclaration.function("main")
|
||||
.parameters(new Parameter("Array<String>", "args"))
|
||||
.body(new KotlinExpressionStatement(
|
||||
new KotlinReifiedFunctionInvocation(
|
||||
"org.springframework.boot.runApplication",
|
||||
"DemoApplication", "*args"))));
|
||||
projectDescription.getApplicationName(),
|
||||
"*args"))));
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -146,6 +146,49 @@ class CodeComplianceTests extends AbstractComplianceTests {
|
||||
+ "ServletInitializer." + getExpectedExtension(extension)));
|
||||
}
|
||||
|
||||
@ParameterizedTest
|
||||
@MethodSource("parameters")
|
||||
void currentGenerationCustomCoordinates(Language language, String extension) {
|
||||
ProjectAssert project = generateProject(language, maven, "2.1.1.RELEASE",
|
||||
(description) -> {
|
||||
description.setGroupId("com.example.acme");
|
||||
description.setArtifactId("my-project");
|
||||
description.setPackageName("com.example.acme.myproject");
|
||||
description.setApplicationName("MyProjectApplication");
|
||||
});
|
||||
project.isGenericProject("com.example.acme.myproject", "MyProjectApplication",
|
||||
language.id(), extension);
|
||||
project.sourceCodeAssert("src/main/" + language
|
||||
+ "/com/example/acme/myproject/MyProjectApplication." + extension)
|
||||
.equalsTo(new ClassPathResource(
|
||||
"project/" + language + "/standard/MyProjectApplication."
|
||||
+ getExpectedExtension(extension)));
|
||||
project.sourceCodeAssert("src/test/" + language
|
||||
+ "/com/example/acme/myproject/MyProjectApplicationTests." + extension)
|
||||
.equalsTo(new ClassPathResource(
|
||||
"project/" + language + "/standard/MyProjectApplicationTests."
|
||||
+ getExpectedExtension(extension)));
|
||||
}
|
||||
|
||||
@ParameterizedTest
|
||||
@MethodSource("parameters")
|
||||
void previousGenerationCustomCoordinates(Language language, String extension) {
|
||||
ProjectAssert project = generateProject(language, maven, "1.5.18.RELEASE",
|
||||
(description) -> {
|
||||
description.setGroupId("com.example.acme");
|
||||
description.setArtifactId("my-project");
|
||||
description.setPackageName("com.example.acme.myproject");
|
||||
description.setApplicationName("MyProjectApplication");
|
||||
});
|
||||
project.isGenericProject("com.example.acme.myproject", "MyProjectApplication",
|
||||
language.id(), extension);
|
||||
project.sourceCodeAssert("src/main/" + language
|
||||
+ "/com/example/acme/myproject/MyProjectApplication." + extension)
|
||||
.equalsTo(new ClassPathResource(
|
||||
"project/" + language + "/previous/MyProjectApplication."
|
||||
+ getExpectedExtension(extension)));
|
||||
}
|
||||
|
||||
private String getExpectedExtension(String extension) {
|
||||
return extension + ".gen";
|
||||
}
|
||||
|
@@ -0,0 +1,14 @@
|
||||
package com.example.acme.myproject
|
||||
|
||||
import org.springframework.boot.SpringApplication
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication
|
||||
|
||||
@SpringBootApplication
|
||||
class MyProjectApplication {
|
||||
|
||||
static void main(String[] args) {
|
||||
SpringApplication.run(MyProjectApplication, args)
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -0,0 +1,14 @@
|
||||
package com.example.acme.myproject
|
||||
|
||||
import org.springframework.boot.SpringApplication
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication
|
||||
|
||||
@SpringBootApplication
|
||||
class MyProjectApplication {
|
||||
|
||||
static void main(String[] args) {
|
||||
SpringApplication.run(MyProjectApplication, args)
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -0,0 +1,17 @@
|
||||
package com.example.acme.myproject
|
||||
|
||||
import org.junit.Test
|
||||
import org.junit.runner.RunWith
|
||||
import org.springframework.boot.test.context.SpringBootTest
|
||||
import org.springframework.test.context.junit4.SpringRunner
|
||||
|
||||
@RunWith(SpringRunner)
|
||||
@SpringBootTest
|
||||
class MyProjectApplicationTests {
|
||||
|
||||
@Test
|
||||
void contextLoads() {
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -0,0 +1,14 @@
|
||||
package com.example.acme.myproject;
|
||||
|
||||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
|
||||
@SpringBootApplication
|
||||
public class MyProjectApplication {
|
||||
|
||||
public static void main(String[] args) {
|
||||
SpringApplication.run(MyProjectApplication.class, args);
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -0,0 +1,14 @@
|
||||
package com.example.acme.myproject;
|
||||
|
||||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
|
||||
@SpringBootApplication
|
||||
public class MyProjectApplication {
|
||||
|
||||
public static void main(String[] args) {
|
||||
SpringApplication.run(MyProjectApplication.class, args);
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -0,0 +1,17 @@
|
||||
package com.example.acme.myproject;
|
||||
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
import org.springframework.test.context.junit4.SpringRunner;
|
||||
|
||||
@RunWith(SpringRunner.class)
|
||||
@SpringBootTest
|
||||
public class MyProjectApplicationTests {
|
||||
|
||||
@Test
|
||||
public void contextLoads() {
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -0,0 +1,12 @@
|
||||
package com.example.acme.myproject
|
||||
|
||||
import org.springframework.boot.SpringApplication
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication
|
||||
|
||||
@SpringBootApplication
|
||||
class MyProjectApplication
|
||||
|
||||
fun main(args: Array<String>) {
|
||||
SpringApplication.run(MyProjectApplication::class.java, *args)
|
||||
}
|
||||
|
@@ -0,0 +1,12 @@
|
||||
package com.example.acme.myproject
|
||||
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication
|
||||
import org.springframework.boot.runApplication
|
||||
|
||||
@SpringBootApplication
|
||||
class MyProjectApplication
|
||||
|
||||
fun main(args: Array<String>) {
|
||||
runApplication<MyProjectApplication>(*args)
|
||||
}
|
||||
|
@@ -0,0 +1,17 @@
|
||||
package com.example.acme.myproject
|
||||
|
||||
import org.junit.Test
|
||||
import org.junit.runner.RunWith
|
||||
import org.springframework.boot.test.context.SpringBootTest
|
||||
import org.springframework.test.context.junit4.SpringRunner
|
||||
|
||||
@RunWith(SpringRunner::class)
|
||||
@SpringBootTest
|
||||
class MyProjectApplicationTests {
|
||||
|
||||
@Test
|
||||
fun contextLoads() {
|
||||
}
|
||||
|
||||
}
|
||||
|
Reference in New Issue
Block a user