BOMs are structured in such a way than adding one to the project may
require another one(s) to be added to the project.
This commit adds an `additionalBoms` property to `BillOfMaterials` that
can be used to refer the BOM(s) that should be automatically added if
said BOM is added to the project.
Closes gh-190
Previously, Spring Initializr was refering to
`spring-cloud-starter-parent` as the BOM source for any cloud-related
dependencies.
This pom actually inherits from a specific version of Spring Boot and
brings all its dependency management. If the chosen boot version and the
one that the cloud bom brings do not match, inconsistent versions can
appear in the project.
The underlying issue was fixed by providing a new BOM that only provides
dependency management for the cloud-related bits.
Closes gh-116
Previously, only an invalid type or an invalid dependency would lead to
an exception and in such case, no event is fired at all.
This commit adds validation for language and packaging as well as a new
event that is fired when the project could not be generated.
The metrics infrastructure has been updated to handle ProjectFailedEvent;
when such an event is fired, the 'failures' counter is increased and we
still record all the other metrics.
Closes gh-188
Replace `ProjectGenerationListener` by an event that is thrown via the
regular `ApplicationEventPublisher`. This allows any arbitrary bean to
listen to the event without the need of implementing an interface.
Closes gh-184
As of Spring Boot 1.4, lombok is managed and we should no longer provide
a version for it. This commit makes sure to remove the version as of
Spring Boot 1.4
Closes gh-182
Spring Boot 1.4 has renamed the `spring-boot-starter-redis` to
`spring-boot-starter-redis`. This commit adds support for the former up
to 1.4 (exclusive) and the later as from 1.4
Closes gh-174
If the `initializr.env.google-analytics-tracking-code` is specified with
the tracking code to use, the web UI automatically integrates with Google
Analytics.
Closes gh-180
This commit makes it possible to customize and display automatically form
inputs with this kind of hashbang parameters:
https://start.spring.io/#!language=groovy&name=Groovy%20Sample
type, groupId, artifactId, name, description, packageName,
packaging, javaVersion and language parameters are supported.
Closes gh-107
GMavenPlus is not properly supported on Eclipse so a Groovy-based
project using Maven now breaks in that IDE. Let's revert the support
until we find a better solution.
Spring Initializr mostly uses tabs but some files were inconsistently
using spaces. This commit harmonizes the templates so that any generated
project uses tabs consistently.
A groovy-based project using Maven now builds with GMavenPlus as the
Groovy Eclipse maven compiler does not seem to be maintained anymore.
This commit also harmonizes the location of the code to be
`src/main/groovy` for both Gradle and Maven builds.
Joint compilation is enabled by default so that you can create pure Java
code in `src/main/java` and refer to any class within the project.
Users of IntelliJ IDEA may want to install a plugin that automatically
adds `src/main/groovy` to the sources when the GMavenPlus plugin is
added to the pom, see https://plugins.jetbrains.com/plugin/7442
Closes gh-90
Spring Initializr does not support the provided scope properly with
Gradle as it relies on the `providedRuntime` configuration added by the
war plugin.
Lombok should be added with an optional flag anyway so until the
service properly supports it, lombok is defined again with the default
(compile) scope.
Closes gh-171
Register an additional endpoint at `/dependencies` that returns the
necessary information about the registered dependencies for a Spring
Boot version. If the `bootVersion` request parameter is not specified,
the default Spring Boot version is used.
The json content contains the artifact coordinates as well as the
necesasry BOM or repository to add. This information should be useful
enough for any tool to add additional dependencies to an existing
project or create one from scratch.
Closes gh-140
If a dependency is fist managed by the service and later on by Spring
Boot, there is no way to keep a single entry that would change the
dependency according to the Spring Boot version.
A hack would consist of creating two entries that would have an exclusive
range but it's far from ideal.
This commit adds a `versions` attribute on each dependency that can
define an arbitrary number of mappings between a version and a range. If
one of those range matches, the related version is used (and the absence
of version means that no version need to be included). If no mapping
matched (or if there are no mappings at all), the default version is
used.
Closes gh-168
Update controllers to add an ETag information so that meta-data is cached
on the client.
Also enables the compression for json, css and html resources.
Closes gh-165
The new layout broke some integration tests as it is now necessary to
click on a link to display additional options.
Tests have also been rewritten to take the new design (and new features)
into account.