This commit improves the handling of repositories with Maven.
Previously, the writer wrongly assumed that the default for releases
and snapshots are true and false respectively. However, both defaults
are true which means that snapshots repository are considered for
releases, and releases repositories are considered for snapshots.
MavenRepository has now separate flags for those and the writer makes
sure to only update the `enabled` flag if the chosen value is not
true. This doesn't increase the content for repository definitions
while offering better performance for dependencies resolution.
Closes gh-1226
Using UrlAssert#isEqualsTo may lead to incorrect comparison based on
local DNS resolution setup. The intention here is to compare the String
literal anyway.
See gh-1151
This commit improves the ProjectRequest converter to invoke a
ProjectRequestPlatformVersionTransformer. A default implementation does
the conversion based on configurable ranges for the V1 and V2 format
respectively.
This complement our backward compatible support with 2.1 metadata on an
instance using the new version format. All that is required is to
configure which versions are using which format.
See gh-1092
This commit adds a new `platformCompatibilityRange` in the metadata that
can be used to restrict the valid platform versions. If a project is
requested or metadata needs to be resolved against a version that does
not match the range, an exception is thrown.
Closes gh-1048
This commit stops creating a MustacheTemplateRenderer automatically as
it is only used by the Spring conventions at the moment. This makes sure
that the test infrastructure can be used even if mustache is not
available.
Closes gh-991
This commit migrates ProjectDescription to an interface with read-only
accessors and create a MutableProjectDescription implementation that can
be used for both purposes.
As a result, the type separation between ResolvedProjectDescription and
ProjectDescription is no longer necessary.
Closes gh-993
This commit moves project-based assertions to regular AssertJ Assert
classes. `ProjectStructure` is now an assert provider so that it can
be used with the standard `assertThat` method.
Specialized assertions are provided for the supported build systems as
well as text-based content.
Closes gh-764
This commit extracts various test utilities to a dedicated
initializr-generator-test module for easier consumption. The previous
test-jar are no longer published and a dependency to this new module
should be equivalent.
This commit also cleans various resources that were located in the wrong
place. In particular initializr-generator does not know anything about
metadata anymore.
Closes gh-988