This commit adds support for configuring several tasks at once using
a type. It also migrates the Kotlin support so that, instead of
configuring compileKotlin and compileTestKotlin, it configures all
tasks of type KotlinCompile at once.
See gh-890
This commit extends the build system and platform conditions to allow
for several values to be specified. Those conditions match if any of
the provided value matches.
Closes gh-888
This commit fixes the handling of configuration parameters so that
nested groups can be reused when requested with the same parameter
name. However, single parameters are additive.
Closes gh-867
This commit harmonizes assertions on text file content by sharing the
code that reads and validate candidates. Make sure that streams are
properly closed which may fix build failures on Windows.
See gh-862
While new scopes are available as of Gradle 3.4, the Spring Boot plugin
does not manage them in the `1.5.x` line. This commit introduces a
dedicated GradleBuildWriter for Gradle 3 that uses the previous scopes.
Closes gh-845
This commit adds support for an `HelpDocument` that can be generated
alongside the project. Such document can hold an arbitrary number of
sections with pre-defined sections such as "Getting Started" and "Next
Steps".
A default contributor retrieves the links for requested dependencies
and add them to the document.
Closes gh-353
Co-authored-by: Madhura Bhave <mbhave@pivotal.io>
This commit adds an optional module that gathers the opinions that are
used to generate a Spring Boot project.
Closes gh-340
Co-authored-by: Madhura Bhave <mbhave@pivotal.io>
Co-authored-by: Andy Wilkinson <awilkinson@pivotal.io>
This commit adds a project generation infrastructure based on the
abstraction defined thus far. Each project is described by a
`ProjectDescription` that provides the basic information about the
project such as language, build system, packaging, platform version
and more.
Each project runs in a dedicated `ProjectApplicationContext` where
contributors and customizers are elected to generate the project.
Customizers are meant to update the model based on the
`ProjectDescription` and other factors while contributors consume
models to generate project assets (build files, source files, etc).
Because project generation runs in a dedicated context, components can
be flagged with special conditions that enable them only when necessary.
Several conditions are provided in this commit to enable a component
based on the language, build system, packaging, platform version or
requested dependency.
See gh-340
Co-authored-by: Andy Wilkinson <awilkinson@pivotal.io>
Co-authored-by: Madhura Bhave <mbhave@pivotal.io>
This commit provides a Maven build system implementation with a writer
that can generate `pom.xml` files based on a configurable model.
Closes gh-814
Co-authored-by: Stephane Nicoll <snicoll@pivotal.io>
This commit provides a Gradle build system implementation with a writer
that can generate `build.gradle` and `settings.gradle` files based on a
configurable model.
See gh-814
This commit adds a build abstraction with a base model that concrete
build systems can reuse.
See gh-814
Co-authored-by: Stephane Nicoll <snicoll@pivotal.io>
This commit provides a Groovy language implementation with a writer that
can generate a `.groovy` source file based on a configurable model.
Closes gh-813
This commit provides a Java language implementation with a writer that
can generate a `.java` source file based on a configurable model.
See gh-813
Co-authored-by: Stephane Nicoll <snicoll@pivotal.io>
This commit adds a `Language` on the JVM abstraction with well known
concepts such as `Annotation`, `Parameter`, `CompilationUnit` and
`TypeDeclaration` that concrete language implementations can reuse.
See gh-813
Co-authored-by: Stephane Nicoll <snicoll@pivotal.io>
This commit adds an `IndentingWriter` with a factory that supports
different indenting option according to a content identifier (e.g. a
language).
Closes gh-812
Co-authored-by: Andy Wilkinson <awilkinson@pivotal.io>
This commit removes the former `ProjectGenerator` api based on mustache
template in favour of a new DSL infrastructure to be detailed in further
commits.
Event handling is now web-specific with a `ProjectRequest` and a
`WebProjectRequest` that gathers the base input from the request and
some additional web-specific metadata, respectively. As a consequence
the `initializr-actuator` module has now a dependency on the
`initializr-web` module.
See gh-340
Co-authored-by: Stephane Nicoll <snicoll@pivotal.io>
This commit simplifies project generation by only checking for supported
Spring Boot version (i.e. 1.5 and later) and therefore removing any
logic that is specified to a non supported version.
Concretely, initializr is no longer able to generate a project for a
Spring Boot version prior to 1.5
Closes gh-763
This commit extends the forceSsl support to redirect any HTML content
to https. Practically speaking, this allows to redirect all browsers to
https when they land on the main page using https. Serving traffic via
http is still allowed as preventing this would break a lot of
existing clients.
To allow to easily run the app locally, forceSsl is false and must be
enabled for any production environment.
Closes gh-473
This commit upgrades to Spring Boot 2.0.0.
Please note that this commit does not change metrics names to use new
features of Micrometer yet (see gh-526)
Closes gh-611
This commits upgrade to Kotlin 1.2.20 and uses the new stdlib artifact
names. As a result, 2.0 milestones prior to Spring Boot 2.0.0.RC1 are
no longer supported.
Closes gh-576
Rather than override the default, this commit removes the override for
the incremental compilation support in Maven. We now relies on all
default now.
Closes gh-584
To generate additional files, `doGenerateProjectStructure` should be
overridden but doing so doesn't work as `ProjectGeneratedEvent` is
publised as part as the base implementation.
See gh-552
Spring Boot 2.0.0.M6 offers a better integration with Kotlin. A
top-level `runApplication` function can be used to start the app and
additional dependency and plugin management are provided.
This commit simplifies the way a Kotlin-based project is generated when
running with a compatible version
Closes gh-534