Merge pull request #423 from bclozel:gh-421

* pr/423:
  Polish "Derive package name from groupId and artifactId"
  Derive package name from groupId and artifactId
This commit is contained in:
Stephane Nicoll
2017-05-11 16:53:59 +02:00
34 changed files with 205 additions and 117 deletions

View File

@@ -46,7 +46,7 @@ public class ProjectRequestDocumentFactoryTests extends AbstractInitializrStatTe
assertEquals(null, document.getRequestIp());
assertEquals("com.example", document.getGroupId());
assertEquals("demo", document.getArtifactId());
assertEquals("com.example", document.getPackageName());
assertEquals("com.example.demo", document.getPackageName());
assertEquals("1.2.3.RELEASE", document.getBootVersion());
assertEquals("1.8", document.getJavaVersion());
assertEquals("java", document.getLanguage());

View File

@@ -19,6 +19,8 @@ package io.spring.initializr.generator;
import java.util.ArrayList;
import java.util.List;
import org.springframework.util.StringUtils;
/**
* The base settings of a project request. Only these can be bound by user's
* input.
@@ -142,7 +144,13 @@ public class BasicProjectRequest {
}
public String getPackageName() {
return packageName;
if (StringUtils.hasText(packageName)) {
return packageName;
}
if (StringUtils.hasText(groupId) && StringUtils.hasText(artifactId)) {
return getGroupId() + "." + getArtifactId();
}
return null;
}
public void setPackageName(String packageName) {

View File

@@ -115,7 +115,11 @@ public class ProjectRequest extends BasicProjectRequest {
BeanWrapperImpl bean = new BeanWrapperImpl(this);
metadata.defaults().forEach((key, value) -> {
if (bean.isWritableProperty(key)) {
bean.setPropertyValue(key, value);
// We want to be able to infer a package name if none has been
// explicitly set
if (!key.equals("packageName")) {
bean.setPropertyValue(key, value);
}
}
});
}

View File

@@ -97,7 +97,7 @@ public class InitializrConfiguration {
if (!StringUtils.hasText(packageName)) {
return defaultPackageName;
}
String candidate = String.join(".", packageName.trim().split("\\W+"));
String candidate = cleanPackageName(packageName);
if (hasInvalidChar(candidate.replace(".", ""))
|| env.invalidPackageNames.contains(candidate)) {
return defaultPackageName;
@@ -107,6 +107,11 @@ public class InitializrConfiguration {
}
}
static String cleanPackageName(String packageName) {
return String.join(".", packageName.trim().replaceAll("-", "").split("\\W+"))
.replaceAll("\\.[0-9]+", ".");
}
private static String unsplitWords(String text) {
return String
.join("", Arrays.stream(text
@@ -385,7 +390,7 @@ public class InitializrConfiguration {
public ParentPom resolveParentPom(String bootVersion) {
return StringUtils.hasText(parent.groupId) ? parent
: new ParentPom("org.springframework.boot",
"spring-boot-starter-parent", bootVersion);
"spring-boot-starter-parent", bootVersion);
}
public static class ParentPom {

View File

@@ -65,7 +65,7 @@ public class InitializrMetadata {
private final TextCapability version = new TextCapability("version", "Version",
"project version");
private final TextCapability packageName = new PackageCapability(groupId);
private final TextCapability packageName = new PackageCapability(groupId, artifactId);
public InitializrMetadata() {
this(new InitializrConfiguration());
@@ -282,19 +282,27 @@ public class InitializrMetadata {
}
private static class PackageCapability extends TextCapability {
private final TextCapability nameCapability;
private final TextCapability groupId;
private final TextCapability artifactId;
PackageCapability(TextCapability nameCapability) {
PackageCapability(TextCapability groupId, TextCapability artifactId) {
super("packageName", "Package Name", "root package");
this.nameCapability = nameCapability;
this.groupId = groupId;
this.artifactId = artifactId;
}
@Override
public String getContent() {
String value = super.getContent();
return value != null ? value
: (nameCapability.getContent() != null
? nameCapability.getContent().replace("-", ".") : null);
if (value != null) {
return value;
}
else if (this.groupId.getContent() != null
&& this.artifactId.getContent() != null) {
return InitializrConfiguration.cleanPackageName(
this.groupId.getContent() + "." + this.artifactId.getContent());
}
return null;
}
}

View File

@@ -76,7 +76,7 @@ public class ProjectGeneratorLanguageTests extends AbstractProjectGeneratorTests
ProjectAssert project = generateProject(request);
project.sourceCodeAssert(
"src/main/" + language + "/com/example/DemoApplication." + extension)
"src/main/" + language + "/com/example/demo/DemoApplication." + extension)
.equalsTo(new ClassPathResource("project/" + language
+ "/standard/DemoApplication." + expectedExtension));
}
@@ -88,7 +88,7 @@ public class ProjectGeneratorLanguageTests extends AbstractProjectGeneratorTests
ProjectAssert project = generateProject(request);
project.sourceCodeAssert(
"src/test/" + language + "/com/example/DemoApplicationTests." + extension)
"src/test/" + language + "/com/example/demo/DemoApplicationTests." + extension)
.equalsTo(new ClassPathResource("project/" + language
+ "/standard/DemoApplicationTests." + expectedExtension));
}
@@ -100,7 +100,7 @@ public class ProjectGeneratorLanguageTests extends AbstractProjectGeneratorTests
ProjectAssert project = generateProject(request);
project.sourceCodeAssert(
"src/test/" + language + "/com/example/DemoApplicationTests." + extension)
"src/test/" + language + "/com/example/demo/DemoApplicationTests." + extension)
.equalsTo(new ClassPathResource("project/" + language
+ "/standard/DemoApplicationTestsWeb." + expectedExtension));
}
@@ -129,7 +129,7 @@ public class ProjectGeneratorLanguageTests extends AbstractProjectGeneratorTests
}
ProjectAssert project = generateProject(request);
project.sourceCodeAssert(
"src/main/" + language + "/com/example/ServletInitializer." + extension)
"src/main/" + language + "/com/example/demo/ServletInitializer." + extension)
.equalsTo(new ClassPathResource("project/" + language
+ "/" + expectedOutput + "/ServletInitializer." + expectedExtension));
}
@@ -142,7 +142,7 @@ public class ProjectGeneratorLanguageTests extends AbstractProjectGeneratorTests
ProjectAssert project = generateProject(request);
project.sourceCodeAssert(
"src/test/" + language + "/com/example/DemoApplicationTests." + extension)
"src/test/" + language + "/com/example/demo/DemoApplicationTests." + extension)
.equalsTo(new ClassPathResource("project/" + language
+ "/standard/DemoApplicationTests." + expectedExtension));
}
@@ -155,7 +155,7 @@ public class ProjectGeneratorLanguageTests extends AbstractProjectGeneratorTests
ProjectAssert project = generateProject(request);
project.sourceCodeAssert(
"src/test/" + language + "/com/example/DemoApplicationTests." + extension)
"src/test/" + language + "/com/example/demo/DemoApplicationTests." + extension)
.equalsTo(new ClassPathResource("project/" + language
+ "/spring-boot-1.4/DemoApplicationTests." + expectedExtension));
}
@@ -168,7 +168,7 @@ public class ProjectGeneratorLanguageTests extends AbstractProjectGeneratorTests
ProjectAssert project = generateProject(request);
project.sourceCodeAssert(
"src/test/" + language + "/com/example/DemoApplicationTests." + extension)
"src/test/" + language + "/com/example/demo/DemoApplicationTests." + extension)
.equalsTo(new ClassPathResource("project/" + language
+ "/spring-boot-1.4/DemoApplicationTests." + expectedExtension));
}

View File

@@ -197,6 +197,15 @@ public class ProjectGeneratorTests extends AbstractProjectGeneratorTests {
"providedRuntime('org.springframework.boot:spring-boot-starter-tomcat')");
}
@Test
public void groupIdAndArtifactIdInferPackageName() {
ProjectRequest request = createProjectRequest("web");
request.setGroupId("org.acme");
request.setArtifactId("42foo");
generateProject(request)
.isJavaProject("org/acme/foo", "DemoApplication");
}
@Test
public void springBoot11UseEnableAutoConfigurationJava() {
ProjectRequest request = createProjectRequest("web");

View File

@@ -28,6 +28,7 @@ import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
@@ -39,23 +40,22 @@ public class ProjectRequestTests {
@Rule
public final ExpectedException thrown = ExpectedException.none();
private InitializrMetadata metadata = InitializrMetadataTestBuilder
.withDefaults().build();
@Test
public void initializeProjectRequest() {
InitializrMetadata metadata = InitializrMetadataBuilder.create().build();
public void initializeGroupIdAndArtifactId() {
metadata = InitializrMetadataBuilder.create().build();
metadata.getGroupId().setContent("org.acme");
metadata.getArtifactId().setContent("my-project");
ProjectRequest request = new ProjectRequest();
request.initialize(metadata);
ProjectRequest request = initProjectRequest();
assertEquals("org.acme", request.getGroupId());
assertEquals("my-project", request.getArtifactId());
}
@Test
public void initializeProjectRequestWithDefaults() {
InitializrMetadata metadata = InitializrMetadataTestBuilder.withDefaults()
.build();
ProjectRequest request = new ProjectRequest();
request.initialize(metadata);
public void initializeSetsMetadataDefaults() {
ProjectRequest request = initProjectRequest();
assertEquals(metadata.getName().getContent(), request.getName());
assertEquals(metadata.getTypes().getDefault().getId(), request.getType());
assertEquals(metadata.getDescription().getContent(), request.getDescription());
@@ -70,10 +70,9 @@ public class ProjectRequestTests {
@Test
public void resolve() {
ProjectRequest request = new ProjectRequest();
InitializrMetadata metadata = InitializrMetadataTestBuilder.withDefaults()
metadata = InitializrMetadataTestBuilder.withDefaults()
.addDependencyGroup("code", "web", "security", "spring-data").build();
ProjectRequest request = initProjectRequest();
request.setType("maven-project");
request.getStyle().addAll(Arrays.asList("web", "spring-data"));
request.resolve(metadata);
@@ -84,10 +83,9 @@ public class ProjectRequestTests {
@Test
public void resolveWithDependencies() {
ProjectRequest request = new ProjectRequest();
InitializrMetadata metadata = InitializrMetadataTestBuilder.withDefaults()
metadata = InitializrMetadataTestBuilder.withDefaults()
.addDependencyGroup("code", "web", "security", "spring-data").build();
ProjectRequest request = initProjectRequest();
request.setType("maven-project");
request.getDependencies().addAll(Arrays.asList("web", "spring-data"));
request.resolve(metadata);
@@ -98,10 +96,10 @@ public class ProjectRequestTests {
@Test
public void resolveFullMetadata() {
ProjectRequest request = new ProjectRequest();
InitializrMetadata metadata = InitializrMetadataTestBuilder.withDefaults()
metadata = InitializrMetadataTestBuilder.withDefaults()
.addDependencyGroup("code", createDependency("org.foo", "acme", "1.2.0"))
.build();
ProjectRequest request = initProjectRequest();
request.getStyle().add("org.foo:acme");
request.resolve(metadata);
assertDependency(request.getResolvedDependencies().get(0), "org.foo", "acme",
@@ -110,10 +108,9 @@ public class ProjectRequestTests {
@Test
public void resolveUnknownSimpleId() {
ProjectRequest request = new ProjectRequest();
InitializrMetadata metadata = InitializrMetadataTestBuilder.withDefaults()
metadata = InitializrMetadataTestBuilder.withDefaults()
.addDependencyGroup("code", "org.foo:bar").build();
ProjectRequest request = initProjectRequest();
request.getStyle().addAll(Arrays.asList("org.foo:bar", "foo-bar"));
thrown.expect(InvalidProjectRequestException.class);
@@ -124,10 +121,9 @@ public class ProjectRequestTests {
@Test
public void resolveUnknownDependency() {
ProjectRequest request = new ProjectRequest();
InitializrMetadata metadata = InitializrMetadataTestBuilder.withDefaults()
metadata = InitializrMetadataTestBuilder.withDefaults()
.addDependencyGroup("code", "org.foo:bar").build();
ProjectRequest request = initProjectRequest();
request.getStyle().add("org.foo:acme"); // does not exist
thrown.expect(InvalidProjectRequestException.class);
@@ -138,12 +134,11 @@ public class ProjectRequestTests {
@Test
public void resolveDependencyInRange() {
ProjectRequest request = new ProjectRequest();
Dependency dependency = createDependency("org.foo", "bar", "1.2.0.RELEASE");
dependency.setVersionRange("[1.0.1.RELEASE, 1.2.0.RELEASE)");
InitializrMetadata metadata = InitializrMetadataTestBuilder.withDefaults()
.addDependencyGroup("code", dependency).build();
ProjectRequest request = initProjectRequest();
request.getStyle().add("org.foo:bar");
request.setBootVersion("1.1.2.RELEASE");
request.resolve(metadata);
@@ -151,12 +146,11 @@ public class ProjectRequestTests {
@Test
public void resolveDependencyNotInRange() {
ProjectRequest request = new ProjectRequest();
Dependency dependency = createDependency("org.foo", "bar", "1.2.0.RELEASE");
dependency.setVersionRange("[1.0.1.RELEASE, 1.2.0.RELEASE)");
InitializrMetadata metadata = InitializrMetadataTestBuilder.withDefaults()
.addDependencyGroup("code", dependency).build();
ProjectRequest request = initProjectRequest();
request.getStyle().add("org.foo:bar");
request.setBootVersion("0.9.9.RELEASE");
@@ -173,10 +167,10 @@ public class ProjectRequestTests {
"[1.0.0.RELEASE, 1.1.0.RELEASE)", null, null, "0.1.0.RELEASE"));
dependency.getMappings().add(Mapping.create(
"1.1.0.RELEASE", null, null, "0.2.0.RELEASE"));
InitializrMetadata metadata = InitializrMetadataTestBuilder.withDefaults()
metadata = InitializrMetadataTestBuilder.withDefaults()
.addDependencyGroup("code", dependency).build();
ProjectRequest request = new ProjectRequest();
ProjectRequest request = initProjectRequest();
request.setBootVersion("1.0.5.RELEASE");
request.getStyle().add("org.foo:bar");
request.resolve(metadata);
@@ -193,31 +187,25 @@ public class ProjectRequestTests {
@Test
public void resolveBuild() {
ProjectRequest request = new ProjectRequest();
InitializrMetadata metadata = InitializrMetadataTestBuilder.withDefaults()
.build();
ProjectRequest request = initProjectRequest();
request.setType("gradle-project");
request.resolve(metadata);
assertEquals("gradle", request.getBuild());
}
@Test
public void resolveBuildNoTag() {
ProjectRequest request = new ProjectRequest();
InitializrMetadata metadata = InitializrMetadataTestBuilder.withDefaults()
metadata = InitializrMetadataTestBuilder.withDefaults()
.addType("foo", false, "/foo.zip", null, null).build();
ProjectRequest request = initProjectRequest();
request.setType("foo");
request.resolve(metadata);
assertNull(request.getBuild());
}
@Test
public void resolveUnknownType() {
ProjectRequest request = new ProjectRequest();
InitializrMetadata metadata = InitializrMetadataTestBuilder.withDefaults()
.build();
ProjectRequest request = initProjectRequest();
request.setType("foo-project");
thrown.expect(InvalidProjectRequestException.class);
@@ -227,10 +215,8 @@ public class ProjectRequestTests {
@Test
public void resolveApplicationNameWithNoName() {
ProjectRequest request = new ProjectRequest();
InitializrMetadata metadata = InitializrMetadataTestBuilder.withDefaults()
.build();
ProjectRequest request = initProjectRequest();
request.setName(null);
request.resolve(metadata);
assertEquals(metadata.getConfiguration().getEnv().getFallbackApplicationName(),
request.getApplicationName());
@@ -238,60 +224,96 @@ public class ProjectRequestTests {
@Test
public void resolveApplicationName() {
ProjectRequest request = new ProjectRequest();
ProjectRequest request = initProjectRequest();
request.setName("Foo2");
InitializrMetadata metadata = InitializrMetadataTestBuilder.withDefaults()
.build();
request.resolve(metadata);
assertEquals("Foo2Application", request.getApplicationName());
}
@Test
public void resolveApplicationNameWithApplicationNameSet() {
ProjectRequest request = new ProjectRequest();
ProjectRequest request = initProjectRequest();
request.setName("Foo2");
request.setApplicationName("MyApplicationName");
InitializrMetadata metadata = InitializrMetadataTestBuilder.withDefaults()
.build();
request.resolve(metadata);
assertEquals("MyApplicationName", request.getApplicationName());
}
@Test
public void cleanPackageNameWithNoName() {
public void packageNameInferredByGroupIdAndArtifactId() {
ProjectRequest request = initProjectRequest();
request.setGroupId("org.acme");
request.setArtifactId("foo");
request.resolve(metadata);
assertThat(request.getPackageName()).isEqualTo("org.acme.foo");
}
@Test
public void packageNameInferredByGroupIdAndCompositeArtifactId() {
ProjectRequest request = initProjectRequest();
request.setGroupId("org.acme");
request.setArtifactId("foo-bar");
request.resolve(metadata);
assertThat(request.getPackageName()).isEqualTo("org.acme.foobar");
}
@Test
public void packageNameUseFallbackIfGroupIdNotSet() {
ProjectRequest request = initProjectRequest();
request.setGroupId(null);
request.setArtifactId("foo");
request.resolve(metadata);
assertThat(request.getPackageName()).isEqualTo("com.example.demo");
}
@Test
public void packageNameUseFallbackIfArtifactIdNotSet() {
ProjectRequest request = initProjectRequest();
request.setGroupId("org.acme");
request.setArtifactId(null);
request.resolve(metadata);
assertThat(request.getPackageName()).isEqualTo("com.example.demo");
}
@Test
public void cleanPackageNameLeadingNumbers() {
ProjectRequest request = new ProjectRequest();
request.setPackageName("org.foo.42bar");
InitializrMetadata metadata = InitializrMetadataTestBuilder.withDefaults()
.build();
request.resolve(metadata);
assertThat(request.getPackageName()).isEqualTo("org.foo.bar");
}
@Test
public void cleanPackageNameWithNoName() {
ProjectRequest request = initProjectRequest();
request.resolve(metadata);
assertEquals(metadata.getPackageName().getContent(), request.getPackageName());
}
@Test
public void cleanPackageName() {
ProjectRequest request = new ProjectRequest();
ProjectRequest request = initProjectRequest();
request.setPackageName("com:foo bar");
InitializrMetadata metadata = InitializrMetadataTestBuilder.withDefaults()
.build();
request.resolve(metadata);
assertEquals("com.foo.bar", request.getPackageName());
}
@Test
public void resolveAdditionalBoms() {
ProjectRequest request = new ProjectRequest();
Dependency dependency = Dependency.withId("foo");
dependency.setBom("foo-bom");
BillOfMaterials bom = BillOfMaterials.create("com.example", "foo-bom", "1.0.0");
bom.getAdditionalBoms().add("bar-bom");
BillOfMaterials additionalBom = BillOfMaterials.create("com.example", "bar-bom",
"1.1.0");
InitializrMetadata metadata = InitializrMetadataTestBuilder.withDefaults()
metadata = InitializrMetadataTestBuilder.withDefaults()
.addBom("foo-bom", bom).addBom("bar-bom", additionalBom)
.addDependencyGroup("test", dependency).build();
ProjectRequest request = initProjectRequest();
request.getStyle().add("foo");
request.resolve(metadata);
assertEquals(1, (request.getResolvedDependencies().size()));
@@ -302,7 +324,6 @@ public class ProjectRequestTests {
@Test
public void resolveAdditionalBomsDuplicates() {
ProjectRequest request = new ProjectRequest();
Dependency dependency = Dependency.withId("foo");
dependency.setBom("foo-bom");
Dependency anotherDependency = Dependency.withId("bar");
@@ -311,9 +332,10 @@ public class ProjectRequestTests {
bom.getAdditionalBoms().add("bar-bom");
BillOfMaterials additionalBom = BillOfMaterials.create("com.example", "bar-bom",
"1.1.0");
InitializrMetadata metadata = InitializrMetadataTestBuilder.withDefaults()
metadata = InitializrMetadataTestBuilder.withDefaults()
.addBom("foo-bom", bom).addBom("bar-bom", additionalBom)
.addDependencyGroup("test", dependency, anotherDependency).build();
ProjectRequest request = initProjectRequest();
request.getStyle().addAll(Arrays.asList("foo", "bar"));
request.resolve(metadata);
assertEquals(2, request.getResolvedDependencies().size());
@@ -324,17 +346,17 @@ public class ProjectRequestTests {
@Test
public void resolveAdditionalRepositories() {
ProjectRequest request = new ProjectRequest();
Dependency dependency = Dependency.withId("foo");
dependency.setBom("foo-bom");
dependency.setRepository("foo-repo");
BillOfMaterials bom = BillOfMaterials.create("com.example", "foo-bom", "1.0.0");
bom.getRepositories().add("bar-repo");
InitializrMetadata metadata = InitializrMetadataTestBuilder.withDefaults()
metadata = InitializrMetadataTestBuilder.withDefaults()
.addBom("foo-bom", bom)
.addRepository("foo-repo", "foo-repo", "http://example.com/foo", false)
.addRepository("bar-repo", "bar-repo", "http://example.com/bar", false)
.addDependencyGroup("test", dependency).build();
ProjectRequest request = initProjectRequest();
request.getStyle().add("foo");
request.resolve(metadata);
assertEquals(1, request.getResolvedDependencies().size());
@@ -350,7 +372,6 @@ public class ProjectRequestTests {
@Test
public void resolveAdditionalRepositoriesDuplicates() {
ProjectRequest request = new ProjectRequest();
Dependency dependency = Dependency.withId("foo");
dependency.setBom("foo-bom");
dependency.setRepository("foo-repo");
@@ -358,11 +379,12 @@ public class ProjectRequestTests {
bom.getRepositories().add("bar-repo");
Dependency anotherDependency = Dependency.withId("bar");
anotherDependency.setRepository("bar-repo");
InitializrMetadata metadata = InitializrMetadataTestBuilder.withDefaults()
metadata = InitializrMetadataTestBuilder.withDefaults()
.addBom("foo-bom", bom)
.addRepository("foo-repo", "foo-repo", "http://example.com/foo", false)
.addRepository("bar-repo", "bar-repo", "http://example.com/bar", false)
.addDependencyGroup("test", dependency, anotherDependency).build();
ProjectRequest request = initProjectRequest();
request.getStyle().addAll(Arrays.asList("foo", "bar"));
request.resolve(metadata);
assertEquals(2, request.getResolvedDependencies().size());
@@ -376,6 +398,12 @@ public class ProjectRequestTests {
request.getRepositories().get("bar-repo"));
}
private ProjectRequest initProjectRequest() {
ProjectRequest request = new ProjectRequest();
request.initialize(this.metadata);
return request;
}
private static void assertBootStarter(Dependency actual, String name) {
Dependency expected = new Dependency();
expected.asSpringBootStarter(name);

View File

@@ -124,7 +124,7 @@ public class InitializrConfigurationTests {
@Test
public void generatePackageNameMultipleDashers() {
assertEquals("com.foo", this.properties.cleanPackageName("com--foo", "com.example"));
assertEquals("com.foobar", this.properties.cleanPackageName("com.foo--bar", "com.example"));
}
@Test

View File

@@ -199,4 +199,17 @@ public class InitializrMetadataTests {
builder.build();
}
@Test
public void stripInvalidCharsFromPackage() {
InitializrMetadata metadata = InitializrMetadataTestBuilder.withDefaults().build();
metadata.getGroupId().setContent("org.acme");
metadata.getArtifactId().setContent("2foo.bar");
assertThat(metadata.getPackageName().getContent()).isEqualTo("org.acme.foo.bar");
metadata = InitializrMetadataTestBuilder.withDefaults().build();
metadata.getGroupId().setContent("org.ac-me");
metadata.getArtifactId().setContent("foo-bar");
assertThat(metadata.getPackageName().getContent()).isEqualTo("org.acme.foobar");
}
}

View File

@@ -37,7 +37,7 @@ import static org.junit.Assert.assertTrue;
*/
public class ProjectAssert {
public static final String DEFAULT_PACKAGE_NAME = "com.example";
public static final String DEFAULT_PACKAGE_NAME = "com.example.demo";
public static final String DEFAULT_APPLICATION_NAME = "DemoApplication";

View File

@@ -1,4 +1,4 @@
package com.example
package com.example.demo
import org.junit.Test
import org.junit.runner.RunWith

View File

@@ -1,4 +1,4 @@
package com.example
package com.example.demo
import org.springframework.boot.builder.SpringApplicationBuilder
import org.springframework.boot.web.support.SpringBootServletInitializer

View File

@@ -1,4 +1,4 @@
package com.example
package com.example.demo
import org.springframework.boot.SpringApplication
import org.springframework.boot.autoconfigure.SpringBootApplication

View File

@@ -1,4 +1,4 @@
package com.example
package com.example.demo
import org.junit.Test
import org.junit.runner.RunWith

View File

@@ -1,4 +1,4 @@
package com.example
package com.example.demo
import org.junit.Test
import org.junit.runner.RunWith

View File

@@ -1,4 +1,4 @@
package com.example
package com.example.demo
import org.springframework.boot.builder.SpringApplicationBuilder
import org.springframework.boot.context.web.SpringBootServletInitializer

View File

@@ -1,4 +1,4 @@
package com.example;
package com.example.demo;
import org.junit.Test;
import org.junit.runner.RunWith;

View File

@@ -1,4 +1,4 @@
package com.example;
package com.example.demo;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.support.SpringBootServletInitializer;

View File

@@ -1,4 +1,4 @@
package com.example;
package com.example.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

View File

@@ -1,4 +1,4 @@
package com.example;
package com.example.demo;
import org.junit.Test;
import org.junit.runner.RunWith;

View File

@@ -1,4 +1,4 @@
package com.example;
package com.example.demo;
import org.junit.Test;
import org.junit.runner.RunWith;

View File

@@ -1,4 +1,4 @@
package com.example;
package com.example.demo;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.context.web.SpringBootServletInitializer;

View File

@@ -1,4 +1,4 @@
package com.example
package com.example.demo
import org.junit.Test
import org.junit.runner.RunWith

View File

@@ -1,4 +1,4 @@
package com.example
package com.example.demo
import org.springframework.boot.builder.SpringApplicationBuilder
import org.springframework.boot.web.support.SpringBootServletInitializer

View File

@@ -1,4 +1,4 @@
package com.example
package com.example.demo
import org.springframework.boot.SpringApplication
import org.springframework.boot.autoconfigure.SpringBootApplication

View File

@@ -1,4 +1,4 @@
package com.example
package com.example.demo
import org.junit.Test
import org.junit.runner.RunWith

View File

@@ -1,4 +1,4 @@
package com.example
package com.example.demo
import org.junit.Test
import org.junit.runner.RunWith

View File

@@ -1,4 +1,4 @@
package com.example
package com.example.demo
import org.springframework.boot.builder.SpringApplicationBuilder
import org.springframework.boot.context.web.SpringBootServletInitializer

View File

@@ -156,12 +156,24 @@ $(function () {
engine.add(data.dependencies);
});
};
var generatePackageName = function() {
var groupId = $("#groupId").val();
var artifactId = $("#artifactId").val();
var package = groupId.concat(".").concat(artifactId)
.replace(/-/g, '');
$("#packageName").val(package);
};
refreshDependencies($("#bootVersion").val());
$("#type").on('change', function () {
$("#form").attr('action', $(this.options[this.selectedIndex]).attr('data-action'))
});
$("#groupId").on("change", function() {
generatePackageName();
});
$("#artifactId").on('change', function () {
$("#name").val($(this).val());
$("#baseDir").attr('value', this.value)
generatePackageName();
});
$("#bootVersion").on("change", function (e) {
refreshDependencies(this.value);
@@ -235,12 +247,6 @@ $(function () {
$("#dependencies input[value='" + id + "']").prop('checked', false);
removeTag(id);
});
$("#groupId").on("change", function() {
$("#packageName").val($(this).val());
});
$("#artifactId").on("change", function() {
$("#name").val($(this).val());
});
$("#dependencies input").bind("change", function () {
var value = $(this).val()
if ($(this).prop('checked')) {
@@ -266,7 +272,6 @@ $(function () {
e.returnValue = false;
}
});
applyParams();
if ("onhashchange" in window) {
window.onhashchange = function() {
@@ -276,5 +281,4 @@ $(function () {
applyParams();
}
}
});

View File

@@ -149,8 +149,8 @@ public class ProjectGenerationSmokeTests
HomePage page = toHome();
page.groupId("org.foo");
page.submit();
zipProjectAssert(from("demo.zip")).hasBaseDir("demo").isJavaProject("org.foo",
"DemoApplication");
zipProjectAssert(from("demo.zip")).hasBaseDir("demo")
.isJavaProject("org.foo.demo", "DemoApplication");
}
@Test
@@ -159,7 +159,16 @@ public class ProjectGenerationSmokeTests
page.artifactId("my-project");
page.submit();
zipProjectAssert(from("my-project.zip")).hasBaseDir("my-project")
.isJavaProject("com.example", "MyProjectApplication");
.isJavaProject("com.example.myproject", "MyProjectApplication");
}
@Test
public void customArtifactIdWithInvalidPackageNameIsHandled() throws Exception {
HomePage page = toHome();
page.artifactId("42my-project");
page.submit();
zipProjectAssert(from("42my-project.zip")).hasBaseDir("42my-project")
.isJavaProject("com.example.myproject", "Application");
}
@Test
@@ -333,7 +342,7 @@ public class ProjectGenerationSmokeTests
page.submit();
ProjectAssert projectAssert = zipProjectAssert(from("my-project.zip"));
projectAssert.hasBaseDir("my-project").isMavenProject()
.isJavaProject("com.example.acme", "MyProjectApplication")
.isJavaProject("com.example.acme.myproject", "MyProjectApplication")
.hasStaticAndTemplatesResources(false).pomAssert()
.hasGroupId("com.example.acme").hasArtifactId("my-project")
.hasDependenciesCount(2).hasSpringBootStarterRootDependency()

View File

@@ -308,7 +308,7 @@
"type": "TEXT"
},
"packageName": {
"content": "com.example",
"content": "com.example.demo",
"description": "root package",
"id": "packageName",
"title": "Package Name",

View File

@@ -189,6 +189,6 @@
},
"packageName": {
"type": "text",
"default": "com.example"
"default": "com.example.demo"
}
}

View File

@@ -227,6 +227,6 @@
},
"packageName": {
"type": "text",
"default": "com.example"
"default": "com.example.demo"
}
}