Commit Graph

1347 Commits

Author SHA1 Message Date
Stephane Nicoll
4ac8ab3d24 Polish
See gh-849
2019-03-01 09:47:08 +01:00
Stephane Nicoll
b24cd2e9ca Add workaround for annotationProcessor scope detection in IJ
Closes gh-848
2019-02-28 18:18:09 +01:00
Stephane Nicoll
e1535e9ad1 Fix broken link 2019-02-21 18:26:36 +01:00
Stephane Nicoll
e7ee22f73a Restore support for Gradle 3
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
2019-02-21 18:22:52 +01:00
Stephane Nicoll
de802b8383 Add HELP.md to .gitignore if necessary 2019-02-20 08:37:34 +01:00
Stephane Nicoll
924a73310a Project documentation infrastructure
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>
2019-02-19 21:10:58 -08:00
Stephane Nicoll
2746a3a6e7 Remove release repository 2019-02-19 14:32:00 +01:00
Andy Wilkinson
b91ecb61fb Add method for asserting that a pom does not have a dependency
Closes gh-842
2019-02-19 11:32:09 +00:00
Andy Wilkinson
07bf731f47 Fix assertions of dependency scope, type, and version
Closes gh-841
2019-02-19 11:18:42 +00:00
Andy Wilkinson
a049d6e4fc Polish 2019-02-19 10:03:40 +00:00
Andy Wilkinson
fad1d14bf0 Configure m2e to ignore Flatten plugin
Closes gh-840
2019-02-19 09:58:30 +00:00
Stephane Nicoll
4ed8089a35 Upgrade to Spring Boot 2.1.3 2019-02-16 20:21:41 +01:00
Madhura Bhave
11ffe794fa Generated code should have only one newline at the end
Fixes gh-828
2019-02-15 15:13:20 -08:00
Stephane Nicoll
56187f571d Polish 2019-02-14 14:52:58 +01:00
Stephane Nicoll
701f3f6277 Map project version from version capability
Closes gh-832
2019-02-14 14:52:07 +01:00
Stephane Nicoll
24887e1ab3 Fix generation of filename with empty artifactId
Closes gh-831
2019-02-14 13:10:48 +01:00
Stephane Nicoll
f18c08f88f Handle empty package name
Closes gh-830
2019-02-14 10:00:58 +01:00
Stephane Nicoll
75307eab0f Map whitespace input to default value
This commit checks if a request for any of the text capability is set
with only whitespaces and replaces it with the metadata default
counterpart.

Closes gh-769
2019-02-14 09:56:39 +01:00
Stephane Nicoll
8660fedd0b Polish 2019-02-14 09:29:08 +01:00
Stephane Nicoll
b0d7bdd343 Honour custom application name in Kotlin main class
Closes gh-826
2019-02-13 09:53:49 +01:00
Madhura Bhave
fe66bbab78 Make sure dependencies are compatible with boot version
Closes gh-825
2019-02-11 13:39:04 -08:00
Stephane Nicoll
5ea041744c Remove magic string comparison for build systems
This commit removes the magic string comparision to identify the build
system in use. Rather than just returning the `Path` to the project, a
`ProjectGenerationResult` is now returned that contains the description
of the generated project.

Closes gh-817
2019-02-11 16:11:48 +01:00
Stephane Nicoll
1485d9af82 Stop setting executable flag outside of project generation 2019-02-11 15:27:53 +01:00
Stephane Nicoll
08c785b952 Use build tag to infer the build system
Stop using the type's prefix to infer the build system to use as the
build tag in the metadata is supposed to provide that information.

See gh-817
2019-02-11 14:37:35 +01:00
Stephane Nicoll
c98f59e8f2 Remove deprecated stsId
Closes gh-820
2019-02-11 12:46:00 +01:00
Stephane Nicoll
de15e826b8 Improve configuration guide 2019-02-11 12:31:27 +01:00
Stephane Nicoll
0ed3bdddaa Add basic section about new generator API 2019-02-11 12:23:12 +01:00
Stephane Nicoll
4658162d7c Polish 2019-02-11 11:22:45 +01:00
Stephane Nicoll
cbb60c45e1 Allow to filter available Spring Boot versions
This commit adds a new InitializrMetadataUpdateStrategy callback
interface that can be used to customize what should happen when the
metadata has to be refreshed.

Closes gh-816
2019-02-08 16:42:45 +01:00
Stephane Nicoll
fe4d05d1f6 Upgrade to JUnit Jupiter 5.4.0 2019-02-08 13:21:44 +01:00
Stephane Nicoll
b97b9f9350 Migrate from slf4j to spring-jcl logger
Closes gh-819
2019-02-08 13:16:23 +01:00
Stephane Nicoll
9dc3cc65d1 Polish module dependencies 2019-02-08 13:01:32 +01:00
Stephane Nicoll
d5580cd985 Remove unused ProjectResourceLocator 2019-02-08 11:03:47 +01:00
Stephane Nicoll
cd3b274112 Rationalize exception management 2019-02-08 11:00:04 +01:00
Stephane Nicoll
478c0c41c6 Relocate Agent to web module 2019-02-08 10:56:41 +01:00
Stephane Nicoll
b6657211f6 Review TemplateRenderer abstraction
Closes gh-818
2019-02-08 10:53:49 +01:00
Stephane Nicoll
6e9f542560 Polish 2019-02-08 10:24:59 +01:00
Stephane Nicoll
5e04746746 Add Spring-based project contributors
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>
2019-02-08 09:50:35 +01:00
Stephane Nicoll
0d5efd24ba Add support for customizable project generation
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>
2019-02-08 09:50:34 +01:00
Andy Wilkinson
2cb1f3e647 Add packaging abstraction
Closes gh-815

Co-authored-by: Stephane Nicoll <snicoll@pivotal.io>
2019-02-08 09:50:34 +01:00
Andy Wilkinson
3f585337da Add Maven build support
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>
2019-02-08 09:50:34 +01:00
Andy Wilkinson
2bd64ed6ed Add Gradle build support
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
2019-02-08 09:50:34 +01:00
Andy Wilkinson
1dbed8cdf8 Add build abstraction
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>
2019-02-08 09:50:34 +01:00
Stephane Nicoll
b5ba883b02 Add Groovy language support
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
2019-02-08 09:50:34 +01:00
Stephane Nicoll
bdfa852675 Add Kotlin language support
This commit provides a Kotlin language implementation with a writer that
can generate a `.kt` source file based on a configurable model.

See gh-813
2019-02-08 09:50:34 +01:00
Andy Wilkinson
d0d4809ee9 Add Java language support
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>
2019-02-08 09:50:34 +01:00
Andy Wilkinson
77bb7eb3ac Add language abstraction
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>
2019-02-08 09:50:34 +01:00
Stephane Nicoll
b6e675de40 Add writer with indent support
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>
2019-02-08 09:50:34 +01:00
Stephane Nicoll
3fa03b8438 Move metadata to a dedicated module
This commit moves the `metadata` package to a dedicated
`initializr-metadata` module so that it can be shared.

Closes gh-804
2019-02-08 09:50:34 +01:00
Stephane Nicoll
6ccfb69692 Promote version infrastructure to dedicated package
This commit moves `Version` and related support classes to a dedicated
package

Closes gh-811
2019-02-08 09:50:34 +01:00