Commit Graph

2105 Commits (096420cc4cffde1e23e05ae237c174c30b438a28)

Author SHA1 Message Date
Phillip Webb 951a3e78f9 Test layer index can contain filenames with spaces
Add tests to ensure that the layer index can support filenames that
contain spaces.

Closes gh-20827
5 years ago
Phillip Webb 464c15e52c Ensure empty layers are written to the index file
Update the `LayersIndex` class to ensure that layers that do not contain
content are still written.

Closes gh-20858
5 years ago
Phillip Webb df58b9baa2 Use YAML compatible classpath.idx format
Update the `classpath.idx` format to align with `layers.idx` and allow
third-parties can parse it as YAML

Closes gh-20861
5 years ago
Phillip Webb 65672a1150 Use a more compact layers.idx format
Update the `layers.idx` format so that it is more compact and can be
parsed by third-parties as YAML.

Closes gh-20860
5 years ago
Scott Frederick 35ff711dfe Document builder configuration for HTTP proxy
This commit adds examples for configuring the default builder to use
an HTTP/HTTPS proxy when building OCI images using the Maven or Gradle
plugin.

Fixes gh-19984
5 years ago
Oleg Zhurakousky 9f75f30856 Change call to createClassLoader(URL) from 'super' to 'this'
ExecutableArchiveLauncher.createClassLoader(Iterator) calls
createClassLoader(URL) method with 'super'. This means overriding
createClassLoader(URL) is not possible without also overriding
createClassLoader(Iterator). The switch to 'this' enables that.

See gh-20851
5 years ago
Scott Frederick bb568c5bff Consolidate Maven plugin documentation in plugin reference
This commit moves Maven plugin content from several sections in the
main Spring Boot reference documentation to the plugin-specific
documentation.

Fixes gh-19165
5 years ago
Scott Frederick c119dd2450 Rename plugin PDF reference doc files
This commit renames the PDF documentation files generated for the
build plugins when the distribution archive is created.

See gh-20829
5 years ago
Madhura Bhave f40444e212 Fix typo 5 years ago
Andy Wilkinson 34e602652c Polish new layered jar support 5 years ago
Stephane Nicoll 3e936dd735 Polish 5 years ago
Stephane Nicoll c88ef6215f Polish 5 years ago
Phillip Webb 12bc890e75 Update Maven and Gradle layer customization docs
Update the Maven and Gradle documentation following the refined
layer customization changes.

See gh-20526
5 years ago
Madhura Bhave d61a79d90b Support flat jar layering with layertools
Update layertools to support the flat jar format. Layers are now
determined by reading the `layers.idx` file.

Closes gh-20813
5 years ago
Andy Wilkinson bfa04e6574 Support flat jar layering with Gradle
Update the Gralde plugin so that layered jars now use the regular "flat"
format. The layers.idx file now describes which layer each file should
be placed.

See gh-20813

Co-authored-by: Phillip Webb <pwebb@pivotal.io>
5 years ago
Madhura Bhave 4e3cdf936f Support flat jar layering with Maven
Update the Maven plugin so that layered jars now use the regular "flat"
format. The layers.idx file now describes which layer each file should
be placed.

See gh-20813

Co-authored-by: Phillip Webb <pwebb@pivotal.io>
5 years ago
Phillip Webb 3f806aa513 Create a new layer for loader classes
Create a dedicated layer that is used to hold the launcher support
classes. The layer sits between `dependencies` and
`snapshot-dependencies` so that the layer is sensible for both
SNAPSHOT and RELEASE versions of Spring Boot

Closes gh-20529
5 years ago
Phillip Webb 7bc7d86ad4 Refine layer customization for Maven and Gradle
Simplify layer customization logic for both Maven and Gradle and
refactor some internals of the Gradle plugin.

Both Maven and Gradle now use a simpler customization format that
consists of `application`, `dependencies` and `layer order` sections.
The `application`, `dependencies` configurations support one or more
`into` blocks that are used to select content for a specific layer.

Closes gh-20526
5 years ago
Andy Wilkinson 14718f3e8a Allow layertools to work without spring-boot jar
Update `spring-boot-jarmode-layertools` so that it no longer required
a `spring-boot` jar to run.

Closes gh-20815
5 years ago
Scott Frederick cc2852ce79 Polish 5 years ago
Scott Frederick a01c8452cb Support CNB builder platform API 0.3
This commit adds support for Cloud Native Buildpacks builder platform
API 0.3, which is the latest platform API available currently. Support
for platform API 0.1 has been removed, adopting the policy of the pack
CLI to support the current platform API version and one version prior.

Fixes gh-20757
5 years ago
Scott Frederick bb9e37e119 Use platform API builder image tags
CNB builder images are now being tagged in a manner that indicates
the version of the platform API implemented. This allows Spring Boot
to default to a builder tag that guarantees API compatibility while
allowing for updates to bundled buildpacks.

Fixes gh-20171
5 years ago
Phillip Webb 4dad56a491 Restructure and polish docker code
Restructure and polish docker code to fix a package tangle and
provide better separation of concerns.
5 years ago
Phillip Webb 9795262dc1 Polish 5 years ago
Andy Wilkinson 84e16d55ea Raise the minimum supported version of Gradle 6 to 6.3
Closes gh-20532
5 years ago
Scott Frederick ac949d7851 Document remote Docker configuration
This commit adds documentation for the configuration required to
use a remote Docker daemon with the `build-image` Maven goal or the
`bootBuildImage` Gradle task.

See gh-20538
5 years ago
Scott Frederick ed6e54218d Support remote Docker daemon for building images
Prior to this commit, the build plugin goal/task for building images
required a locally running Docker daemon that was accessed via a
non-networked socket or pipe.

This commit adds support for remote Docker daemons at a location
specified by the environment variable `DOCKER_HOST`. Additional
environment variables `DOCKER_TLS_VERIFY` and `DOCKER_CERT_PATH`
are recognized for configuring a secure TLS connection to the daemon.

Fixes gh-20538
5 years ago
dreis2211 674f1e77b5 Fix typos
See gh-20704
5 years ago
Madhura Bhave ad164269e9 Update classpath index to use jar name instead of full path
See gh-20564
5 years ago
Stephane Nicoll 089c0471fa Test the Gradle Plugin against Gradle 6.3
Closes gh-20669
5 years ago
Stephane Nicoll 6aa3461611 Version layers configuration xsd
This commit provides a versioned xsd for the layers configuration of the
Maven plugin. The version starts at `2.3` to match with the Spring Boot
feature release in which this was introduced.

Closes gh-20663
5 years ago
dreis2211 f95e9543dc Fix typos in packaging docs
See gh-20630
5 years ago
Phillip Webb 0717de723f Polish 5 years ago
Phillip Webb 9a33a723fe Update copyright year of changed files 5 years ago
Phillip Webb ce1ae11c26 Merge branch '2.2.x' 5 years ago
Phillip Webb 16b5ea3414 Update copyright year of changed files 5 years ago
Madhura Bhave 7444306d0b Polish docs 5 years ago
Madhura Bhave a06f4f21e3 Combine application and resources layers into a single layer
Closes gh-20562
5 years ago
Madhura Bhave 952e529787 Rename "classes" to "application" in custom layer configuration
Closes gh-20539
5 years ago
Scott Frederick 3f378e1276 Add command-line options for Gradle bootBuildImage parameters
This commit adds support for setting the image name and builder
parameters of the Gradle bootBuildImage task using command-line
options as an alternative to DSL configuration.

See gh-20520
5 years ago
Stephane Nicoll 579a6ac254 Adapt tests for support for Java 14
See gh-20576
5 years ago
Stephane Nicoll 0b7f198b54 Publish Maven plugin API
This commit enables javadoc generator for the Spring Boot Maven plugin.

This also harmonizes the structure of the documentation, with an `/api`
and a `/reference` root directories for the javadoc and the reference
guide respectively.

Closes gh-20127
5 years ago
Scott Frederick e607c6842f Polish Gradle layer configuration DSL
This commit modifies the DSL for custom layer configuration in the
Gradle plugin to avoid duplication of terms that could be confusing.

Fixes gh-20563
5 years ago
Stephane Nicoll 0f5ca030db Polish "Add Java 14 CI"
See gh-20413
5 years ago
Stephane Nicoll 2e2f839bc8 Upgrade to Gradle 6.3 RC2
Closes gh-20558
5 years ago
Andy Wilkinson 9b817caff3 Revert "Update extract to write files to their original, unlayered location"
This reverts commit 9f3bc78f36.
5 years ago
Andy Wilkinson 9f3bc78f36 Update extract to write files to their original, unlayered location 5 years ago
Scott Frederick 44f7508825 Fix BuildImageMojo javadoc. 5 years ago
Scott Frederick 08e96427de Add command-line properties for Maven build-image options
This commit adds support for setting the image name and builder
parameters of the Maven spring-boot:build-image goal using command-line
properties as an alternative to plugin configuration in pom.xml. Per
Maven conventions, a value in pom.xml configuration will override a
command-line property when both are provided.

Fixes gh-20520
5 years ago
Madhura Bhave fb8b531bfd Polish 5 years ago
Madhura Bhave 3e8ee2a296 Add missing package-info.json
Closes gh-20516
5 years ago
Madhura Bhave 84b2e8c308 Rename classes package to application
Closes gh-20526
5 years ago
Scott Frederick 3dea2201c4 Use Gradle's configuration avoidance API
Register Boot Gradle tasks instead of creating them so they can be
loaded lazily.

Closes gh-18881
5 years ago
Scott Frederick f2dadf5a87 Add support for customizing layers in Gradle
This commit adds configuration to the Spring Boot Gradle plugin that
allows the names and contents of layers to be customized in the build
configuration.

Fixes gh-20296
5 years ago
Andy Wilkinson c4a55a5fb4 Fail fast when attempting to repackage a reproducible war
Maven's war plugin does not support reproducible builds, resulting in
the entries in the war file not being written in a consistent order
from build to build.

Closes gh-20176
5 years ago
Andy Wilkinson ca202ad59f Support Maven's outputTimestamp when repackaging jars and wars
Closes gh-20176
5 years ago
Madhura Bhave e49e62df5c Add support for customizing layers in Maven
This commit adds an additional 'layers/configuration' property that can
be used to refer to a separate layers configuration file. This separate
file defines:

* The layers and their order of precedence,
* How libraries are handled using filters that match against the
coordinates of each library, and
* How classes are handled using filters that match against the location
of the entry

An XSD to validate the XML configuration file is available.

Closes gh-20295

Co-authored-by: Stephane Nicoll <snicoll@pivotal.io>
5 years ago
Johnny Lim 8526e66939 Polish
See gh-20498
5 years ago
dreis2211 53e8e49552 Fix JarFileTests for multi-release JARs on JDK14
See gh-20180
5 years ago
dreis2211 daa3855fc8 Test the Gradle Plugin against Gradle 6.2.2
See gh-20385
5 years ago
dreis2211 9588188800 Use isEmpty() where possible
See gh-20370
5 years ago
Scott Frederick 296a13a479 Fix unit test case formatting 5 years ago
Scott Frederick b00ed5b143 Remove unused imports 5 years ago
Scott Frederick ce03f501c4 Merge pull request #20297 from mikesmithson 5 years ago
Scott Frederick ada0741e10 Polish Docker client exception handling 5 years ago
Mike Smithson 6f095d6fec Improve error message from image building
Translate IOException to DockerException for a more meaningful error
message when the Docker daemon is not available.

Fixes gh-20151
5 years ago
Scott Frederick e60a7ea8d6 Fix Maven plugins tests on Windows
This commit fixes problems with file path separators and command
line argument quoting in Maven plug integration tests when run on
Windows.

Fixes gh-20244
5 years ago
Scott Frederick 509a1f1d41 Configure buildpack to use target Java version
With this commit, the Maven `spring-boot:build-image` goal and the
Gradle `bootBuildImage` task will configure the OpenJDK buildpack
to use the same JRE version as the project's target version,
provided the buildpack Java version is not explicitly set in the
build configuration.

Fixes gh-20172
5 years ago
dreis2211 442733600e Test the Gradle plugin against Gradle 6.2.1
See gh-20310
5 years ago
Stephane Nicoll c0c097117a Polish
See gh-20244
5 years ago
Scott Frederick 23e781033c Merge branch '2.2.x'
Closes gh-20244
5 years ago
Scott Frederick 625b40aa90 Prefer arguments in POM over spring-boot.run.arguments
This commit changes the order of precedence for the `arguments` property
of the AbstractRunMojo so that values specified in the POM override
values provided on the command line using `spring-boot.run.arguments`.
This brings the `arguments` property in line with all other Mojo
parameters.

Fixes gh-20024
5 years ago
Madhura Bhave c5bce2b99d Fix gradle plugin validation error 5 years ago
Madhura Bhave 15cd590f7f Allow users to opt out of including the layer tools in a layered jar
For Maven, the layer configuration is now an additional configuration
option instead of a layout type.

Closes gh-19866
5 years ago
Johnny Lim 8be8a8421d Polish
See gh-20226
5 years ago
dreis2211 d55bc5f850 Test the Gradle Plugin against Gradle 6.2
See gh-20222
5 years ago
Madhura Bhave aa09058d8c Remove implicit layers support from the layer tools
Closes gh-20187
5 years ago
dreis2211 866c441d70 Upgrade to Gradle 6.2
See gh-20213
5 years ago
dreis2211 4f824bf9ad Fix duplicate words
See gh-20210
5 years ago
dreis2211 76d2bc27eb Explicitly set java home in Maven Plugin integration tests
See gh-20193
5 years ago
Stephane Nicoll 03bee83991 Update copyright date
See gh-20192
5 years ago
zhangt2333 e2d87a89d0 Polish
See gh-20192
5 years ago
Andy Wilkinson e065ee7be2 Merge branch '2.1.x' into 2.2.x
Closes gh-20183
5 years ago
Andy Wilkinson b9c2d775a9 Merge branch '2.2.x'
Closes gh-20185
5 years ago
Andy Wilkinson d61b035640 Merge branch '2.1.x' into 2.2.x
Closes gh-20183
5 years ago
Andy Wilkinson c8907d46b4 Fix up-to-date checking of build info properties
Closes gh-20135
5 years ago
Andy Wilkinson 8577a39a96 Upgrade to Spring Asciidoctor Extensions 0.4.1.RELEASE
Closes gh-20158
5 years ago
Scott Frederick e294d26458 Set ephemeral builder container creation to a fixed date
This commit fixes the `Created` date and time of the ephemeral builder
container image at the Windows epoch plus one second
(1980-01-01T00:00:01Z). This date matches the created date of the builder
image and influences the created date of the resulting image. Using
a fixed date for images ensures that the digest is consistent for all
images with the same version.

Fixes gh-20126
5 years ago
Scott Frederick 191dce3f5e Set Spring Boot version in ephemeral builder
This commit adds a `createdBy` structure to the metadata of the ephemeral
builder container image that identifies Spring Boot as the creator of the
image, along with the Spring Boot version.

See gh-20126
5 years ago
dreis2211 cfc16c2589 Remove redundant jar task configuration
See gh-20113
5 years ago
Stephane Nicoll 3229142188 Merge branch '2.2.x'
Closes gh-20121
5 years ago
Stephane Nicoll 765b2178d1 Document spring-boot.run.arguments behaviour with multiple arguments
Closes gh-19998
5 years ago
Madhura Bhave ec42dcd173 Fix typo 5 years ago
Scott Frederick 12c640e133 Upgrade default image builder version
This commit upgrades the default CNB builder image from
cloudfoundry/cnb:0.0.43-bionic to cloudfoundry/cnb:0.0.53-bionic.
It also adds integration tests for the Maven and Gradle plugins
to verify both versions are supported.
5 years ago
Scott Frederick d07062652e Add support for CNB platform API v0.2
Cloud Native Buildpacks platform API version 0.2 introduced
two breaking changes: the order of invoking the restore and analyze
phases was reversed, and the cache phase was removed in favor of
distributing caching across other phases.

This commit adds support for Cloud Native Buildpacks builders that
implement platform API version 0.2, while maintaining compatibility
with builders that implement Lifecycle version platform API
version 0.1.

Closes gh-19829
5 years ago
Johnny Lim 6818279751 Fix typo
See gh-20049
5 years ago
dreis2211 268f696d19 Add missing deployed plugin to modules
This commit registers 'org.springframework.boot.deployed' to
spring-boot-configuration-metadata and spring-boot-properties-migrator
to make sure they are deployed as expected.

See gh-20051
5 years ago
Andy Wilkinson 5c2b28cb57 Merge branch '2.2.x'
Closes gh-20043
5 years ago
Andy Wilkinson b6a408ae77 Upgrade to Spring Asciidoctor Extensions 0.4.0.RELEASE
Closes gh-20041
5 years ago
Stephane Nicoll b5e23e7405 Update copyright year of changed files
See gh-20020
5 years ago
Johnny Lim b67ece48e4 Polish
See gh-20020
5 years ago
dreis2211 e4a95a8047 Upgrade to Ivy 2.5.0
See gh-20022
5 years ago
dreis2211 326092b69e Upgrade to Ant 1.10.7
See gh-20002
5 years ago
Andy Wilkinson bca98c5126 Use a RegularFileProperty to configure BootBuildImage's input jar
Closes gh-20010
5 years ago
Johnny Lim e6d5f5a271 Polish
See gh-19995
5 years ago
Phillip Webb cbacab5e26 Polish 5 years ago
Phillip Webb 1eee83a07e Update copyright year of changed files 5 years ago
Phillip Webb 234c5033d4 Polish whitespace 5 years ago
Scott Frederick 653cabe2ce Add documentation for gradle bootBuildImage task 5 years ago
Madhura Bhave bceed1305f Jar files added after build time should be added to classpath
Fixes gh-19973
5 years ago
Scott Frederick b281af0b9b Remove adding of existing layers to EphemeralBuilder
Layers were being added to the EphemeralBuilder each time one was
created, but those layers already existed in the base builder image.

Closes gh-19832
5 years ago
Andy Wilkinson 7b0d1eaffc Test the Gradle Plugin against Gradle 6.1.1
Closes gh-19912
5 years ago
Andy Wilkinson 2725264be1 Polishing formatting of DockerApi 5 years ago
Andy Wilkinson 28442b5ca5 Lower the minimum required Docker API version to 1.24
Closes gh-19945
5 years ago
Andy Wilkinson 54b3f480b4 Use posix long names when creating tar archive for image building
Fixes gh-19964
5 years ago
Scott Frederick c6a6024062 Stop image building on error from builder
Previously, the image builder used by the build tool plugins ignored
errors from lifecycle phases and continued with subsequent phases.

This commit inspects the status of the builder container after each
lifecycle phase and aborts the image building process if the exit
status of the container after any phase is non-zero.

Fixes #19949
5 years ago
dreis2211 d8e2349e47 Use Supplier variants of Assert
See gh-19864
5 years ago
Stephane Nicoll 9fbaf7611b Merge branch '2.2.x'
Closes gh-19966
5 years ago
Stephane Nicoll b420bdb3ac Merge branch '2.1.x' into 2.2.x
Closes gh-19965
5 years ago
dreis2211 db2bacc62a Fix Gradle plugin documentation links
See gh-19961
5 years ago
dreis2211 741a4f4b2b Fix links in Maven Plugin documentation
See gh-19952
5 years ago
Stephane Nicoll 5410148f79 Improve documentation of 'image' parameter of Maven Plugin
Closes gh-19950
5 years ago
Stephane Nicoll 11c5fba355 Remove unnecessary execution-specific configuration in documentation
This documentation moves the specific `build-image` execution
configuration example of the Maven plugin documentation to the general
plugin configuration. This makes sure that it works in most cases and
an execution-specific configuration is not required here anyway.

Closes gh-19946
5 years ago
Stephane Nicoll 07a1783572 Polish "Introduce appendix section with version properties"
See gh-19898
5 years ago
dreis2211 65394582f6 Introduce appendix section with version properties
With the introduction of Gradle we lost the list of version properties
that were previously in the spring-boot-dependencies POM and were also
linked inside the documentation. This commit introduces an appendix
section in the docs and links the appropriate places to the new section
to restore discoverability.

See gh-19898
5 years ago
Andy Wilkinson 63b736d1f0 Fix NPE when waiting for named socket path to become available
Fixes gh-19941
5 years ago
Stephane Nicoll 3290313eb7 Fix Docker socket creation on Windows
Closes gh-19908
5 years ago
dreis2211 d75de39456 Upgrade to JUnit Jupiter 5.6.0
See gh-19907
5 years ago
Madhura Bhave 1d62debf11 Fix typo 5 years ago
Stephane Nicoll 0bd03fa278 Fix xml syntax in example
Closes gh-19906
5 years ago
dreis2211 d84ca1149c Test the Gradle Plugin against Gradle 6.1
See gh-19776
5 years ago
Andy Wilkinson cbee16318f Fix version references in Maven Plugin's reference documentation
Closes gh-19878
5 years ago
Stephane Nicoll 331ebe90e0 Restore @since on build-image parameters 5 years ago
Stephane Nicoll 63019ab3f1 Add documentation for Maven plugin's build-image support
Closes gh-19830
5 years ago
Stephane Nicoll 6df5e7af4f Add integration tests for Maven plugin's build-image support
See gh-19830
5 years ago
Andy Wilkinson 0a9fe65443 Use line endings on all OSs when writing image config JSON
Previously \r\n was used on Windows and \n was used on other
platforms. This resulted in different JSON content being written to
the archive. As the config's entry name is the SHA-256 hash of its
content, it also resulted in the entry name being different.

This commit updates the JSON that's written into the archive to use
\n line endings, irrespective of the OS on which the image is being
built.

See gh-19828
5 years ago
Andy Wilkinson a0b4cdee44 Make line ending expectations in TotalProgressBarTests OS-independent
See gh-19828
5 years ago
Andy Wilkinson 1d396abec5 Fix bootBuildImage integration tests on Java 13
We build with Java 8, 11, and 13 without specifying target
compatibility for the bytecode of the app that's placed in the image.
The built image uses Java 11 and when the app is built with Java 13
it fails to start as the Java 11 VM can't read that Java 13 bytecode.

This commit configures the app that's placed in the image to be built
with target compatibility of 1.8. This allows it to be compiled with
all version of Java with which we build and to also be compatible
with the JVM that's in the image.

See gh-19831
5 years ago
Stephane Nicoll 105db66553 Polish 5 years ago
Stephane Nicoll e044817fe7 Migrate remaining use of ClassLoader.loadClass to Class.forName
Closes gh-19824
5 years ago
Andy Wilkinson 01a0a54f78 Include layertools in layered jars build with Gradle
Closes gh-19867
5 years ago
Andy Wilkinson 288f5ceaee Fix zip compression of libs in layered jars
Closes gh-19792
5 years ago
Andy Wilkinson 0bd0b2a6c0 Add support for building OCI images using the Gradle plugin
Closes gh-19831
5 years ago
Andy Wilkinson bc452bc094 Polish BootJarTests
See gh-19847
See gh-19792
5 years ago
Stephane Nicoll 95be419527 Use Class.forName rather than ClassLoader.loadClass
This commit changes uses of ClassLoader.loadClass to Class.forName for
consistency with what was initiated in #19342 and better compatibility
with GraalVM.

Closes gh-19824
5 years ago
Phillip Webb b5b4a02c61 Automatically add jarmode jars when packaging
Update the `Packager` to automatically add the layertools jarmode jar
when producing a layered jar.

Closes gh-19865
5 years ago
Phillip Webb 2b83edeb27 Fix jarmode support in unexploded jars
Update `LaunchedURLClassLoader` to ensure that the `JarModeLauncher`
is created in the correct classloader.

Prior to this commit the launcher was created by the application
classloader and did not have access to any of the required
`org.springframework` classes.

See gh-19848
5 years ago
Phillip Webb 57db621b70 Polish 5 years ago
Phillip Webb 77bbe089b2 Update copyright year of changed files 5 years ago
Phillip Webb 71ce212f7f Rename spring-boot-layertools
Rename `spring-boot-layertools` to `spring-boot-jarmode-layertools`.

Closes gh-19853
5 years ago
Madhura Bhave 13f7db2d8c Write classpath index file from Gradle plugin
Closes gh-19847
5 years ago
Phillip Webb e0013454b5 Use parentheses when declaring dependencies
Update all dependencies declarations to use the form `scope(reference)`
rather than `scope reference`.

Prior to this commit we declared dependencies without parentheses unless
we were forced to add them due to an `exclude`.
5 years ago
Phillip Webb 0209cd3e4c Polish quote form used in Gradle scripts
Replace Gradle single quote strings with the double quote form
whenever possible. The change helps to being consistency to the
dependencies section where mostly single quotes were used, but
occasionally double quotes were required due to `${}` references.
5 years ago
Madhura Bhave df5b0f1163 Add support for layered jars in gradle plugin
Closes gh-19792

Co-authored-by: Andy Wilkinson <awilkinson@pivotal.io>
5 years ago
Phillip Webb 951d0b0fdf Fix exploded jar classloader issues
Fix a bug in `ExplodedURLClassLoader` and merge the code into the
existing `LaunchedURLClassLoader` class. Also polish a few method
names relating to layer support.

See gh-19848
See gh-19767
5 years ago
Phillip Webb e28338d6cd Rename spring-boot-cloudnativebuildpack
Rename the `spring-boot-cloudnativebuildpack` module to
`spring-boot-buildpack-platform` and update the the package
name to `org.springframework.boot.buildpack.platform`.

Closes gh-19851
5 years ago
dreis2211 23e87f8266 Treat Java 11+'s NoSuchFileException the same as FileNotFoundException
See gh-19850
5 years ago
Phillip Webb e513fe4666 Add layertools jarmode
Add a new `spring-boot-layertools` module which provides jarmode support
for working with layers. The module works with both classic fat jars,
as well as layered jars.

Closes gh-19849
5 years ago
Phillip Webb 73a42050d6 Add jarmode support to the loader code
Update the `Launcher` class to allow a packaged jar to be  launched in
a different mode. The launcher now checks for a `jarmode` property and
attempts to find a `JarMode` implementation using the standard
`spring.factories` mechanism.

Closes gh-19848
5 years ago
Phillip Webb d5a70688cb Reserve layer names for future use
Update layered jar support so that the name `ext` and any name
starting `springboot` are reserved.

See gh-19767
5 years ago
Phillip Webb 7d8f8d47c8 Fix packager code to generate layer index file
Update `Packager` to create the layer index file when repackaging.

Closes gh-19767
5 years ago
Phillip Webb bfd2ca7fd9 Polish Gradle expression references
Expand all expression `$` references to the full `${...}` form.
5 years ago
Andy Wilkinson 89237634c7 Fix classpath used for Gradle Plugin integration tests in Eclipse
See gh-19841
5 years ago
Andy Wilkinson 1e72fa202c Rework loader-tools resource generation to work with Buildship
Previously, the generated resources were added as an output to the
main source set. This worked on the command line, but resulted in
the META-INF folder that contains the loader jar not being on the
classpath of downstream projects in Eclipse.

This commit changes loader-tools to add the generated resources
as a srcDir to the main source set. This results in it appearing on
the classpath of other projects in Eclipse that depend on loader-tools
such as the Gradle plugin, thereby allowing its tests to be run in
the IDE as well as on the command line.

Fixes gh-19841
5 years ago
Andy Wilkinson 62a848f1b1 Register JNA's native library integration in LinuxSocketDomain
See gh-19836
5 years ago
Stephane Nicoll d421c63747 Disable integration test on Linux
See gh-19836
5 years ago
Stephane Nicoll ffd7670843 Attempt to make DockerApiIntegrationTests work on Linux 5 years ago
Phillip Webb cb4928ad51 Add build-image support to the maven plugin
Add a new `build-image` goal to the Maven plugin to allow Docker images
to be create via using the cloud native buildpack.

See gh-19830
5 years ago
Phillip Webb 16e6bc89ed Create a new ImagePackager tools class
Pull functionality from `Repackager` into a new `Packager` base class
and develop a variant for Docker image creation. The new `ImagePackager`
class provides a general purpose way to construct jar entries without
being tied to an actual file. This will allow us to link it to a
buildpack and provide application content directly.

Closes gh-19834
5 years ago
Phillip Webb aa1954717c Add cloud native buildpack module
Add a Java implementation of the buildpacks.io specification allowing
projects to be packaged into OCI containers. The `builder` class
provides a Java equivalent of `pack build` command and is based on
the `pack` CLI Go code published at https://github.com/buildpacks/pack.

Closes gh-19828
5 years ago
Andy Wilkinson 408f17f821 Close FileInputStreams in RepackagerTests 5 years ago
Andy Wilkinson 724597d45f Use a centrally managed version for commons-compress 5 years ago
Phillip Webb fd792cedaf Polish DisabledIfDockerUnavailable
Convert `DisabledIfDockerUnavailable` to be an annotation and make
it slightly less noisy.
5 years ago
Madhura Bhave cf01f9fba0 Add tests for configuring layered jar layout
Closes gh-19768
5 years ago
Scott Frederick 8f102aee68 Remove deprecated 2.2 code
See gh-19699
5 years ago
Andy Wilkinson 9d5975bd09 Upgrade to Gradle 6.1
Closes gh-19772
5 years ago
Phillip Webb 8fde088574 Add layered jar layout support to the maven plugin
Update the Maven plugin with a new `LAYERED_JAR` layout option.

See gh-19768
5 years ago
Madhura Bhave e9d61bac75 Support generation and loading of layered jars
Support an alternative fat jar format that is more amenable to Docker
image layers.

The new format arranges files in the following structure:

	BOOT-INF/
	  layers/
	    <layer-name #1>
	      /classes
	      /lib
	    <layer-name #2>
	      /classes
	      /lib

The `BOOT-INF/layers.idx` file provides the names of the layers and the
order in which they should be added (starting with the least changed).

The `JarLauncher` class can load layered jars in both fat and exploded
forms.

Closes gh-19767

Co-authored-by: Phillip Webb <pwebb@pivotal.io>
5 years ago
Madhura Bhave 45b1ab46c3 Add classpath index support for exploded archives
Update the `Repackager` class so that an additional `classpath.idx` file
is written into the jar that provides the original order of the
classpath. The `JarLauncher` class now uses this file when running as
an exploded archive to ensure that the classpath order is the same as
when running from the far jar.

Closes gh-9128

Co-authored-by: Phillip Webb <pwebb@pivotal.io>
5 years ago
Phillip Webb ad72f86bdb Polish loader and loader-tools
Polish and refactor `spring-boot-loader` and `spring-boot-loader-tools`
to make it easier to add indexing and layering support.

Closes gh-19766
5 years ago
Andy Wilkinson 56e30258fb Merge branch '2.2.x' 5 years ago
Andy Wilkinson b7e250eb04 Merge branch '2.1.x' into 2.2.x 5 years ago
Andy Wilkinson ebebe09a9d Fix file handle leak in JarFileTests
The JarFile was not being closed which linked a file handle and caused
a test failure on Windows.

The local variable has been renamed as, when declared in a
try-with-resources, Checkstyle was confused by the shadowing of the
jarFile field and required references to jarFile within the try-block
the be prefixed with this.

See gh-19595
5 years ago
Andy Wilkinson 714a187d8f Rework dep mgmt again to avoid consumers picking up strict constraints
This paves the way for publishing Gradle module metadata once the
problem caused by snapshot versions and our two-step publication
process has been addressed.

See gh-19609
5 years ago
Madhura Bhave aae1151f12 Merge branch '2.2.x'
Closes gh-19714
5 years ago
Madhura Bhave 3bf943d597 Merge branch '2.1.x' into 2.2.x
Closes gh-19713
5 years ago
Madhura Bhave f375277026 Merge pull request #19595 from nosan
* pr/19595:
  Polish "Limit ChronoField values to their range"
  Limit ChronoField values to their range

Closes gh-19595
5 years ago
Madhura Bhave 91e459a5d4 Polish "Limit ChronoField values to their range"
See gh-19595
5 years ago
Dmytro Nosan 9bc68b9877 Limit ChronoField values to their range
See gh-19595
5 years ago
Andy Wilkinson 244b5391bc Fix file handle leak in JarFileArchiveTests
Closes gh-19655
5 years ago
Andy Wilkinson aefe52e4d0 Revert "Rework dep management to avoid consumers picking up strict constraints"
This reverts commit b34a311d02 as,
having disabled the publishing of Gradle's module metadata (4f75ab5),
the changes are no longer needed.

See gh-19609
5 years ago
Phillip Webb 862462b791 Update copyright year of changed files 5 years ago
Phillip Webb f57281340c Merge branch '2.2.x' 5 years ago
Phillip Webb 3cfbfebbb1 Merge branch '2.1.x' into 2.2.x 5 years ago
Phillip Webb 9bd49562fe Update copyright year of changed files 5 years ago
Andy Wilkinson b34a311d02 Rework dep management to avoid consumers picking up strict constraints
Previously, enforcedPlatform dependencies were using to pull in the
constraints defined in spring-boot-dependencies and
spring-boot-parent and applied them strictly so that the constrained
version had to be used. This worked as intended in Spring Boot's own
build but incorrectly enforced those same strict version requirements
on external consumers of Spring Boot's modules.

This commit reworks how Spring Boot defines its internal dependency
management so that platform dependencies are exposed to external
consumers while enforced platform dependencies are using internally.

See gh-19609
5 years ago
dreis2211 d454c9653c Disable tests on Java 13 that require an incompatible Gradle version
See gh-19680
5 years ago
Stephane Nicoll ca1710ee56 Upgrade to Apache Cassandra 4.3.1
See gh-19588
5 years ago
Andy Wilkinson e415f759a2 Raise the minimum supported version of Gradle to 5.6
Closes gh-18777
5 years ago
Andy Wilkinson c66d2e8039 Relax the Gradle plugin's Kotlin version constraint
Enforcing the spring-boot-dependencies platform makes for too strong
an opinion about the version of Kotlin that should be on the build
script's classpath. It clashes with the version of Kotlin that's
embedded in Gradle and used with Gradle's Kotlin DSL.

This commit switches to a normal platform (rather than an enforced
platform) which allows it to express an opinion about the version of
Kotlin without making it a strict requirement.

Closes gh-19609
5 years ago
Andy Wilkinson 7fda317f0d Merge branch '2.1.x' into 2.2.x
Closes gh-19657
5 years ago
Andy Wilkinson 617ebaf3c0 Isolate Gradle Plugin build from other Gradle configuration
Closes gh-19656
5 years ago
Brian Clozel e0171a5da8 Polish 5 years ago
Andy Wilkinson b5ae8b0af5 Disable tests that use Docker when Docker is unavailable
Closes gh-19616
5 years ago
Andy Wilkinson ce99db1902 Port the build to Gradle
Closes gh-19609
Closes gh-19608
5 years ago
Andy Wilkinson bdffa860d9 Increase startup timeout for Docker containers
Closes gh-19569
5 years ago
Andy Wilkinson 30c124f549 Merge branch '2.2.x'
Closes gh-19554
5 years ago
Andy Wilkinson c57359ea3b Merge branch '2.1.x' into 2.2.x
Closes gh-19553
5 years ago
Andy Wilkinson d46406fcb9 Remove loading of non-existent properties file from antlib
Fixes gh-19552
5 years ago
Johnny Lim e4057dd528 Polish
See gh-19484
5 years ago
Stephane Nicoll e7f45d8a34 Polish "Add toolchains support for Spring Boot Maven Plugin"
See gh-18732
5 years ago
Dmytro Nosan eede16ff0a Add toolchains support for Spring Boot Maven Plugin
See gh-18732
5 years ago
Stephane Nicoll a2b2b46b83 Merge branch '2.2.x'
Closes gh-19463
5 years ago
Stephane Nicoll 6c016663fd Polish contribution
See gh-18711
5 years ago
Dmytro Nosan 1fb904acee Support commas embedded in command line arguments from Maven plugin
See gh-18711
5 years ago
Stephane Nicoll 2c1e81adf0 Polish 5 years ago
Stephane Nicoll 065fe9996d Merge branch '2.2.x'
Closes gh-19454
5 years ago
Stephane Nicoll ee98855905 Merge branch '2.1.x' into 2.2.x
Closes gh-19453
5 years ago
Stephane Nicoll 5dc6491807 Clarify documentation of repackage mojo's attach property
Closes gh-19021
5 years ago
Stephane Nicoll 6d9c176e19 Merge branch '2.2.x'
Closes gh-19441
5 years ago
Stephane Nicoll b3643965f0 Polish "Detect config props using builder pattern and generics"
See gh-19099
5 years ago
如梦技术 743f4a4cb1 Detect config props using builder pattern and generics
See gh-19099
5 years ago
Phillip Webb 93d9147864 Add deprecation documentation to Archive.iterator
See gh-16655
5 years ago
Andy Wilkinson ef2eb2f652 Remove accidental usage of Plexus's CollectionUtils
See gh-16655 and 8f5777cf
5 years ago
Phillip Webb 1b1c61a2ed Make processor output fully reproducible
Update `AutoConfigureAnnotationProcessor` to ensure that the generated
properties file is fully repeatable. Properties are now sorted and
written out directly to ensure that the timestamp comment is not
present.

Closes gh-19370
5 years ago
Phillip Webb 2fc12bc36c Merge branch '2.2.x' 5 years ago
Phillip Webb 26ff18f37d Merge branch '2.1.x' into 2.2.x 5 years ago
Phillip Webb accd830dd5 Update copyright header of changed files 5 years ago
dreis2211 3be05f61e1 Fix unknown tag in javadoc
See gh-19364
5 years ago
Madhura Bhave 8f5777cf9e Optimize JarLauncher when used with exploded jar
- Previously, we would create a JarFileArchive for all nested jars.
This was an additional overhead. We only need to create a JarFileArchive
for jars that can have nested jars in them. For all other jars we only need
the URL to build the classpath.
- While iterating over nested entries in the exploded jar, we only need to
look at BOOT-INF and we can skip any entry that does not match that.

Closes gh-16655

Co-authored-by: Phillip Webb <pwebb@pivotal.io>
5 years ago
Andy Wilkinson ab4e1c465f Merge branch '2.2.x'
See gh-19288
5 years ago
Andy Wilkinson 47b47c28a0 Reduce visibility of the Gradle plugin's test methods
See gh-19287
5 years ago
Andy Wilkinson f731c92b66 Merge branch '2.2.x' 5 years ago
Andy Wilkinson 76f03a8cad Fix reflective access to archiveBaseName property
Previously, reflective access to the archiveBaseName property
incorrectly treated the property as a String. It should have been
treated as a Property<String>. This caused an exception to be thrown
and the deprecated baseName property to be used as a fallback.

This commit corrects the reflective access to the archiveBaseName
property. It also updates the tests to fail if a build outputs a
deprecation warning. Tests that use Gradle's Maven plugin have been
updated to expect deprecation warnings when run with Gradle 6.0 where
the plugin is deprecated. Tests that configure an archive's base name
have been updated to use archiveBaseName when running with Gradle 6.0
and later.

Closes gh-18663
5 years ago
dreis2211 60640ea185 Fix link in new Maven Plugin docs
See gh-19108
5 years ago
Stephane Nicoll a76a864270 Polish "Replace the Maven Plugin's site with Asciidoctor documentation"
See gh-19080
5 years ago
Stephane Nicoll 30863eb041 Merge branch '2.2.x'
Closes gh-19088
5 years ago
dreis2211 347434ba81 Test the Gradle Plugin against Gradle 6.0.1
See gh-19065
5 years ago
Andy Wilkinson 3e2454f8c4 Replace the Maven Plugin's site with Asciidoctor documentation
Closes gh-19080

Co-authored-by: Stephane Nicoll <snicoll@pivotal.io>
5 years ago
Johnny Lim 96a029e44f Polish a test name
See gh-18999
5 years ago
Andy Wilkinson 379ba0dc00 Support Gradle 6.0
Previously, our Gradle plugin was not tested against Gradle 6.0,
a number of deprecation warnings were output when using the plugin
with Gradle 6, and some functionality related to the application
plugin did not work as expected.

This commit tests the plugin against Gradle 6. It also avoids calling
deprecated APIs. The plugin is compatibile against Gradle 4.10 where
the deprecated APIs' replacements are not available so reflection is
used to call the replcaements. Lastly, the way in which the base name
of the boot distribution that is created when the application plugin
is applied has been modified to ensure that it is effective when using
Gradle 6.

Closes gh-18663
5 years ago
Andy Wilkinson fc3f6a930d Merge branch '2.1.x' into 2.2.x
Closes gh-18940
5 years ago
Andy Wilkinson 5765cfe010 Allow 5 seconds for child to handle SIGINT before destroying it
Previously, when RunProcess handled a SIGINT it would immediately
attempt to destroy the process that it had run. This created a race
condition between the SIGINT being handled by the child process
and RunProcess destroying the child. The exact behavior of destroy
is implementation dependent and it may result in forcible termination
of the process where shutdown hooks are not called. This is what
happens on Windows. The exit code in such a case is 1 which prevents
anything from waiting for the process to complete from detecting
that it ended as a result of a SIGINT, leaving it with no choice but
to report an error. This is what happens with mvn spring-boot:run
with a forked process on Windows and results in the build failing.

This commit updates RunProcess to allow the child process to handle
the SIGINT itself, waiting for up to five seconds for that to happen
before the process is then destroyed. Given this time, the child
process exits with 130 which RunMojo already handles correctly as
indicating that the process died due to SIGINT and the build completes
with success as a result.

Fixes gh-18936
5 years ago
Johnny Lim ea51947741 Use try-with-resources blocks in JarFileArchiveTests
See gh-18883
5 years ago
Andy Wilkinson f1af8c5510 Merge branch '2.1.x'
Closes gh-18889
5 years ago
Andy Wilkinson 59bc3c5602 Prevent recursive config props from causing a stack overflow
Previously, when the configuration properties annotation processor
encountered a property that was the same as an outer type that had
already been processed, it would fail with a stack overflow error.

This commit introduces the use of a stack to track the types that
have been processed. Types that have been seen before are skipped,
thereby preventing a failure from occurring. We do not fail upon
encountering a recursive type to allow metadata generation to
complete. At runtime, the recursive property will not cause a problem
if it is not bound.

Fixes gh-18365
5 years ago
Stephane Nicoll b951e70d18 Merge branch '2.1.x'
Closes gh-18850
5 years ago
dreis2211 8955d5c1b5 Test the Gradle Plugin against Gradle 5.6.4
See gh-18845
5 years ago
Johnny Lim 45d85778b8 Polish
See gh-18838
5 years ago
Stephane Nicoll d6d32ec01d Polish 5 years ago
Alessandro Falappa 2c199b1296 Make optimizedLaunch property name more consistent
See gh-18702
5 years ago
Phillip Webb 83d4d94e8b Cache ModifiedClassPathClassLoaders
Closes gh-18694
5 years ago
Phillip Webb 8d08d654d1 Merge branch '2.1.x'
Closes gh-18693
5 years ago
Stephane Nicoll c05f88bf78 Polish "Add missing package-info files"
See gh-18632
5 years ago
Leo Li af114c93ee Add missing package-info files
See gh-18632
5 years ago
Andy Wilkinson 03f5791860 Merge branch '2.1.x'
Closes gh-18650
5 years ago
dreis2211 d17f11dbe1 Test the Gradle Plugin against Gradle 5.6.3
See gh-18648
5 years ago
Johnny Lim 137538f415 Remove accidental JavaVersion.current() call in BootRun
It was added accidentally in d2b28ceb.

See gh-18619
5 years ago
Stephane Nicoll 8108b556ad Fix resource cleanup in test
Closes gh-18569
5 years ago
Andy Wilkinson 9a89039172 Provide a marker artifact for Boot's Gradle plugin
Closes gh-18514
5 years ago
Kant Leung 2f73e196af Polish
See gh-18534
5 years ago
Phillip Webb 61873fbf42 Don't generate @Configuration metadata
Update `AutoConfigureAnnotationProcessor` to no longer store
`@Configuration.value` in the meta-data JSON since we never actually
read it.

Closes gh-16608
5 years ago
Phillip Webb 386c0a60a7 Relax @ConstructorBinding member class requirement
Update `@ConfigurationProperties` so that `@ConstructorBinding` classes
no longer need to repeat the annotation for their members.

Closes gh-18481
5 years ago
Stephane Nicoll 45f6668d03 Use @ConstructorBinding when generating meta-data
Update the configuration processor to use the newly introduced
`@ConstructorBinding` annotation to determine when meta data
should be generated from constructor parameters.

Prior to this commit, the processor had no good way to tell when
constructor parameters should be used instead of getters/setters.

Closes gh-17035
5 years ago
Andy Wilkinson 9e514ab7f9 Provide plugin release repository for Asciidoctor Extensions
See b5069a4f8a
5 years ago
Andy Wilkinson 46c30d6bb0 Merge branch '2.1.x'
Closes gh-18476
5 years ago
Andy Wilkinson 3d4157ad6d Correct SCM URLs in published poms
Previously, Maven's default behaviour was relied up which resulted
in the artifact ID being appended to each URL as it was inherited.
This behaviour can only be disabled in Maven 3.6 and later, a version
that we cannot use due to an incompatibility with the Flatten Plugin.

This commit works around Maven's default behaviour by defining
properties for the SCM URL, connection, and developer connection and
then explicitly defining the settings in each pom using these
properties. The explicit definition of the properties in each pom
prevents them being inherited from the parent, thereby disabling the
unwanted appending of the artifact ID to the URL.

Fixes gh-18328
5 years ago
Andy Wilkinson ed29eea365 Align Spring Asciidoctor Extension dependency with new module names 5 years ago
Stephane Nicoll 852b369ce1 Revert to fixed version 5 years ago
Andy Wilkinson a6f1619971 Use Asciidoctor extension to verify documented configuration properties
Closes gh-18451
5 years ago
Stephane Nicoll e0d6d90683 Merge branch '2.1.x'
Closes gh-18447
5 years ago
dreis2211 417bfc4c87 Fix comment position in ZipHeaderPeekInputStreamTests
See gh-18445
5 years ago
dreis2211 370998e91e Simplify pipe escaping for reference doc tables
Replace `{vbar}` with an escaped pipe character. Unfortunately
`{vbar}` does not render correctly with PDF generation.

See gh-18374
5 years ago
dreis2211 8a6e254465 Avoid need to escape pipe character in reference tables 5 years ago
Phillip Webb a13666d696 Polish "Simplify code"
See gh-18342
5 years ago
Yuyan 4d0da4b700 Simplify code
See gh-18342
5 years ago
Brian Clozel eeaa9bc6c1 Fix ref docs code snippet theme
This commit also fixes a link in the reference documentation.

See gh-18293
5 years ago
Andy Wilkinson 79b5fd9d73 Polish "Allow the user that runs the app to be specified via an env var"
See gh-16973
5 years ago
Wagner Macedo b57f35893c Allow the user that runs the app to be specified via an env var
See gh-16973
5 years ago
Phillip Webb 838e7eb605 Extract spring-doc-resources URL property
Update the build to use a shared spring-doc-resources URL
rather than repeating it multiple times.

See gh-18293
5 years ago
Andy Wilkinson 02ac089767 Polish "Support zip64 jars"
See gh-16091
5 years ago
Camille Vienot 1917e1eac5 Support zip64 jars
See gh-16091
5 years ago
Andy Wilkinson d5fc324537 Upgrade to Asciidoctor Maven Plugin 1.6.0
Closes gh-17234
5 years ago
Andy Wilkinson 7d3e53c94c Fix test expectations for run-fork JVM args on Java 13+
Closes gh-17008
5 years ago
Andy Wilkinson d2b28ceba5 Don't add -Xverify:none to JVM args when running on Java 13
Closes gh-17008
5 years ago
Andy Wilkinson 1b237de5f5 Use Awaitility in our own tests
Closes gh-18227
5 years ago
Johnny Lim 5b41c3b608 Polish
See gh-18192
5 years ago
Stephane Nicoll 39fed4a9d9 Fix binding detection of ConfigurationProperties contributed by @Bean
This commit makes sure that a ConfigurationProperties type contributed
by a `@Bean` factory method uses properties binding regardless of the
presence of a matching constructor.

`@Bean` method makes sure the user is in control and will be responsible
of creating the instance. As a result, binding of properties will not
happen there and therefore can only happen with regular JavaBean
accessors.

Closes gh-18184
5 years ago
Andy Wilkinson 0c0e2dd54b Merge branch '2.1.x'
Closes gh-18186
5 years ago
Andy Wilkinson 7b1e10ed00 Use one sentence per line in Actuator and Gradle plugin doc source
Closes gh-18185
5 years ago
Andy Wilkinson ff1983c9ae Merge branch '2.1.x'
Closes gh-18168
5 years ago
Andy Wilkinson 795c2f225f Support getComment() on a nested JarFile
Previously, calling getComment() on a nested jar file would result
in the outer jar file's comment being returned.

This commit updates the loader's JarFile to read the file's comment
from the central directory end record and return it from getComment().

Fixes gh-18128
5 years ago
Andy Wilkinson fc1889ee72 Merge branch '2.1.x'
Closes gh-18167
5 years ago
dreis2211 ae30515e5e Test the Gradle Plugin against Gradle 5.6.2
See gh-18164
5 years ago
Andy Wilkinson 4b5ebd8505 Process all non-private methods, not just public methods
Previously, the configuration processor would ignore any
@ConfigurationProperties-annotated methods that were not public. This
prevented metadata generation for package-private @Bean methods such
as those in DataSourceConfiguration's inner-classes for DBCP2, Hikari,
and Tomcat JDBC.

This commit updates the annotation processor so that it will process
any non-private method annotated with @ConfigurationProperties.

Fixes gh-18124
5 years ago
Andy Wilkinson 29080b87ec Protect autoconfigure module against slow starting test containers 5 years ago
dreis2211 07b857e57a Use disabledWithoutDocker option for @Testcontainers
See gh-18095
5 years ago
dreis2211 b4350a9d96 Remove unnecessary blank lines
See gh-18089
5 years ago
Andy Wilkinson a4b8d2401f Merge branch '2.1.x'
Closes gh-18094
5 years ago
Andy Wilkinson abba4fa9c9 Include exception's message in message printed by AP
Fixes gh-17974
5 years ago
Andy Wilkinson b463acb10f Merge branch '2.1.x'
Closes gh-18093
5 years ago
Andy Wilkinson edcaee375f Consider @Deprecated on field when determining property's deprecation
Fixes gh-17550
5 years ago
dreis2211 3e35a6616c Fix duplicated words
See gh-18004
5 years ago
Andy Wilkinson 7f8b3a7b86 Test the Gradle Plugin against Gradle 5.6.1
Closes gh-17995
5 years ago
dreis2211 26a22fa523 Test the Gradle Plugin against Gradle 5.6.1
See gh-17984

Closes gh-17984
5 years ago
Stephane Nicoll b57db504df Fix broken build due to Kotlin upgrade 5 years ago
Andy Wilkinson ab87b2a39b Polish 5 years ago
thelproad 9c1f503e46 Simplify if statements
See gh-17884
5 years ago
dreis2211 d4affd7f85 Use hasSize() assertion in favor of length checks
See gh-17874
5 years ago
Andy Wilkinson a785a5b58a Test the Gradle Plugin against Gradle 5.6
Closes gh-17883
5 years ago
dreis2211 56940fca97 Test the Gradle Plugin against Gradle 5.6
See gh-17876
5 years ago
dreis2211 b605cddb10 Polish some Collections API calls
See gh-17825
5 years ago
Madhura Bhave 8a9c60a29a Merge branch '2.1.x' 5 years ago
Madhura Bhave 541d3c4853 Fix typo 5 years ago
Stephane Nicoll 07cd67a3fe Tolerate null startTime
This commit prevents a potential NPE if the startTime of the
MavenSession is not available and fallbacks to the current time. This
can happen when invoking the plugin with Maven embedded in an IDE.

Closes gh-17810
5 years ago
Stephane Nicoll 1c8f727864 Polish "Simplify if statements"
See gh-17785
5 years ago
SaberXu c6c3a91f8d Simplify if statements
See gh-17785
5 years ago
Phillip Webb 2cdceb92bf Polish 5 years ago
Phillip Webb da4f436140 Change SearchStrategy EXHAUSTIVE to TYPE_HIERARCHY
Fixup references following upstream Spring Framework change.
5 years ago
Stephane Nicoll 5926547767 Merge branch '2.1.x'
Closes gh-17745
5 years ago
Stephane Nicoll 0c560795fd Harmonize settings.gradle documentation in Gradle getting started guide
See gh-17736
5 years ago
Dave Syer e7b0450a7f Add missing repositories to snapshot configuration
See gh-17736
5 years ago
Stephane Nicoll f68c7a751f Polish "Escape reserved asciidoc character in generated documentation"
See gh-17663
5 years ago
vivganes b0fa58e861 Escape reserved asciidoc character in generated documentation
See gh-17663
5 years ago
Phillip Webb 8bc780762a Merge branch '2.1.x' 5 years ago
Phillip Webb fb1dd8fe93 Merge branch '2.0.x' into 2.1.x 5 years ago
Phillip Webb 913e831f4e Merge '1.5.x' into 2.0.x 5 years ago
Stephane Nicoll f3a138da16 Skip Gradle Plugin test when building with JDK 13
See gh-16970
5 years ago
Stephane Nicoll 19eaf86efa Update multi release test jar to include Java 12
See gh-16970
5 years ago
Johnny Lim 8f8b0b493e Remove println invocations in tests
See gh-17592
5 years ago
Andy Wilkinson 41957ec2ad Polish "Polish OutputCapture and its JUnit Jupiter extension"
See gh-17049
5 years ago
Stephane Nicoll 4ce9c6edb3 Polish "Make layout parameter available as a user property"
See gh-17277
5 years ago
Marc Rohlfs d2e34e6b07 Make layout parameter available as a user property
This commit allows the layout parameter of the Maven repackage goal to
be set from the command line.

See gh-17277
5 years ago
dreis2211 2038fac825 Remove testsupport.assertj package
See gh-17557
5 years ago
Phillip Webb a9ba7080ce Merge branch '2.1.x' 5 years ago
Phillip Webb 30b5ba87ae Merge branch '2.0.x' into 2.1.x 5 years ago
Phillip Webb 74d00354f5 Refine BuildInfoMojo time property
Update `BuildInfoMojo` so that the time property now defaults to
`${session.request.startTime}` rather than the time the Mojo was
created. Also update javadoc to make it clear that any supplied
value will be passed to `Instant.parse`.

See gh-17390
5 years ago
dreis2211 4ec035977b Polish testsupport.junit.platform package
See gh-17524
5 years ago
Phillip Webb eff1147ccc Rename classpath runner package
Remove `runner` since we're no longer tied to JUnit 4.

See gh-17491
5 years ago
Phillip Webb 1117fdb2b3 Make ModifiedClassPathExtension package private
Meta-annotate `ClassPathExclusions` and `ClassPathOverrides` with
so that the `ModifiedClassPathExtension` no longer needs to be
used directly.

See gh-17491
5 years ago
Phillip Webb b6ec1332a0 Polish ModifiedClassPathClassLoader
Remove the `ModifiedClassPathClassLoaderFactory` in favor of
factory methods on `ModifiedClassPathClassLoader`.

See gh-17491
5 years ago
Phillip Webb 4fe5e9e31e Remove direct junit-platform-launcher dependency
Replace any direct `junit-platform-launcher` dependencies and instead
rely on the test runner providing it. Launcher related class are not
handled via reflection.

This update allows us to workaround SUREFIRE-1679.

Closes gh-17517
5 years ago
Phillip Webb 543fcdbbfd Delete internal OutputCaptureRule
Delete our internal `OutputCaptureRule` since we not longer have any
tests using it.
5 years ago
Phillip Webb 13b39cbbbf Delete ModifiedClassPathRunner
Delete `ModifiedClassPathRunner` since we no longer have any tests
that use it.

See gh-17491
5 years ago
Phillip Webb bd81bb90eb Polish ModifiedClassPath support
See gh-17491
5 years ago
dreis2211 2a4c48cb91 Add JUnit 5 ModifiedClassPathExtension
Add a JUnit 5 extension that allows tests to be run with a
modified classpath. Since JUnit 5 does not currently offer a way
to run tests with a different classpath, we instead fake the
original invocation and launch an entirely new run for each
method.

See gh-17491
5 years ago
dreis2211 90d824f6cb Extract ModifiedClassPathClass logic
Extract classes from `ModifiedClassPathRunner` so that they can
be reused.

See gh-17491
5 years ago
Phillip Webb 01933f9b06 Merge previously split strings
Merge some string lines that were previously split because of the
90 chars wide formatting.
5 years ago
Phillip Webb c3816bfe7b Polish output capture names 5 years ago
Phillip Webb cdf43a7489 Polish 5 years ago
Phillip Webb 8d4a2add63 Allow OutputCaptureRule to be used with AssertJ
Update `OutputCaptureRule` so that it now implements
`CapturedOutput` and can be used directly with AssertJ.

Closes gh-17512
5 years ago
Stephane Nicoll 79b29396d0 Merge branch '2.1.x'
Closes gh-17506
5 years ago
dreis2211 e9203a280c Test the Gradle Plugin against Gradle 5.5.1
See gh-17496
5 years ago
Dmytro Nosan 8dd9c6baa1 Allow build.time to be disabled so BuildInfoMojo's output is repeatable
See gh-17390
5 years ago
dreis2211 32549cfc85 Remove folder that only contains package-info
See gh-17471
5 years ago
Andreas Gebhardt ed7cfedb51 Fix JavaDoc within spring-boot-test-support
See gh-17443
5 years ago
Andy Wilkinson bd22ca0268 Polish 5 years ago
Andy Wilkinson 2816635418 Polish 5 years ago
Andy Wilkinson 4b2a116fa7 Use String indexOf(char) and lastIndexOf(char) where possible
Closes gh-11416
5 years ago
Andy Wilkinson aa01bd3890 Polish "Polish GradleCompatibilityExtension's javadoc"
See gh-17411
5 years ago
dreis2211 dc4cc214fe Polish GradleCompatibilityExtension's javadoc
See gh-17411
5 years ago
Andy Wilkinson 9d5fa98334 Merge branch '2.1.x'
Closes gh-17429
5 years ago
Andy Wilkinson 7553b60e68 Test the Gradle Plugin against Gradle 5.5
Closes gh-17428
5 years ago
Phillip Webb a66c4d3096 Unify method visibility of private classes
Apply checkstyle rule to ensure that private and package private
classes do not have unnecessary public methods. Test classes have
also been unified as much as possible to use default scoped
inner-classes.

Closes gh-7316
5 years ago
Andy Wilkinson 6791dbb786 Merge branch '2.1.x'
Closes gh-17381
5 years ago
Andy Wilkinson 4083c721f2 Fix URL normalization when replacing /./ with /
Previously, a regular expression of /./ was used to replace /./ with
/.  The '.'' in the expression matches any single character so the
replacement was more broadly applicable than it should have been. For
example, /a/ would be replaced with /.

This commit uses Pattern.LITERAL to compile the regular expression
from the CURRENT_DIR (/./) contant. This allows the constant to be
used to check for occurances of /./ in the string before attempting
replacement, while also ensuring that the '.' is treated literally.

Closes gh-17341
5 years ago
Andy Wilkinson 1fa48882bb Merge branch '2.1.x'
See gh-17362
5 years ago
Andy Wilkinson f4e7b80651 Merge branch '2.0.x' into 2.1.x
See gh-17361
5 years ago
Andy Wilkinson 761856ac70 Merge branch '1.5.x' into 2.0.x 5 years ago
Phillip Webb 605599138e Merge branch '2.1.x' 5 years ago
Phillip Webb 92bff3c328 Merge branch '2.0.x' into 2.1.x 5 years ago
Phillip Webb cfeb0239b7 Merge branch '1.5.x' into 2.0.x 5 years ago
Madhura Bhave 7e22901bb2 Fail build on unresolved documentation links
Closes gh-12005
5 years ago
Andy Wilkinson 66f1344f7c Merge branch '2.1.x'
Closes gh-17335
Closes gh-17292
5 years ago
Andy Wilkinson 91786bc712 Merge branch '2.0.x' into 2.1.x
Closes gh-17334
5 years ago
Andy Wilkinson 256a0d636d Merge branch '1.5.x' into 2.0.x 5 years ago
Andy Wilkinson 361a9404fd Merge branch '2.1.x'
Closes gh-17321
5 years ago
Andy Wilkinson 3fb06ee29e Merge branch '2.0.x' into 2.1.x
Closes gh-17320
5 years ago
Andy Wilkinson 4973a2b217 Merge branch '1.5.x' into 2.0.x 5 years ago
Stephane Nicoll e560b7f6ba Remove public modifier on JUnit5 lifecycle methods
See gh-17292
5 years ago
Andy Wilkinson 6d8ba654cc Merge branch '2.1.x'
Closes gh-17276
5 years ago
Andy Wilkinson a5ae1de706 Fix spring-boot-loader's tests on Windows
Closes gh-17275
5 years ago
Phillip Webb 1e0cf960f0 Reinstate single page HTML and PDF docs
Closes gh-16854
6 years ago
Phillip Webb 2c2b962204 Merge branch '2.1.x'
Closes gh-17232
6 years ago
Phillip Webb d82ccf1405 Ensure META-INF/MANIFEST.MF remains as first entry
Update Gradle archive tasks to ensure that `META-INF/` and
`META-INF/MANIFEST.MF` remain as the first entries of the archive.

Prior to this commit, rewritten archives would violate the implicit
specification of `JarInputStream` that these entries should be first.

Fixes gh-16698
6 years ago
Andy Wilkinson f36af7b16d Polish 6 years ago
Andy Wilkinson ece8703278 Merge branch '2.1.x'
Closes gh-17211
6 years ago
Andy Wilkinson 7d59b78829 Fix handling of jar files with + chars in their path
Closes gh-17208
6 years ago
Johnny Lim 368c0eebe4 Fix typo
See gh-17132
6 years ago
gaurav bhatnagar 1ec5fb9972 Drop deprecated 'spring.version' POM property
See gh-17043
6 years ago
Madhura Bhave 30cfe7b4c5 Polish 6 years ago
Andy Wilkinson cffc870fd6 Fix test failures on Windows
Since the move to JUnit 5, a number of tests were failing on Windows.
The majority were failing due to open file handles preventing the
clean up of the tests' temporary directory. This commit addresses
these failures by updating the tests to close JarFiles, InputStreams,
OutputStreams etc.

A change has also been made to CachingOperationInvokerTests to make
a flakey test more robust. Due to System.currentTimeMillis() being
less precise on Windows than it is on *nix platforms, the test could
fail as it would not sleep for long enough for the TTL period to have
expired.
6 years ago
Andy Wilkinson c56fbf8c3d Allow Archives to be closed so they can release resources
Closes gh-17126
6 years ago
Andy Wilkinson 048be1813e Ensure JarFile created for nested entry InputStream is closed
Closes gh-17127
6 years ago
Andy Wilkinson 29d1cd3b2d Merge branch '2.1.x'
Closes gh-17124
6 years ago
Andy Wilkinson c12ccfb342 Close JarFile if failure occurs during construction
Fixes gh-17123
6 years ago
Andy Wilkinson 405b4ad441 Merge branch '2.1.x'
Closes gh-17118
6 years ago
Andy Wilkinson 2833f60344 Avoid leaving streams open when writing libraries
Fixes gh-17115
6 years ago
Phillip Webb b3d5cd538d Add JUnit 5 checkstyle rules
Add a rule to enforce JUnit 5 usage and conventions.

Closes gh-17093
6 years ago
Phillip Webb 266d6334b2 Fix checkstyle RedundantModifier test violations 6 years ago
Andy Wilkinson b18fffaf14 Move tests to JUnit 5 wherever possible 6 years ago
Andy Wilkinson aef92b9295 Merge branch '2.1.x'
Closes gh-17079
6 years ago
Andy Wilkinson 24925c3dae Merge branch '2.0.x' into 2.1.x
Closes gh-17078
6 years ago
Andy Wilkinson c6c139d980 Merge branch '1.5.x' into 2.0.x 6 years ago
Phillip Webb db75347eb6 Merge branch '2.1.x' 6 years ago
Phillip Webb 0ef331018e Merge branch '2.0.x' into 2.1.x 6 years ago
Phillip Webb d306b31ce9 Merge branch '2.1.x' 6 years ago
Phillip Webb ccfbd03482 Merge branch '2.0.x' into 2.1.x 6 years ago
Phillip Webb b442d3b906 Merge branch '1.5.x' into 2.0.x 6 years ago
Phillip Webb 5fba43aa31 Merge branch '1.5.x' into 2.0.x 6 years ago
Brian Clozel c74badd4f2 Auto-configure Elasticsearch REST client in Spring Data
This commit auto-configures the Elasticsearch REST client support
as a template for Spring Data Elasticsearch. As of this commit,
using the transport client is still possible but developers
should migrate.

This commit also removes the deprecated annotation on the
Elasticsearch auto-configuration for the transport client, since
this deprecation notice is already present on the configuration
property.

Closes gh-17024
Closes gh-16542
6 years ago
Stephane Nicoll 8beb6c1bcb Document how to specify arguments on the command line with Maven
Closes gh-10926
6 years ago
Phillip Webb ad5e905bd7 Update copyright header of changed files 6 years ago
Phillip Webb 68aec8b6ee Polish 6 years ago
Andy Wilkinson ecf7c817a6 Build and test the Gradle plugin with Java 11 and 12
Closes gh-12333
6 years ago
Phillip Webb 988f02d766 Merge branch '2.1.x'
Closes gh-16996
6 years ago
Phillip Webb f380ba63eb Exclude Groovy MetaClass from property meta-data
Update `TypeExcludeFilter` to exclude `groovy.lang.MetaClass`.

Closes gh-16981
6 years ago
dreis2211 e59d734098 Fix Gradle plugin code formatting
See gh-16984
6 years ago
Andy Wilkinson c80218064f Use sorted properties to make build info output repeatable
Closes gh-14494
6 years ago
Stephane Nicoll 4cdb5a8ecb Polish "Default to optimized launch of the JVM when using spring-boot:run"
Closes gh-16941
6 years ago
Dos Debug 569b850fe0 Default to optimized launch of the JVM when using spring-boot:run
See gh-16941
6 years ago
Andy Wilkinson 54b123028c Default to optimized launch of the JVM when using Gradle's bootRun
Closes gh-16222
6 years ago
Andy Wilkinson 7713a7f33a Fix inclusion of Gradle DSL snippets in plugin reference docs
Closes gh-16968
6 years ago
Andy Wilkinson bf670d0a5a Merge branch '2.1.x'
Closes gh-16960
6 years ago
Andy Wilkinson 60d60a8304 Use basedir as forked JVM's working directory in Maven plugin
Fixes gh-16811
6 years ago
Andy Wilkinson babb94c791 Migrate spring-boot-gradle-plugin's tests to JUnit 5
Closes gh-16959
6 years ago
Stephane Nicoll a5537bd2e1 Fork application process with Maven by default
Closes gh-16945
6 years ago
Andy Wilkinson 23f803c6b6 Upgrade to Hamcrest 2.1, switch to hamcrest artifact from -core and -library
Closes gh-15555
6 years ago
Andy Wilkinson 64860e196c Improve diagnostics when forked JVM exits with non-zero status
Closes gh-16869
6 years ago
Stephane Nicoll 66dc728018 Polish "Make excludeDevtools available as a user property"
Closes gh-16701
6 years ago
jvwilge dcc09ffac2 Make excludeDevtools available as a user property
See gh-16701
6 years ago
Johnny Lim 87874ffb70 Polish
Closes gh-16875
6 years ago
Phillip Webb 3a9ca5fa30 Update copyright header of changed files 6 years ago
Stephane Nicoll 6544d19fbf Merge branch '2.1.x' 6 years ago
Stephane Nicoll 4c1ef630c9 Restore lazy evaluation of project/build/finalName
This commit restores the read-only `finalName` so that its value can
be lazily resolved against `${project.build.finalName}`.

While doing the evaluation ourselves and not relying on a dedicated
field at all would have been better, the evaluation increased the
number of required dependencies for no good reason.

IDEs should not offer auto-completion for that read-only field and it
is not published in the generated site either.

Closes gh-16456
6 years ago
Madhura Bhave 684a1c7a3c Migrate tests to JUnit5 testcontainer extensions
Closes gh-15456
6 years ago
Andy Wilkinson f35b91a172 Raise minimum supported version of Gradle to 4.10 and encourage use of 5.x
Closes gh-16681
6 years ago
Andy Wilkinson 538030b57e Merge branch '2.1.x'
Closes gh-16693
6 years ago
Andy Wilkinson 881fbeff43 Test the Gradle Plugin against Gradle 5.4.1
Closes gh-16576
6 years ago
Brian Clozel c4938055b4 Polish "Separate compound properties in appendices"
Closes gh-16480
6 years ago
dreis2211 5b63b807ad Separate compound properties in appendices 6 years ago
Andy Wilkinson 5639685770 Polish "Prefer file: to jar:file: URLs in launcher"
See gh-16248
6 years ago
hengyunabc c1b34d0307 Prefer file: to jar:file: URLs in launcher
See gh-16248
6 years ago
Phillip Webb 17aaf26590 Use consistent javadoc style for annotation links
Closes gh-13920
6 years ago
Phillip Webb 1e44aba772 Fix compiler warnings and polish
Fix various compiler warnings and apply a little polish.
6 years ago
Andy Wilkinson eb0b852e99 Merge branch '2.1.x'
Closes gh-16639
6 years ago
Andy Wilkinson 5d77b48aed Polish "Polish Maven Plugin's tests"
See gh-16618
6 years ago
daonan.zhan 52c2c534db Polish Maven Plugin's tests
See gh-16618
6 years ago
dreis2211 f40b086ef5 Optimize JarEntry construction
This commit avoids calling the underlying ZipEntry.setExtra() method
that is not very inline friendly in cases where there is no extra
information to be set.

See gh-16620
6 years ago
Phillip Webb b879972d0d Migrate to MergedAnnotations API
Migrate away from `AnnotationUtils` and `AnnotatedElementUtils`
when possible to the new `MergedAnnotations` API.

Closes gh-16551
6 years ago
Stephane Nicoll a79e49f1dd Merge branch '2.1.x' 6 years ago
Johnny Lim 363994515b Polish
See gh-16575
6 years ago
Andy Wilkinson 7d2a99943f Merge branch '2.1.x' 6 years ago
Andy Wilkinson dfbc787737 Test the Gradle plugin against Gradle 5.4
Closes gh-16576
6 years ago
Phillip Webb 2dfd916c96 Polish 6 years ago
Stephane Nicoll f9c74d983f Merge branch '2.1.x'
Closes gh-16565
6 years ago
Stephane Nicoll e99deb95f7 Fix source detection in case of multiple candidates
This commit improves the detection of a property source when more than
one group with the same type exist.

Closes gh-16549
6 years ago
Andy Wilkinson 9d1f584560 Adapt Gradle plugin tests to change in Kotlin's packaging
Closes gh-16554
6 years ago
Stephane Nicoll 0972ef3422 Merge branch '2.1.x'
Closes gh-16451
6 years ago
Stephane Nicoll fbb5ffe0a4 Avoid infinite cycle resolving generic type that refers itself
This commit improves type resolution for a unresolved generic type that
uses itself in its upper bound declaration.

Closes gh-16451
6 years ago
Stephane Nicoll 763c1a99e0 Polish 6 years ago
Phillip Webb 52e635b823 Merge branch '2.1.x' 6 years ago
Phillip Webb 912e0a87a8 Merge branch '2.0.x' into 2.1.x 6 years ago
Phillip Webb 8c2e0a61ae Merge branch '1.5.x' into 2.0.x 6 years ago
Phillip Webb 2376f973f4 Merge branch '2.1.x' 6 years ago
Phillip Webb 47c6bf741d Merge branch '2.0.x' into 2.1.x 6 years ago
Phillip Webb 07c000c5b7 Merge branch '1.5.x' into 2.0.x 6 years ago
Stephane Nicoll c4b1a22e89 Polish "Add Spring-specific styling to Gradle Plugin's documentation"
Closes gh-16327
6 years ago
Hendrig Sellik 466b57cd44 Add Spring-specific styling to Gradle Plugin's documentation
This commit replaces the default Asciidoctor styling with
Spring specific styling.

First, we need to unzip the contents of the Spring Asciidoctor
documentation resources provided by the
`io.spring.docsresources:spring-docs-resources` distribution zip. This
is done in a `/target/refdocs` folder. We then copy all files from
`src/main/asciidoc` to the same location, and then launch the generation
process.

See gh-16327
6 years ago
Andy Wilkinson c5024f21a4 Merge branch '2.1.x' 6 years ago
Andy Wilkinson 6aa4fe579a Polish
See gh-16068
6 years ago
Andy Wilkinson ac4d6bb10f Merge branch '2.1.x' 6 years ago
Andy Wilkinson db4623c519 Merge branch '2.0.x' into 2.1.x 6 years ago
Andy Wilkinson 7b5f46d6e3 Add Spring-Boot-* manifest attributes to jars and wars built with Gradle
Closes gh-16068
6 years ago
Andy Wilkinson 2adb6b1fa4 Override version of Maven Site Plugin for JDK 9+181 compatibility
See gh-16400
6 years ago
Stephane Nicoll 17a800b577 Merge branch '2.1.x' 6 years ago
Stephane Nicoll 62d9c0a8b3 Test against Gradle 5.3.1 6 years ago
Stephane Nicoll 680e2b223b Remove deprecated finalName attribute
See gh-16202
6 years ago
Stephane Nicoll cba1e8ada0 Merge branch '2.1.x' 6 years ago
Stephane Nicoll 04aadcdf2e Make sure custom finalName is ignored
A read-only plugin parameter can still be set by the user which leads
to an invalid repackaged archive. This commit actually ignores the field
and uses the standard attribute instead.

Closes gh-16202
6 years ago
Stephane Nicoll 6ab942f295 Polish 6 years ago
Stephane Nicoll 554dec1a3e Document finalName alternative for repackage goal
Closes gh-16334
6 years ago
Spring Operator fb242c27d2 Use HTTPS for external links wherever possible
See gh-16276
6 years ago
Andy Wilkinson 878a635bfb Merge branch '2.1.x' 6 years ago
Andy Wilkinson 864942ad4f Merge branch '2.0.x' into 2.1.x 6 years ago
Andy Wilkinson ba4671f0ab Merge branch '1.5.x' into 2.0.x 6 years ago
Andy Wilkinson 4900505425 Merge branch '2.0.x' into 2.1.x 6 years ago
Andy Wilkinson fedb40a2bf Merge branch '1.5.x' into 2.0.x 6 years ago
Stephane Nicoll dec5a8cc7e Merge branch '2.1.x' 6 years ago
Stephane Nicoll 567a82f4ba Update multi release test jar to include Java 12
See gh-16212
6 years ago
Stephane Nicoll 90160b16aa Merge branch '2.1.x' 6 years ago
dreis2211 c2335e130c Test against Gradle 5.3
Closes gh-16294
6 years ago
Stephane Nicoll 3125f424ce Add metadata support for immutable ConfigurationProperties type
Closes gh-16071
6 years ago
Andy Wilkinson 36c1c051b8 Merge branch '2.1.x' 6 years ago
Andy Wilkinson e23f72c8b0 Merge branch '2.0.x' into 2.1.x 6 years ago
Andy Wilkinson 9fbd38ab3c Merge branch '1.5.x' into 2.0.x 6 years ago
Spring Operator 00ab30362c Use HTTPS for external links in XML files
See gh-16270
6 years ago
Andy Wilkinson b828b398b5 Merge branch '2.1.x' 6 years ago
Spring Operator b32c0080c3 Update build and setup configuration to use HTTPS
See gh-16247
6 years ago
Andy Wilkinson a36aa67b52 Merge branch '2.0.x' into 2.1.x 6 years ago
Spring Operator 3e2b6ac8ed Update build and setup configuration to use HTTPS
See gh-16246
6 years ago
Andy Wilkinson daba01ab94 Merge branch '2.1.x' 6 years ago
Andy Wilkinson 716b4e8acf Test the Gradle plugin against Gradle 5.3-rc-3
Closes gh-16211
6 years ago
Madhura Bhave 3d0219c315 Merge branch '2.1.x' 6 years ago
Johnny Lim c5b5f752ed Polish
Closes gh-16219
6 years ago
dreis2211 b39b990a72 Use isEmpty() where possible
Closes gh-16225
6 years ago
Andy Wilkinson 68bfb020aa Reduce need for bean method proxying and disable where not needed
Closes gh-9068
6 years ago
Andy Wilkinson 28cf63354a Merge pull request #16106 from Spring Operator
* gh-16106:
  Drop AnyEdit from Eclipse setup as it is not available over HTTPS
  Update build and setup configuration to use HTTPS

Closes gh-16106
6 years ago
Spring Operator c9c554b834 Update build and setup configuration to use HTTPS
See gh-16106
6 years ago
Phillip Webb 64a2e8d67f Update copyright year for changed files 6 years ago
Phillip Webb dd3e8154d9 Merge branch '2.1.x' 6 years ago
Phillip Webb fc3aa43cc2 Update copyright year for changed files 6 years ago
Andy Wilkinson 404f5d33f3 Align Gradle plugin's tests with Kotlin 1.3's restructuring
See gh-16195
6 years ago
Andy Wilkinson 9d06d22b99 Merge branch '2.0.x' into 2.1.x 6 years ago
Andy Wilkinson d6a869fa98 Switch to Jakarta EE API dependencies where possible
Closes gh-16113
Closes gh-16112
Closes gh-16111
Closes gh-15916
Closes gh-15689
6 years ago
Stephane Nicoll 75c248dcba Move setter attribute in PropertyDescriptor proper 6 years ago
Stephane Nicoll a90c8d01a9 Polish 6 years ago
Stephane Nicoll 00a18c32ab Restructure metadata generation
This commit restructures the annotation processor to off-load most of
its logic in a PropertyDescriptor abstraction that is consumed to
generate the relevant metadata.

This has the benefit to isolate the various way properties can be
identified (java bean and lombok for now).

Closes gh-16036
6 years ago
Stephane Nicoll 99c0b4561d Polish test to request the type under test 6 years ago
Stephane Nicoll c44a1e129d Polish 6 years ago
Stephane Nicoll 8a064b0da2 Move main test annotation processor to test package 6 years ago
Stephane Nicoll 4bee913fb2 Add shared test processor
This commit adds a simple annotation processor that can be used to run
more fine grained assertions.
6 years ago
Andy Wilkinson 0f0adb4cd0 Polish formatting 6 years ago
Stephane Nicoll 8773a2fed3 Polish 6 years ago
Andy Wilkinson f2e3e274a8 Merge branch '2.1.x' 6 years ago
Andy Wilkinson 53326695ea Polish 6 years ago
Andy Wilkinson f4bd0b8b4b Merge branch '2.1.x' 6 years ago
Andy Wilkinson 59430a2642 Only include zips in BOOT-INF/lib, WEB-INF/lib, and WEB-INF/lib-provided
Closes gh-16001
6 years ago
Andy Wilkinson 43c9a789ac Merge branch '2.1.x' 6 years ago
Andy Wilkinson 55fe26b075 Polish "Use kotlin_module not kotlin-module to identify Kotlin module metadata"
See gh-16004
6 years ago
Robert Thornton cb6362df82 Use kotlin_module not kotlin-module to identify Kotlin module metadata
See gh-16004
6 years ago
Stephane Nicoll 34f28b4cbd Merge branch '2.1.x' 6 years ago
Stephane Nicoll 91a005f578 Resolve generic types in generated metadata
Closes gh-15850
6 years ago
Andy Wilkinson 9540905e73 Merge branch '2.1.x' 6 years ago
Andy Wilkinson 68e3de0357 Use name from header not alias when checking entry has expected name
Previously, an entry’s potentially aliased name would be used when
checking that it has a particular name. The alias would always be
applied, irrespective of the name in the header. As a result, when
there was a clashing hash and an entry with a particular index did
not have the expected name, this would be concealed by the alias
being applied and the name check being done with the alias.

This commit reworks JarEntry to store the name in its header in
addition to its alias, if any. When checking that the entry has the
expected name, the unaliased name is passed in and the entry compares
it with the name from the header rather than the alias.

Closes gh-15981
6 years ago
Brian Clozel 2a2bfb9915 Auto-generate the "Common application properties"
Prior to this commit, the application properties listed in the reference
documentation would be manually managed and updated.

This commit adds a new `spring-boot-configuration-docs` project that
extracts that information from the available JSON metadata and writes
Asciidoctor tables ready for inclusion in the reference documentation.

The `generateConfigurationPropertyTables.groovy` is using this library
and configures the sections and how namespaces should be organized.

Fixes gh-8237
6 years ago
Madhura Bhave 9bc9639954 Merge branch '2.1.x' 6 years ago
Madhura Bhave 012a956454 Fix typo in doc 6 years ago
Andy Wilkinson 747e419db1 Merge branch '2.1.x' 6 years ago
Andy Wilkinson 9fb0b97f96 Decorate test containers so tests are skipped without Docker
Closes gh-15901
Closes gh-15638
6 years ago
Andy Wilkinson 0adea5a905 Merge branch '2.1.x' 6 years ago
Andy Wilkinson 948bafa4d8 Repackage kotlin-module metadata beneath BOOT-INF/classes
Closes gh-15890
6 years ago
Andy Wilkinson db31e42751 Merge branch '2.1.x' 6 years ago
Andy Wilkinson a975c0ad16 Use Testcontainers’ CassandraContainer rather than our own
Closes gh-15901
6 years ago
Andy Wilkinson 7e51e1a076 Merge branch '2.1.x' 6 years ago
Michael Simons 316126e8f0 Replace custom Neo4j container with Testcontainers version
See gh-15638
6 years ago
Andy Wilkinson 2cda30988e Merge branch '2.1.x' 6 years ago
Andy Wilkinson 6fe9e3a0e1 Test the Gradle plugin against Gradle 5.2.1
Closes gh-15892
6 years ago
Andy Wilkinson 4faa0f51b7 Polish "Test the Gradle plugin against Gradle 4.10.3 and 5.1.1"
Closes gh-15791
6 years ago
dreis2211 1de372d896 Test the Gradle plugin against Gradle 4.10.3 and 5.1.1
See gh-15791
6 years ago
Andy Wilkinson b3abd25e22 Merge branch '2.1.x' 6 years ago
Andy Wilkinson 8a7958ef55 Do not use reflection to fall back to JDKs jar URLStreamHandler
Closes gh-15844
6 years ago
Andy Wilkinson 342bced125 Merge branch '2.1.x' 6 years ago
Andy Wilkinson 2650a07dc9 Leave module-info.class in root of archive when repackaging
Closes gh-15810
6 years ago
dreis2211 d4ab101223 Use Assertions.contentOf() where possible
Closes gh-15793
6 years ago
Stephane Nicoll 6baa6b291e Polish contribution
Closes gh-15695
6 years ago
Johnny Lim af3ed9ff9f Polish
See gh-15695
6 years ago
Stephane Nicoll 8d1d3fb087 Polish "Avoid string concatenation inside StringBuilder append()"
Closes gh-15589
6 years ago
igor-suhorukov 59ac85d371 Avoid string concatenation inside StringBuilder append()
See gh-15589
6 years ago
dreis2211 46e59503ec Use JSONObject.putOpt in JsonConverter
Closes gh-15595
6 years ago
Stephane Nicoll 51936e1a5c Rename "agent" to "agents" to properly indicate its type
Closes gh-15455
6 years ago
igor-suhorukov 3eb2f5e476 Replace Collections sort with list sort() method
Closes gh-15585
6 years ago
Stephane Nicoll 1223355fe6 Polish "Simplify code by using for-each loop"
Closes gh-15563
6 years ago
igor-suhorukov dfb3cd51bc Simplify code by using for-each loop
See gh-15563
6 years ago
Stephane Nicoll fbef9700bf Merge branch '2.1.x' 6 years ago
Erik Mulder 00763af335 Fix system properties override example
Closes gh-15562
6 years ago
igor-suhorukov b370b1f03a Replace indexOf() with a call to the contains()
See gh-15559
6 years ago
Andy Wilkinson 372b6605b3 Merge branch '2.1.x' 6 years ago
Andy Wilkinson 83ce5dcee8 Add missing task output annotations to BootJar and BootWar
Closes gh-15488
6 years ago
igor-suhorukov cbf6b330ba Simplify code by using Map computeIfAbsent
Closes gh-15543
6 years ago
Stephane Nicoll c948bdd14d Merge branch '2.1.x' 6 years ago
Stephane Nicoll 51d3626c3b Merge branch '2.0.x' into 2.1.x 6 years ago
dreis2211 27e89bbb8a Optimize StringSequence
Closes gh-15473
6 years ago
Andy Wilkinson 0ad72d5b5e Remove reliance on mavenLocal from Gradle plugin’s tests
See gh-15471
6 years ago
Andy Wilkinson 4edc32844a Remove use of execute method inherited from internal class
Closes gh-15484
6 years ago
Stephane Nicoll 317c4c2c38 Merge branch '2.1.x' 6 years ago
Stephane Nicoll 7dbe70dc61 Merge branch '2.0.x' into 2.1.x 6 years ago
Stephane Nicoll c0b07a9429 Polish "Fix StringSequence.equals() for different lengths"
Closes gh-15465
6 years ago
dreis2211 2a0680c2ba Fix StringSequence.equals() for different lengths
See gh-15465
6 years ago
Andy Wilkinson ddabfe3fcc Deploy spring-boot-test-support so it's available downstream
Concourse builds spring-boot-tests separately from spring-boot-project
and relies on modules from the latter being available in the
distribution repository when building the former. This commit enables the
deployment of spring-boot-test-support from spring-boot-project so that it
is added to the distribution repository and is therefore available when
building spring-boot-tests. It is then excluded when putting to the
Artifactory resource as we do not want it to be published.

See gh-15471
6 years ago
Andy Wilkinson 61d04db0d7 Minimize and centralize assumptions about build output
Closes gh-15471
6 years ago
Andy Wilkinson 62fbf48446 Start Elasticsearch with single-node discovery type
See gh-15441
6 years ago
Andy Wilkinson 47fc35105d Allow more time for the Elasticsearch container to start
See gh-15441
6 years ago
Andy Wilkinson 2b453bbb16 Minimise dependencies on Log4j2
Closes gh-15441
6 years ago
Andy Wilkinson bbf0932f0f Exclude jcl-over-slf4j in favour of spring-jcl
Closes gh-15392
6 years ago
Stephane Nicoll ef40241bf6 Merge branch '2.0.x' into 2.1.x 6 years ago
dreis2211 d864b427eb Remove unused ByteArrayStartsWith matcher
Closes gh-15386
6 years ago
Andy Wilkinson 72ad0cc6be Merge branch '2.0.x' into 2.1.x 6 years ago
Andy Wilkinson 3fd0380359 Correct optional dependency declarations in spring-boot-test-support
Closes gh-15371
6 years ago
Phillip Webb ed9468a31a Update copyright year for changed files 6 years ago
Stephane Nicoll bf88a7e466 Be more lenient when repackage is invoked several times
This commit makes the repackager more lenient when it is invoked several
times in the same lifecycle.

Closes gh-15034
6 years ago
Stephane Nicoll d7fe3c73a3 Provide better logging for RepackageMojo
Closes gh-15294
6 years ago
Andy Wilkinson a0d0ecf9d4 Test the Gradle plugin against Gradle 5.0
Closes gh-15171
6 years ago
Andy Wilkinson 7790876575 Merge branch '2.0.x' 6 years ago
Andy Wilkinson c0e286b96b Test the Gradle Plugin against Gradle 5.0-rc-3
Closes gh-15171
6 years ago
Andy Wilkinson ce0a3d0311 Add missing classpath setters to BootJar and BootWar
Closes gh-15087
6 years ago
Andy Wilkinson 3fac0f0360 Polish multi-release jar support to avoid possible StackOverflowError
See gh-12523
6 years ago
Andy Wilkinson 56eebc9385 Update fat jar loader to support multi-release jar files
Closes gh-12523
6 years ago
Andy Wilkinson fe9d9ec4e2 Test the Gradle plugin against Gradle 5.0-rc-3
Closes gh-15171
6 years ago
Phillip Webb cccf5e6d2b Merge branch '2.0.x' 6 years ago
Phillip Webb 3baf782822 Merge branch '1.5.x' into 2.0.x 6 years ago
Johnny Lim fd5aa3ebf1 Polish
See gh-15134
6 years ago
Andy Wilkinson 228e05487a Test Gradle Plugin against Gradle 5.0-rc-1
Closes gh-15028
6 years ago
Phillip Webb f3fa20b2d1 Polish 6 years ago
Andy Wilkinson 1341789819 Merge branch '2.0.x' 6 years ago
Andy Wilkinson 9ea5c58e38 Remove stale mention of module layout from Maven plugin's docs
Closes gh-14854
6 years ago
Andy Wilkinson 5ac9b972fe Test the Gradle Plugin against Gradle 5.0-milestone-1
Closes gh-15005
6 years ago
Andy Wilkinson 77f571aa45 Merge branch '2.0.x' 6 years ago
Andy Wilkinson 7eb1df1650 Test the Gradle Plugin against Gradle 4.10.2
Closes gh-15004
6 years ago
Brian Clozel cf882c9b40 Fix import error in 8376bc369 6 years ago
Brian Clozel 8376bc3697 Fix build after checkstyle imports updates
See gh-14911
6 years ago
Madhura Bhave f0004c4ade Merge branch '2.0.x' 6 years ago
dreis2211 5c0d7f4ac0 Avoid creation of unnecessary collections
Closes gh-14916
6 years ago
Andy Wilkinson 9b8ead825c Polish 6 years ago
Stephane Nicoll 2a0451c461 Merge branch '2.0.x' 6 years ago
Jack Gough 94770cc0fd Force JMX hostname to 127.0.0.1
Closes gh-14836
6 years ago
Stephane Nicoll 7c6d61ee10 Update documentation to mention execution id of repackage goal
This commit updates the documentation to reference the default execution
id of the `repackage` goal when a project uses
`spring-boot-starter-parent`.

Closes gh-14835
6 years ago
Phillip Webb 85f86243c9 Order class filter checks and exit early
Update the logic in `OnClassCondition` so that filtering exits on the
first missing class. Also refactor the implementation to save
unnecessary `Set` creation when there is just a single class to check.

The `AutoConfigureAnnotationProcessor` has also been updated to order
classes so that any starting `org.springframework` are considered last.
The assumption being that other classes are more likely to be missing.

Closes gh-12131
6 years ago
Phillip Webb 94798062ab Configure Cassandra JMX Reporting
Allow Cassandra JMX reporting to be configured via a property, and
disable it by default since it won't work with Dropwizard metrics 4.

Also update some of our own tests to explicitly disable it.

Closes gh-14778
6 years ago
Andy Wilkinson 3f1b3db25a Merge branch '2.0.x' 6 years ago
Andy Wilkinson 1f34da9025 Document application plugin's need for mainClassName to be set
Closes gh-14250
6 years ago
Phillip Webb 01b8667dd7 Update copyright year for changed files 6 years ago
Andy Wilkinson a3d2f3f594 Polish "Add Kotlin DSL examples to Gradle Plugin's documentation"
Closes gh-14585
6 years ago
jnizet 5ed6c0d1ab Add Kotlin DSL examples to Gradle Plugin's documentation
See gh-14585
6 years ago
Andy Wilkinson 8c6910cf58 Polish "Refactor Gradle plugin tests to use runner's plugin classpath"
This commit removes the need for the Kotlin plugin tests to continue
to set the plugin classpath in each test build script. This is
achieved by adding the jars files containing the Kotlin plugin and
its dependencies to the runner's plugin classpath in the same way as
was already done for the dependency management plugin.

Closes gh-14680
6 years ago
jnizet c51449585e Refactor Gradle plugin tests to use runner's plugin classpath
Previously, each test build script used a property to configure its
classpath. This commit simplifies the tests by setting the classpath
once on the GradleRunner, thereby removing the need for it to be set in
each test script. It also allows, and, in fact, requires, the use of
the plugins block to apply the Boot plugin under test.

Unfortunately, this doesn't work for the tests for the reaction to the
Kotlin plugin. See the comments in the GradleBuild class and in each
KotlingPluginActionIntegrationTests build script.

See gh-14680
6 years ago
Andy Wilkinson 76849c12e5 Merge branch '2.0.x' 6 years ago
Andy Wilkinson cf24d18139 Explicity set permissions on files in lib of Boot distribution
Previously, only the permissions for the scripts in bin/ were set. The
permissions for the files in lib/ were not explicity set, leaving them
with the same permissions as the source files in Gradle's cache. This
has proven to be a little brittle when building in certain
environments, leading to test failures. It also assumes that the
file permissions in Gradle's cache will be appropriate for entries in
a distribution archive. That may not always be a reasonable assumption
to make.

To avoid the above-described problems, this commit updates the copy
spec that's used to add files to lib/ in the archive so that each
file uses 0644 for its permissions.

Closes gh-14158
6 years ago
Andy Wilkinson 4a222cb4e5 Polish "Log a warning when using fallback for pid and log locations"
Closes gh-14519
6 years ago
Andreas Gebhardt 3f894cbeeb Log a warning when using fallback for pid and log locations
See gh-14519
6 years ago
Johnny Lim 335775892b Polish
See gh-14667
6 years ago
dreis2211 e68b9e8322 Remove unnecessary parameters for String.substring
Closes gh-14661
6 years ago
Phillip Webb d76bba5e6f Migrate from ExpectedException rule to AssertJ
Replace ExpectedException JUnit rules with AssertJ exception
assertions.

Closes gh-14336
6 years ago
Andy Wilkinson 285f6bfd5f Merge branch '2.0.x' 6 years ago
jnizet eee07a840f Move away from deprecated Gradle configurations
Closes gh-14593
6 years ago
Johnny Lim 698bbd6a9e Polish
Closes gh-14597
6 years ago
Phillip Webb 64627fa9d6 Restore Maven 3.3 compatibility
Downgrade the `spring-boot-maven-plugin` maven version to 3.3.

Closes gh-14464
6 years ago
Phillip Webb 75bde00334 Generate auto-configuration OnWebApplication data
Update the auto-configuration annotation processor to generate
properties for `@OnWebApplication`.

See gh-13328
6 years ago
Phillip Webb 586507c49a Generate auto-configuration OnBean data
Update the auto-configuration annotation processor to generate
properties for `@ConditionalOnBean` and `@ConditionalOnSingleCandidate`.

See gh-13328
6 years ago
Phillip Webb 11b1318cad Reduce GC pressure in JAR handler
Update the JAR `Hander` so that URL `startsWith` checks produce less
garbage. Comparisons are now performed first on the `path` rather than
the full `toString`. URL `toString` operations produce quite a lot of
garbage since a `StringBuilder` is always used.

In addition, we now also cache the JarFile URL toString to save repeated
calculation.

Closes gh-14561
6 years ago
Andy Wilkinson c1b864c826 Polish 6 years ago
durigon 7aaeefbc0e Use Matcher from pre-compiled Pattern rather than String for replaceAll
Closes gh-14483
6 years ago
Andy Wilkinson a2cf2cd87f Raise the minimum supported version of Gradle to 4.4
Closes gh-14418
6 years ago
Andy Wilkinson ae4e1d0372 Test the Gradle plugin against Gradle 4.10
Closes gh-14417
6 years ago
Andy Wilkinson 630e2d0b41 Correct the permissions of scripts in archives of boot distribution
Closes gh-14158
6 years ago
Phillip Webb 894e0e11d4 Switch from Aether to Maven Resolver
Replace Aether dependencies with Maven Resolver following the Eclipse
EOL announcement for Aether.

Closes gh-7627
6 years ago
Andy Wilkinson e4b9316613 Merge branch '2.0.x' 6 years ago
Andy Wilkinson 78464f999f Test the Gradle plugin against Gradle 4.10
Closes gh-14417
6 years ago
Andy Wilkinson 6041bc5bb0 Correct the permissions of scripts in archives of boot distribution
Closes gh-14158
6 years ago
Andy Wilkinson 1332fcb0ad Polish "Issue a warning from launch script when app will run as root"
Closes gh-10275
6 years ago
Oliver B. Fischer 94ebd33747 Issue a warning from launch script when app will run as root
See gh-10275
6 years ago
Stephane Nicoll 0493355241 Use deterministic order for configuration properties metadata
This commit updates the annotation processor to write metadata in a
consistent way. Groups, properties and hints are written and each item
is ordered alphabetically based on its name.

Also, deprecated items are written last.

Closes gh-14347
6 years ago
Andy Wilkinson ad4179cc43 Merge branch '2.0.x' 6 years ago
Andy Wilkinson 6c865f9b43 Polish
See gh-1176
6 years ago
Andy Wilkinson 79a964e563 Merge branch '2.0.x' 6 years ago
Andy Wilkinson 53372d5fd7 Document the use of --args to pass arguments to bootRun
Closes gh-1176
6 years ago
Phillip Webb 9d1b3a2b49 Merge branch '2.0.x' 6 years ago
Phillip Webb cafff43022 Update copyright header of changed files 6 years ago
Phillip Webb 9af6b3422f Polish 6 years ago
Andy Wilkinson 8ee4775820 Polish 6 years ago
Stephane Nicoll c0e45b7333 Adapt to Spring Framework API change 6 years ago
Phillip Webb 174f53e1cf Merge branch '2.0.x' 6 years ago
Phillip Webb 2e2f91d4a0 Merge branch '1.5.x' into 2.0.x 6 years ago
Stephane Nicoll 91af9e2ca9 Merge branch '2.0.x' 6 years ago
Stephane Nicoll d80ed27339 Fix checkstyle violation 6 years ago
Stephane Nicoll b26dedb547 Merge branch '2.0.x' 6 years ago
Stephane Nicoll eedeaa29e5 Polish "Replace loops with Arrays.setAll where possible"
Closes gh-14125
6 years ago
dreis2211 0bc66dc4a9 Replace loops with Arrays.setAll where possible
See gh-14125
6 years ago
dreis2211 a601bc863b Remove unused method in TypeUtils
Closes gh-14130
6 years ago
Stephane Nicoll 8f2ab952f5 Polish javadoc formatting 6 years ago
Stephane Nicoll c00fc6449b Merge branch '2.0.x' 6 years ago
dreis2211 59d911d6e0 Remove @UsesUnsafeJava annotations
Closes gh-14072
6 years ago
Andy Wilkinson e3e3a44045 Merge branch '2.0.x' 6 years ago
Andy Wilkinson 1973e342c9 Do not use lambda for task action as it breaks up-to-date checks
Due to gradle/gradle#5510, using a lambda for a task action breaks
up-to-date checks in certain circumstances.

This commit updates JavaPluginAction to use an inner-class in place
of a lambda for the action that it adds to JavaCompile tasks. A test
has not been added as it does not appear to be possible to reproduce
it with a TestKit-based test.

Closes gh-14054
6 years ago
Stephane Nicoll 94013aaba6 Add support for DataSize
This commit adds support for Spring Framework's `DataSize` allowing to
express a size in bytes and other convenient units.

Similar to the `Duration` support introduced previously, this commit
adds transparent binding support as well as detection of default values
in `@ConfigurationProperties`-annotated object.

Closes gh-13974
6 years ago
Andy Wilkinson e41519b6b1 Merge branch '2.0.x' 6 years ago
Andy Wilkinson 29e38f4af8 Merge branch '1.5.x' into 2.0.x 6 years ago
Johnny Lim 05a7d21305 Polish ItemMetadata.buildName()
Closes gh-14024
6 years ago
Stephane Nicoll 7b191bb9ed Merge branch '2.0.x' 6 years ago
Stephane Nicoll 21691f0b20 Merge branch '1.5.x' into 2.0.x 6 years ago
Stephane Nicoll 143e4f026f Merge branch '2.0.x' 6 years ago
dreis2211 66b1742f96 Optimize some StringBuilder.append() calls
Closes gh-13961
6 years ago
Phillip Webb 1b91c0ceb7 Merge branch '2.0.x' 6 years ago
Phillip Webb 0ec22c8bf9 Polish copyright date on changed files 6 years ago
Phillip Webb 80da9cf5eb Merge branch '2.0.x' 6 years ago
Phillip Webb aeb885192e Polish ternary expressions 6 years ago
Phillip Webb ce9c053cbf Fix checkstyle issues on master
Fix checkstyle issues following 2.0.x merge and
spring-javaformat upgrade.

See gh-13932
6 years ago
Phillip Webb a6c9c92f2e Merge branch '2.0.x' 6 years ago
Phillip Webb 63b609827e Fix checkstyle method order issues
Fix checkstyle issues with method ordering following the
spring-javaformat upgrade.

See gh-13932
6 years ago
Phillip Webb e6a68b39a3 Fix checkstyle javadoc issues
Fix checkstyle issues in javadoc following the spring-javaformat
upgrade.

See gh-13932
6 years ago
Phillip Webb 7fc455654a Fix checkstyle ternary issues
Fix checkstyle issues with ternary expressions following the
spring-javaformat upgrade.

See gh-13932
6 years ago
Phillip Webb ec1100a896 Upgrade to spring-javaformat 0.0.6
Closes gh-13932
6 years ago
Phillip Webb cddd794a07 Polish 6 years ago
Andy Wilkinson 1852ecc444 Merge branch '2.0.x' 6 years ago
Andy Wilkinson de7899fba4 Improve reliability by give Cassandra more time and attempts to start 6 years ago
Andy Wilkinson 147a08eb4c Merge branch '2.0.x' 6 years ago
Andy Wilkinson b9ad0d9992 Test the Gradle plugin against Gradle 4.8.1 instead of 4.8
Closes gh-13809
6 years ago
Andy Wilkinson 8deea933b9 Test the Gradle plugin against Gradle 4.9
Closes gh-13808
6 years ago
Stephane Nicoll b7274966c4 Merge branch '2.0.x' 6 years ago
Stephane Nicoll ffe994335e Merge branch '1.5.x' into 2.0.x 6 years ago
Stephane Nicoll d17d6374f0 Merge branch '2.0.x' 6 years ago
Stephane Nicoll 174cc2bc4e Merge branch '1.5.x' into 2.0.x 6 years ago
Stephane Nicoll 8fc1e0ed4e Merge branch '2.0.x' 6 years ago
dreis2211 ac8eebfbad Fix typos
Closes gh-13762
6 years ago
Andy Wilkinson 918191664a Merge branch '2.0.x' 6 years ago
Andy Wilkinson 9eb5c9bd18 Merge branch '1.5.x' into 2.0.x 6 years ago
Andy Wilkinson 45fdf2ffa4 Support Tomcat 9 and Undertow 2
Closes gh-11749
Closes gh-12243
6 years ago
Andy Wilkinson a097f923c1 Provide sensible defaults for launch script properties when using Gradle
Closes gh-4458
7 years ago
Stephane Nicoll d4d169277d Merge branch '2.0.x' 7 years ago
Stephane Nicoll 9e9e746554 Merge branch '1.5.x' into 2.0.x 7 years ago
Andy Wilkinson c12f8298e6 Merge branch '2.0.x' 7 years ago
Andy Wilkinson 814e90805e Merge branch '1.5.x' into 2.0.x 7 years ago
Stephane Nicoll 60b109cf0c Merge branch '2.0.x' 7 years ago
Johnny Lim f34fb5f1ee Reduce object creation in findMatchingItemMetadata()
Closes gh-13473
7 years ago
Andy Wilkinson 5bd9a445ae Merge branch '2.0.x' 7 years ago
Andy Wilkinson 6f2171c282 Improve error message when BootJar or BootWar has no known main class
Closes gh-12712
7 years ago
Phillip Webb e0ae805924 Update copyright header 7 years ago
Andy Wilkinson 0f321abe66 Merge branch '2.0.x' 7 years ago
Andy Wilkinson 70c0d6a005 Test the Gradle plugin against Gradle 4.8
Closes gh-13359
7 years ago
Andy Wilkinson 00449bef6a Use app…DefaultJvmArgs as convention for start script's defaultJvmOpts
Closes gh-12631
7 years ago
Andy Wilkinson b38f60a631 Merge branch '2.0.x' 7 years ago
Andy Wilkinson d54072e0a8 More accurately document buildInfo's effect on up-to-date checking
Closes gh-13152
7 years ago
Stephane Nicoll bc47bf44a9 Merge branch '2.0.x' 7 years ago
Johnny Lim 6b0ce46491 Polish
Closes gh-13320
7 years ago
Phillip Webb 92b9b234f1 Merge branch '2.0.x' 7 years ago
Phillip Webb 3751968ecd Add missing ExpectedException rule
Add ExpectedException rule which was missed from the 1.5.x merge.
7 years ago
Phillip Webb cf27917e86 Merge branch '2.0.x' 7 years ago
Phillip Webb bdd541b2cc Merge branch '1.5.x' into 2.0.x 7 years ago
Phillip Webb 5ae061f491 Merge branch '1.5.x' into 2.0.x 7 years ago
Phillip Webb 40800355c7 Merge branch '2.0.x' 7 years ago
Phillip Webb 09fa1e7e11 Polish 7 years ago
Johnny Lim de01e7aad4 Polish
See gh-13243
7 years ago
Stephane Nicoll f91b53747a Merge branch '2.0.x' 7 years ago
Johnny Lim f385a1cb11 Polish
Closes gh-13243
7 years ago
Stephane Nicoll 7462401291 Merge branch '2.0.x' 7 years ago
Eddú Meléndez 065eebfb4b Fix javadoc
Closes gh-13274
7 years ago
Phillip Webb 68ffbafbae Fix checkstyle violations 7 years ago
Phillip Webb 3702da4573 Formatting 7 years ago
Phillip Webb d8157c94f3 Merge branch '2.0.x' 7 years ago
Phillip Webb 21d80d87a3 Merge branch '1.5.x' into 2.0.x 7 years ago
Phillip Webb 40e68a6427 Merge branch '2.0.x' 7 years ago
Phillip Webb 6d8b4710d7 Merge branch '1.5.x' into 2.0.x 7 years ago
Stephane Nicoll afe6abb20d Merge branch '2.0.x' 7 years ago
Johnny Lim 75639aa682 Polish
Closes gh-13192
7 years ago
Stephane Nicoll ffdcdc0dc6 Merge branch '2.0.x' 7 years ago
Stephane Nicoll 7b7e802129 Merge branch '1.5.x' into 2.0.x 7 years ago
Stephane Nicoll ed02d02d19 Polish "Allow repackage maven goal to take a source classifier"
Closes gh-11061
7 years ago
Björn 3c8e012411 Allow repackage maven goal to take a source classifier
Previously, the "classifier" attribute was only used to determine the
target classifier of the repackaged archive, always using the main
artifact as the source.

This commit changes the semantic of the attribute so that an existing
archive matching the "classifier" attribute can be used as source,
replacing the archive the same way the goal replaces the main archive
if no classifier is found.

If no artifact with the specified classifier exists, the repackaged
archive is still processed based on the main archive and attached to
the lifecycle using the value of the classifier attribute.

See gh-11061
7 years ago
Johnny Lim fb2ab67f4f Polish
Closes gh-13148
7 years ago
Stephane Nicoll b17c58b114 Merge branch '2.0.x' 7 years ago
Johnny Lim 3dd2f5bb05 Polish
See gh-13148
7 years ago
Stephane Nicoll ae74ce9b39 Merge branch '2.0.x' 7 years ago
Vedran Pavic a08fa27c39 Add .gitignore for Gradle Plugin module
Closes gh-13137
7 years ago
Stephane Nicoll b0433d66c1 Merge branch '2.0.x' 7 years ago
dreis2211 e6a23fa3ff Remove unnecessary semicolons
Closes gh-13144
7 years ago
Andy Wilkinson 079b67c53b Merge branch '2.0.x' 7 years ago
Andy Wilkinson 7913d9b599 Add methods to BootJar for adding content to BOOT-INF
Closes gh-13000
7 years ago
Andy Wilkinson 07251a09d1 Merge branch '2.0.x' 7 years ago
Andy Wilkinson d9d7499ae6 Merge branch '1.5.x' into 2.0.x 7 years ago
Stephane Nicoll 00a43d8f4d Merge branch '2.0.x' 7 years ago
Johnny Lim 75e591e76e Polish
Closes gh-13130
7 years ago
Stephane Nicoll 3ad8f3fcbf Merge branch '2.0.x' 7 years ago
Stephane Nicoll 9dccf5b895 Polish
See gh-13078
7 years ago
Stephane Nicoll 7f50d49251 Merge branch '2.0.x' 7 years ago
dreis2211 15d67d6b12 Remove MockServletWebServer.emptyEnumeration()
Closes gh-13084
7 years ago
Phillip Webb 7b120c1c97 Formatting 7 years ago
Phillip Webb 42c053cf1b Merge branch '2.0.x' 7 years ago
Phillip Webb 5b3cb8a698 Update copyright header year for changed files 7 years ago
Phillip Webb 6e09e497f2 Formatting 7 years ago
Andy Wilkinson 65e6011b7f Merge branch '2.0.x' 7 years ago
Andy Wilkinson 2bcf29913d Skip building the Gradle plugin on Java 9 as well as 10
Upgrading the JDK 9-based build to use JDK 9.0.4 has revealed that
Gradle 4.0.x doesn't work with it as it fails to parse the 9.0.4
version number.

This commit disables building the Gradle plugin on Java 9 (as we
had already done for Java 10) until we decide what to do
(see gh-12333).
7 years ago
Phillip Webb b6a2a46f78 Merge branch '2.0.x' 7 years ago
Phillip Webb 2d70a7ae5e Polish caught exception names
Prefer `ex` over `e`.
7 years ago
Phillip Webb 41efea51a7 Polish ternary expressions
Consistently format ternary expressions and always favor `!=` as the
the check.
7 years ago
Phillip Webb 8c0c0ee55a Merge branch '2.0.x' 7 years ago
Phillip Webb e125085993 Merge branch '1.5.x' into 2.0.x 7 years ago
Andy Wilkinson 4ea7d3a767 Merge branch '2.0.x' 7 years ago
Andy Wilkinson f5fabbc1b9 Remove the use of internal API from Gradle Plugin's BootJar
Closes gh-13037
7 years ago
Stephane Nicoll 4eeddbd889 Merge branch '2.0.x' 7 years ago
Stephane Nicoll 79c222da78 Allow to provide manual metadata for keys that are not unique
Closes gh-12193
7 years ago
Stephane Nicoll 44fd7d953e Merge branch '2.0.x' 7 years ago
Stephane Nicoll 782d8c63da Merge branch '1.5.x' into 2.0.x 7 years ago
Andy Wilkinson 0526594a3c Merge branch '2.0.x' 7 years ago
Andy Wilkinson f019d5c85b Merge branch '1.5.x' into 2.0.x 7 years ago
Madhura Bhave a193c89c6d Merge branch '2.0.x' 7 years ago
Madhura Bhave aad279208e Throw exception if RandomAccessData tries to read beyond EOF
Fixes gh-12986
7 years ago
Stephane Nicoll 335ca62239 Merge branch '2.0.x' 7 years ago
Johnny Lim a723ac95a9 Polish
Closes gh-12999
7 years ago
Stephane Nicoll 080e189d06 Fix broken syntax 7 years ago
Stephane Nicoll fd47b728c1 Properly handle values with spaces
Closes gh-10741
7 years ago
Stephane Nicoll d4729f5389 Polish 7 years ago
Stephane Nicoll 40b7e02793 Polish "Add support for environment variables"
Closes gh-12800
7 years ago
Dmytro Nosan 95f7e3ca37 Add support for environment variables
See gh-12800
7 years ago
Stephane Nicoll 5dd4a7e91e Merge branch '2.0.x' 7 years ago
Stephane Nicoll 55ef9e6dc9 Deprecate excludeArtifactIds
While being able to exclude all artifacts of a given group is a handy
feature, excluding all artifacts with a given artifactId does not make
much sense as it should refer to a single artifact anyway. Also the
general "exclude" mechanism is meant to do the exact same thing.

Closes gh-12885
7 years ago
Andy Wilkinson 099f61ae6d Merge branch '2.0.x' 7 years ago
Andy Wilkinson c9f04c3977 Avoid race between container starting and getting mapped port 7 years ago
Stephane Nicoll 03539d8e16 Polish "Add system properties support using explicit configuration tag"
Closes gh-10741
7 years ago
Vadeg ba34bf6470 Add system properties support using explicit configuration tag
See gh-10741
7 years ago
Andy Wilkinson fe497d70b8 Merge branch '2.0.x' 7 years ago
Andy Wilkinson f6cc1cbd76 Make Testcontainer wait strategies final 7 years ago
Andy Wilkinson c9b2afbd1e Merge branch '2.0.x' 7 years ago
Andy Wilkinson f39cea0428 Try to stabilize build by giving Cassandra longer to start 7 years ago
Andy Wilkinson 6c504a5098 Fix deprecation warnings in Testcontainers wait strategies
See gh-12821
7 years ago
Andy Wilkinson 60bf4ef430 Merge branch '2.0.x' 7 years ago
Andy Wilkinson a5f3f36b58 Test the Gradle plugin against Gradle 4.7
Closes gh-12952
7 years ago
Andy Wilkinson 15a70153c1 Merge branch '2.0.x' 7 years ago
Andy Wilkinson 72ec2c8644 Polish “Only analyze configurations that we've registered to check”
Closes gh-12784
7 years ago
danhyun 1e447ebfbf Only analyze configurations that we've registered to check
See gh-12784
7 years ago
Andy Wilkinson 806978b8f1 Test unresolved dependency analysis in the Gradle plugin
See gh-12784
7 years ago
Stephane Nicoll 719fcb4038 Merge branch '2.0.x' 7 years ago
dreis2211 a930835b92 Replace <code> tags where possible
Closes gh-12922
7 years ago
Stephane Nicoll c43eb89823 Make sure that finalName is read only
Closes gh-12608
7 years ago
Madhura Bhave 9c7612e681 Fix NPE in WaitStrategy used for test containers 7 years ago
Andy Wilkinson f335ec00bf Polish 7 years ago
Phillip Webb 685babc829 Polish "Use lambdas for map entry iteration where possible"
Closes gh-12626
7 years ago
igor-suhorukov 69bc19e0ca Use lambdas for map entry iteration where possible
See gh-12626
7 years ago
Phillip Webb 696aedaef8 Merge branch '1.5.x' 7 years ago
Phillip Webb 9a64d3bf3f Fix AsciiBytes unicode decoding
Fix the decoding logic in the AsciiBytes `hashCode` and `matches` to
correctly deal with multi-byte encodings.

Fixes gh-12504
7 years ago
Phillip Webb 98a2a91d16 Polish 7 years ago
Madhura Bhave 8b29823885 Prevent StackOverFlowException in metadata processor
Fixes gh-11037
7 years ago
Andy Wilkinson 1f35abacd6 Polish “Configure Kotlin compiler to use -java-parameters by default”
Closes gh-12641
7 years ago
Rui Figueira 5e2726f896 Configure Kotlin compiler to use -java-parameters by default
See gh-12641
7 years ago
Stephane Nicoll 006decea2a Merge branch '1.5.x' 7 years ago
Phillip Webb 79ad03b584 Merge branch '1.5.x' 7 years ago
Andy Wilkinson 36ea387a67 Close RandomAccessDataFile when direct JarFile is closed
Previously, the underlying RandomAccessDataFile was not closed when
the JarFile that was using it was closed. This causes a problem on
Windows as the open file handle prevents the file from being deleted.

This commit updates JarFile to close the underlying
RandomAccessDataFile when it is closed and has a JarFileType of
DIRECT.

Previously, when accessing the manifest of a jar file that maps to a
nested directory (BOOT-INF/classes) a new JarFile was created from the
root jar file, the manifest was retrieved, and the new JarFile was
closed. This could lead to the underlying RandomAccessDataFile being
closed while it was still in use.

This commit improves JarFile to retrieve the manifest from the
existing outer JarFile, thereby avoiding the need to create and close
a new JarFile.

Unfortunately, PropertiesLauncher creates a number of scenarios where
a JarFile with a type of direct is closed while it’s still being used.
To accommodate this behaviour, RandomAccessDataFile has been updated
so that it can re-open the underlying RandomAccessFile if it is used
after it has been closed.

Closes gh-12296
7 years ago
Phillip Webb a4b0be089d Polish 7 years ago
dreis2211 0d3f3e46dd Fix typos
Closes gh-12468
7 years ago
Stephane Nicoll ed05e1f7ca Polish "Reorder modifiers to comply with the JLS"
Closes gh-12432
7 years ago
igor-suhorukov aebb475bc5 Reorder modifiers to comply with the JLS
See gh-12432
7 years ago
Andy Wilkinson 6d16c5ff6e Omit libraries with null destination when repackaging
Closes gh-12437
7 years ago
igor-suhorukov 4f4cc1569c Polish
Declarations should use Java collection interfaces such as "Deque" rather
than specific implementation classes such as "LinkedList".

Closes gh-12405
7 years ago
Stephane Nicoll 7d1faa1c88 Ignore static and abstract accessors
This commit updates the annotation processor and the binder to ignore
any static or abstract method that has the characteristics of a JavaBean
accessor. As a result, no property is generated for those (invalid)
accessor and no binding occurs on them either.

Closes gh-12390
7 years ago
Andy Wilkinson f918e0eb6a Merge branch '1.5.x' 7 years ago
dreis2211 3adced9962 Remove workaround for JDK-8023130 in RunProcess
With JDK 8 being the baseline and JDK 7 not being supported anymore we
can get rid of the workaround for a JDK 7 bug in
ProcessBuilder.inheritIO on Windows machines.

Closes gh-12337
7 years ago
Johnny Lim 751c444166 Polish
See gh-12326
7 years ago
Andy Wilkinson 3370c23ab9 Skip the Gradle plugin when building with the full profile and JDK 10
See gh-12028
7 years ago
Andy Wilkinson 2b1252e282 Skip the Gradle Plugin when building with JDK 10
Previously, the JDK 10 build would fail as we build the plugin using
Gradle 4.0.x (the lowest version of Gradle that we support) and
Gradle 4.0.x doesn't work with Java 10.

Upgrading to Gradle 4.1, which appears to work with Java 10, was
considered but rejected for now as it introduces the risk that we
inadvertently use an API that's new in 4.1 and break our 4.0 support.

This commit goes for the extreme option and disables building the
Gradle Plugin when building with JDK.

See gh-12028
7 years ago
Andy Wilkinson 4a3e0a231c Test the Gradle plugin against Gradle 4.6
Closes gh-12314
7 years ago
Andy Wilkinson e4a1fed3b8 Test the Gradle plugin against Gradle 4.6 7 years ago
Andy Wilkinson 188d120c9c Test the Gradle plugin against Gradle 4.5.1
Closes gh-12315
7 years ago
Andy Wilkinson 8d1e69bca4 Polish Gradle plugin's javadoc 7 years ago
Andy Wilkinson 703de64842 Reinstate imports 7 years ago
Phillip Webb 7bc535e4fa Polish 7 years ago
Stephane Nicoll 4180762d6d Polish contribution
Closes gh-12236
7 years ago
igor-suhorukov 56cbc65e7b Polish
See gh-12236
7 years ago
Andy Wilkinson 9640881f38 Fix BuildInfo up-to-date check when group, name, or version changes
Previously, if the project's group, name, or version changed the
BuildInfo task would still be considered up-to-date as the values of
the project's properties were not reflected in the fields of the
BuildInfo instance.

This commit updates BuildInfo to copy the value of the project's
property to the corresponding BuildInfo field when the property is
read using its getter method on BuildInfo.

Closes gh-12266
7 years ago
Phillip Webb 3e4da3cc37 Polish 7 years ago
Andy Wilkinson fdb9a1ea8f Consider time in BuildInfo up-to-date checks and allow it to be set
Closes gh-12111
Closes gh-12266
7 years ago
Andy Wilkinson 30f79f2fb1 Use application name as convention for distribution's base name
Closes gh-12232
7 years ago
Andy Wilkinson 60ac2e5c09 Reduce the amount of garbage produced by JarFile
Previously, working with a JarFile created a large amount of garbage
that was allocated on the thread local allocation buffer (TLAB).
The TLAB allocations made a significant contribution to GC pressure
and slowed down startup. This commit reduces the amount of garbage
by making a number of changes.

Reading from a RandomAccessDataFile has been reworked to avoid
creating new RandomAccessFile instances. A single RandomAccessFile
is now created for an entire jar file and it is used to read data from
anywhere in that jar file, including entries in nested jar files. To
ensure that reads remain thread-safe, a lock is taken on the
RandomAccessFile that is shared by all RandomAccessDataFile instances
that are provided access to (portions of) the same jar file.

Reading all of the bytes from a RandomAccessData has been reworked to
avoid the use of an InputStream that was created, used to read the
data, and then thrown away. In place of the InputStream-based
mechanism a method has been introduced that returns all of the
RandomAccessData as a byte[]. Building on this change, a method has
also been introduced to read a portion of a RandomAccessData as a
byte[]. This avoids the need to create a new RandomAccessData
subsection where the subsection was only used to read its entire
contents and then thrown away.

Decoding of an MS-DOS datetime has been reworked to use LocalDataTime
rather than GregorianCalendar. The former produces less garbage than
the latter.

Closes gh-12226
7 years ago
Phillip Webb 29c3be3590 Polish 7 years ago
Stephane Nicoll 306c79f0de Merge branch '1.5.x' 7 years ago
igor-suhorukov 98f4692c62 Polish
This commit changes invocations to immediately return the expression
instead of assigning it to a temporary variable. The method name should
be sufficient for callers to know exactly what will be returned.

Closes gh-12211
7 years ago
Stephane Nicoll 2641559231 Polish contribution
Closes gh-12202
7 years ago
dreis2211 e2fb093ccf Polish
See gh-12202
7 years ago
Johnny Lim d441a8a89a Polish
Closes gh-12205
7 years ago
Andy Wilkinson 85c7ed2746 Merge branch '1.5.x' 7 years ago
Phillip Webb 4b9c3c137e Polish Collection.toArray
Consistently use `StringUtils.toStringArray`, `ClassUtils.toClassArray`
or zero length when converting collections to arrays.

Fixes gh-12160
7 years ago
Stephane Nicoll 3fddfee65c Fix default value of endpoint's cache ttl
Closes gh-12173
7 years ago
igor-suhorukov fe023817c7 Polish static finals
Closes gh-12083
7 years ago
Johnny Lim 88b184ca23 Polish 7 years ago
Andy Wilkinson e1ab62668f Merge branch '1.5.x' 7 years ago
Andy Wilkinson 5522174e96 Provide package info for all packages included in javadoc 7 years ago
Andy Wilkinson a09c64e18c Polish 7 years ago
Andy Wilkinson 70c613819d Fix incomplete calls to assertThat 7 years ago
Andy Wilkinson 76a450dfba Format with Eclipse Oxygen SR2 7 years ago
Andy Wilkinson b4f4dd3fdd Correct location of JDT config files in Gradle plugin 7 years ago
Andy Wilkinson 8b15bbf702 Polish 7 years ago
Andy Wilkinson 76ed52c2f5 Polish "Support nested jar paths in loader.path"
Closes gh-11121
7 years ago
hanyong 9eb8e3d4e3 Support nested jar paths in loader.path
See gh-11121
7 years ago
dreis2211 81459efffa Use HTTPS URLs where applicable 7 years ago
Andy Wilkinson 875091ed85 Polish “Remove or use unused method parameters”
Closes gh-11812
7 years ago
igor-suhorukov 717bd2c580 Remove or use unused method parameters 7 years ago
Phillip Webb 7d5e41f7dc Polish 7 years ago
Andy Wilkinson 1d2b85b2b8 Ensure that TestJarFile uses insertion order for jar's entries
Previously, the order of the entries in a TestJarFile was determined
by the underlying file system rather than by the order in which
they were added. This could lead to unpredicatable ordering and
failures in tests that verify archive entry ordering.

This commit updates TestJarFile to add entries to the archive in
insertion order.

See gh-11695
See gh-11696
7 years ago
Andy Wilkinson b2dad7f1c4 Rework entry ordering of repackaged archives
Previously, the Repackager would write entries in the following
order:

- Libraries that require unpacking
- Existing entries
    - Application classes
    - WEB-INF/lib jars in a war
- Libraries that do not require unpacking
- Loader classes

Libraries that require unpacking were written before existing entries
so that, when repackaging a war, an entry in WEB-INF/lib would not
get in first and prevent a library with same location from being
unpacked. However, this had the unwanted side-effect of changing
the classpath order when an entry requires unpacking.

This commit reworks the handling of existing entries and libraries
that require unpacking so that existing entries can be written first
while also marking any that match a library that requires unpacking
as requiring unpacking.

Additionally, loader classes are now written first. They are the
first classes in the jar that will be used so it seems to make sense
for them to appear first. This aligns Maven-based repackaging
with the Gradle plugin's behaviour and with the structure documented
in the reference documentation's "The Executable Jar Format" appendix.

The net result of the changes described above is that entries are
now written in the following order:

- Loader classes
- Existing entries
    - Application classes
    - WEB-INF/lib jars in a war marked for unpacking if needed
- Libraries

Closes gh-11695
Closes gh-11696
7 years ago
Johnny Lim 3cead7693d Polish
Closes gh-11871
7 years ago
Andy Wilkinson 8f116f7e6f Align ordering of BootJar and BootWar archive entries
Previously, the ordering of the entries in an archive produced by
BootJar was different to the ordering of the entries in an archive
produced by BootWar. The latter placed application classes before
any nested jars, whereas the former was the other way around.

This commit updates BootJar to use the same ordering as BootWar and
adds tests to verify that the ordering is the following:

1. Loader classes
2. Application classes (BOOT-INF/classes or WEB-INF/classes)
3. Nested jars (BOOT-INF/lib or WEB-INF/lib)
4. Provided nested jars in a war (WEB-INF/lib-provided)

The tests also verify that the position of a library is not affected
by it requiring unpacking.

See gh-11695
See gh-11696
7 years ago
Phillip Webb 7c5042d079 Don't run `apply-plugin` tests
Stop running apply-plugin tests as part of the build since during a
release the version number will change and the jar will not be
available.

Fixes gh-11857
7 years ago
Phillip Webb 6dddceacad Always include plugin classpath in sample gradle
Update a couple of the `spring-boot-gradle-plugin` sample gradle flies
so that they include the running classpath. The additional lines are
contained within a tag which is ultimately filtered from the final
documentation.

Fixes gh-11857
7 years ago
Phillip Webb 886b39293c Merge branch '1.5.x' 7 years ago
Phillip Webb 187c4d728c Merge branch '1.5.x' 7 years ago
Stephane Nicoll 51c307f643 Merge branch '1.5.x' 7 years ago
Phillip Webb af50a18da9 Polish 7 years ago
Andy Wilkinson 199088b0c9 Set kotlin.version when Kotlin's Gradle plugin is applied
Closes gh-11711
7 years ago
dreis2211 c1675c2d5f Use InvocationOnMock.getArgument() where possible
Closes gh-11818
7 years ago
dreis2211 a7663c88d3 Replace casted Mockito.any() calls
Closes gh-11817
7 years ago
Stephane Nicoll 5e26d04c05 Only generate time-to-live property for matching endpoints
This commit makes sure that a "cache.time-to-live" property is not
generated for endpoints that do not have a main read operation (i.e. a
read operation with no parameter or only nullable parameters).

This matches the endpoint feature that provides caching for only such
operation.

Closes gh-11703
7 years ago
Phillip Webb b234501af3 Polish 7 years ago
Johnny Lim a46e047c5d Polish
Closes gh-11792
7 years ago
Andy Wilkinson 498f66fcdc Test the Gradle plugin against Gradle 4.5
Closes gh-11768
7 years ago
Phillip Webb adfb6dc128 Polish 7 years ago
Stephane Nicoll 43bac617d4 Add access to short deprecation reason
Closes gh-11770
7 years ago
igor-suhorukov 093ca0a687 Use EnumMap whenever possible
Replace regular Map instances with EnumMap to reduce memory consumption.

Closes gh-11760
7 years ago
Phillip Webb ab6ad6aa4b Polish 7 years ago
Andy Wilkinson 1a1a62b744 Protect tests against Cassandra startup failures
On CI, Cassandra running inside the Docker container sometimes fails
to start or the start times out. This has nothing to do with Boot so
we  attempt to protect our tests from the flakiness of the container
by allowing 3 startup attempts.
7 years ago
andrey.onufreyko b19dcb13e2 Replace string arguments with char
Optimize method calls by replacing single character String arguments
with char.

Closes gh-11680
7 years ago
dreis2211 b7e663e820 Polish
Closes gh-11724
7 years ago
Phillip Webb f3379668ac Polish 7 years ago
Phillip Webb 6d93573db0 Merge branch '1.5.x' 7 years ago
Stephane Nicoll ba6be4f22f Merge branch '1.5.x' 7 years ago
Stephane Nicoll aa748cb0ef Polish "Use System.lineSeparator()""
Closes gh-11665
7 years ago
Johnny Lim d8c83af987 Use System.lineSeparator()
See gh-11665
7 years ago
Stephane Nicoll 49b5fe0c29 Polish
As `validation-api` 2 is available by default, this commit adds the
integration test as a regular test case. The integration test is kept to
exercise what happens in a standard project.

See gh-11512
7 years ago
Stephane Nicoll 60f5cf10ba Merge branch '1.5.x' 7 years ago
Andy Wilkinson 54c0cf513b Polish 7 years ago
Stephane Nicoll d43346d6c2 Polish "Fix potential resource leaks"
Closes gh-11624
7 years ago
igor-suhorukov 5a4238acfc Fix potential resource leaks
See gh-11624
7 years ago
Stephane Nicoll f8af6c8134 Merge branch '1.5.x' 7 years ago
Andy Wilkinson ffc99b03dd Remove use of deprecated Gradle API from plugin's public API
This commit removes the use of the incubating PropertyState and
Provider API that was introduced in Gradle 4.0 and deprecated in
Gradle 4.3. A not-deprecated-but-still-incubating replacement was
introduced in Gradle 4.3. The short life of PropertyState and Provider
has made me wary of using an incubating Gradle API in our public API
as it may not be stable for long. Therefore, this commit does not move
to the replacement as it is incubating. Instead, it falls back to
using Gradle's convention mapping. This is internal API, but its use
is not part of our public API and I perceive the risk of using it to
be lower than using the deprecated and/or incubating API alternatives.

Closes gh-11640
7 years ago
Andy Wilkinson 5e17fc775c Test the Gradle plugin against Gradle 4.4.1
Closes gh-11654
7 years ago
Andy Wilkinson 2668e41dd5 Make it easier to just use Boot’s dependency management with Gradle
Closes gh-11059
7 years ago
Johnny Lim 77150f8dc9 Polish
Closes gh-11630
7 years ago
Phillip Webb b078698f20 Update copyright year of changed files 7 years ago
Phillip Webb 85d3f5a180 Fix NPE in test containers
Fix NPE accidentally introduced during refinement.
7 years ago
Phillip Webb 201da97774 Further refine test containers 7 years ago
Andy Wilkinson 996b3ef7f2 Refine test containers 7 years ago
Phillip Webb 87bccb96f1 Merge branch '1.5.x' 7 years ago
Stephane Nicoll 66d58294d5 Merge branch '1.5.x' 7 years ago
Stephane Nicoll f2d3f51f3f Merge branch '1.5.x' 7 years ago
Stephane Nicoll ac004eabf3 Update copyright header
See gh-11510
7 years ago
Johnny Lim 37d8eedae3 Polish
Closes gh-11510
7 years ago
Madhura Bhave e28915bd4b Make integration tests self-contained
Fixes gh-10516
7 years ago
Andy Wilkinson a7808388ad Make github-tag property available when generating Gradle plugin docs
Closes gh-11490
7 years ago
Stephane Nicoll 03dd53f347 Fix broken merge 7 years ago
Stephane Nicoll e3bfd797a3 Merge branch '1.5.x' 7 years ago
Phillip Webb bee5fa7fc6 Polish 7 years ago
Andy Wilkinson 38ac595615 Polish 7 years ago
Stephane Nicoll f0b210c751 Merge branch '1.5.x' 7 years ago
Stephane Nicoll 6277d0ceb7 Update copyright header 7 years ago
dreis2211 eb1ae2dd79 Fix typos
Closes gh-11460
7 years ago
Andy Wilkinson b545330d8e Fix reusable archive creation with Gradle 4.1 and later
Closes gh-11468
7 years ago
Madhura Bhave 8102dc78cb Remove redundant throws declarations 7 years ago
Stephane Nicoll 5328508421 Merge branch '1.5.x' 7 years ago
Johnny Lim 8f7ab95e0e Use BufferedReader.lines()
Closes gh-11436
7 years ago
Johnny Lim 3c5ccb1166 Polish
Closes gh-11418
7 years ago
Johnny Lim 4cc598ac5e Replace contains() with indexOf()
Closes gh-11373
7 years ago
Phillip Webb 2efa21c570 Make hot methods in-line friendly
Refactor a few hot methods so that they are more likely to be in-lined
by the JIT.

Fixes gh-11409
7 years ago
Phillip Webb 7f0048a899 Use fast exceptions when enumerating resources
Update the `LaunchedURLClassLoader` used for fat jar support so that
each iteration on a `findResources` result also allows for fast
exceptions.

Fixes gh-11406
7 years ago
Phillip Webb aa66d5dfb8 Reduce garbage created when loading fat jars
Refactor fat jar loader classes so that less `char[]` instances are
created. This is primarily achieved by adding a new `StringSequence`
class that can chop up Strings without needing to copy the underlying
array. Since Java 8, calls to `String.subString(...)` always copy the
underlying char array. For many of the operations that we need, this
is unnecessary.

Fixes gh-11405
7 years ago
dreis2211 00d12c5b2d Align 'behavior' spelling to style guide
Closes gh-11394
7 years ago
Phillip Webb 3273859fde Polish 7 years ago
Phillip Webb 5ca608330c Merge branch '1.5.x' 7 years ago
Stephane Nicoll a626f5462d Consistent use of @AliasFor
Closes gh-10836
7 years ago
Stephane Nicoll 47c8b5731a polish 7 years ago
Stephane Nicoll b6aa0f24e2 Clean endpointIds in generated metadata
Closes gh-11107
7 years ago
Stephane Nicoll 7f2af8b209 Polish 7 years ago
Andy Wilkinson 58d1f99a1e Merge branch '1.5.x' 7 years ago
Stephane Nicoll 23218add90 Polish 7 years ago
Brian Clozel e68d8a3f98 Merge branch '1.5.x' 7 years ago
Johnny Lim 96250743b5 Add missing "abstract" keywords
Closes gh-11303
7 years ago
Johnny Lim 6d54072e04 Remove "final" keywords
Closes gh-11294
7 years ago
Stephane Nicoll 36ea2ee87b Merge branch '1.5.x' 7 years ago
Johnny Lim 2c204f2154 Polish
Closes gh-11242
7 years ago
Andy Wilkinson 6cae9257fe Merge branch '1.5.x' 7 years ago
Johnny Lim 44299bb980 Polish
Closes gh-11206
7 years ago
Stephane Nicoll 9965221378 Merge branch '1.5.x' 7 years ago
Andy Wilkinson ffca60d308 Revert "Rework BootRun so that it does not subclass JavaExec"
This reverts commit 6eee9de3c1.

Closes gh-10872
7 years ago
Andy Wilkinson aa9c5e6e08 Align expectation with new endpoint enabled property description
See gh-10870
7 years ago
Phillip Webb e82913dd5a Align appendix edits with source code
Port editing changes from append to java source files to ensure that
IDE meta-data also reflects the improvements.

Closes gh-10870
7 years ago
Andy Wilkinson 417c98304d Remove assumption about file separator that is incorrect on Windows
Closes gh-11087
7 years ago
Phillip Webb cbaf0fa686 Support Duration in generated meta-data
Update the configuration properties annotation processor to deal
with `Duration` based default values. For example a field that
defaults to `Duration.ofSeconds(10)` will have a meta-data default
value of `10s`.

See gh-11080
7 years ago
Johnny Lim 1783a072ad Remove explicit constructor super() calls
Closes gh-11068
7 years ago
Phillip Webb a6cefc5ba0 Polish 7 years ago
Johnny Lim 639bf5e99c Update "Building reference documentation" section
This commit also changes `spring-boot-maven-plugin/pom.xml` to make it
work with `full` Maven profile.

Closes gh-11045
7 years ago
Johnny Lim cbb483735d Polish
Closes gh-10948
7 years ago
dreis2211 1e4941e29a Use StandardCharsets where possible
Closes gh-11036
7 years ago
Stephane Nicoll bcab23e538 Polish "Separate endpoint concerns"
* Fix the endpoint prefix for generated metadata.
* Polish and improve configuration key descriptions.

Closes gh-10176
7 years ago
Phillip Webb fd5c43cdc9 Separate endpoint concerns
Update endpoint code to provide cleaner separation of concerns.
Specifically, the top level endpoint package is no longer aware of
the fact that JMX and HTTP are ultimately used to expose endpoints.
Caching concerns have also been abstracted behind a general purpose
`OperationMethodInvokerAdvisor` interface.

Configuration properties have been refined to further enforce
separation. The `management.endpoint.<name>` prefix provides
configuration for a  single endpoint (including enable and cache
time-to-live). These  properties are now technology agnostic (they
don't include `web` or `jmx` sub properties).

The `management.endpoints.<technology>` prefix provide exposure specific
configuration. For example, `management.endpoints.web.path-mapping`
allow endpoint URLs to be changed.

Endpoint enabled/disabled logic has been simplified so that endpoints
can't be disabled per exposure technology. Instead a filter based
approach is used to allow refinement of what endpoints are exposed over
a given technology.

Fixes gh-10176
7 years ago
Johnny Lim bd0dcfb172 Utilize StandardCharsets
Closes gh-10972
7 years ago
Stephane Nicoll 424793d806 Merge branch '1.5.x' 7 years ago
Johnny Lim c05a299520 Polish
Closes gh-10921
7 years ago
Phillip Webb b6166dc12a Move `Assume` to spring-boot-test-support
Fixes gh-10866
7 years ago
Johnny Lim 84d137d41d Restore execution permission on launch.script
Restore the execute permission that was accidentally removed in
commit 5ee28a08e1.

Closes gh-10801
7 years ago
Andy Wilkinson e43d0adc4f Polish 7 years ago
Andy Wilkinson 9bbccb093a Rename Gradle plugin tests to work around Windows filename restrictions
The Gradle plugin integration tests find their Gradle build scripts
using a naming convention of ${ClassName}-${methodName}.gradle. This
convention led to two gradle scripts with filenames that were long
enough to causes problems on Windows.

This commit renames two test methods to reduce the length of their
names and, therefore, the names of their corresponding Gradle script
files.

Closes gh-10868
7 years ago
Phillip Webb c11e514767 Allow individual builds of invoker plugin projects
Clean `${revision}` variables when running invoker based integration
tests. Prior to this commit some `${revision}` placeholders remained
in the invoker local repository preventing the project from being built
outside of the reactor.

Fixes gh-10667
7 years ago
Phillip Webb c55b5d7111 Polish 7 years ago
Andy Wilkinson 6f55b57855 Make discovery of additional config metdata more robust with Gradle
Previously, the configuration metadata annotation processor relied
upon an additional metadata file have been copied to an output
location. When building with Gradle, it's the processResources task
that performs this copy and there is no guarantee that it will have
run before the compileJava task unless an explicit dependency betwee
the two tasks has been configured. If a project is built using
Gradle's parallel build support, the likelihood of this required
ordering not occurring increases.

This commit updates the configuration metadata annotation processor to
consider a new annotation processor option when looking for the
additional config metadata file. The Gradle plugin has been updated
to provide this option as a compiler argument. The option is only
provided when the annotation processor is found on the compilation
classpath to avoid a warning from javac's annotation processing about
the use of an option that is not supported by any of the available
annotation processors.

Closes gh-9755
7 years ago
Andy Wilkinson 48cc7bde30 Test the Gradle plugin against Gradle 4.3
Closes gh-10769
7 years ago
Stephane Nicoll 4dcc354f86 Merge branch '1.5.x' 7 years ago
Stephane Nicoll a688613fb4 Merge branch '1.5.x' 7 years ago
Andy Wilkinson ca4d7f7322 Test the Gradle plugin against Gradle 4.3-rc-4
See gh-10769
7 years ago
Stephane Nicoll 56afc25304 Allow to customize the path of a web endpoint
This commit introduces a endpoints.<id>.web.path generic property that
allows to customize the path of an endpoint. By default the path is the
same as the id of the endpoint.

Such customization does not apply for the CloudFoundry specific
endpoints.

Closes gh-10181
7 years ago
Andy Wilkinson c3f3bba090 Test the Gradle plugin against Gradle 4.3-rc-3
See gh-10769
7 years ago
Andy Wilkinson 2b426c30a6 Polish “Remove explicit type arguments”
Closes gh-10494
7 years ago
Johnny Lim 6168fae720 Remove explicit type arguments
See gh-10494
7 years ago
Andy Wilkinson a256602c7b Polish 7 years ago
Andy Wilkinson ccca943e33 Add mainClassName to springBoot DSL in Gradle plugin
This commit introduces a new mainClassName property on the springBoot
DSL provided by the Gradle plugin. It can be used to explicitly
configure the mainClassName of the default bootRun, bootJar, and
bootWar tasks in a single place. Previously, the only mechanism
provided to do so was the mainClassName property that's only available
when the application plugin has been applied.

Closes gh-10623
7 years ago
Andy Wilkinson 5502aaafd1 Use mainClassName consistently across BootRun, BootJar, and BootWar
Previously, BootRun used the main property to configure the name of
the main class to run while BootJar and BootWar used the mainClass
property. Both were different to the application plugin which provides
a mainClassName project property.

This commit updates BootRun, BootJar, and BootWar to change the name
of the property used to configure the name of the main class to be
mainClassName. This makes the three Boot-specific tasks consistent
with each other, and also aligns them with Gradle's own application
plugin.

Closes gh-10622
7 years ago
Stephane Nicoll dd90f071c6 Bump ASM version to be Java 8+ compatible
Closes gh-10647
7 years ago
dreis2211 3b71393e0a Use Assert.state() with Supplier where possible
See gh-10658
7 years ago
Johnny Lim 5aa32b3d0f Polish
Closes gh-10636
7 years ago
Johnny Lim a51765d0f4 Fix broken documentation links
Update links following recent project restructure.

Closes gh-10601
7 years ago
dreis2211 a76005e8d9 Remove concatenations with empty string
Closes gh-10512
7 years ago
Phillip Webb 748e0779b6 Update copyright year for changed files 7 years ago
Phillip Webb 0be119eadd Don't deploy spring-boot-test-support
Fixes gh-10518
7 years ago
Andy Wilkinson 6323dc4e21 Reduce logging that is produced when building Gradle plugin
Travis is terminating builds as they are producing too much logging.
A major contributor to the volume of logging is the Gradle plugin's
build. This commit switches off debug logging for the build and
enables test event logging. This considerably reduces the volume of
logging that is produced while still providing some insight into the
build's tests.
7 years ago
Andy Wilkinson 41fc023a67 Remove unnecessary override of helper plugin's version 7 years ago
Phillip Webb 3476f7b8a4 Add debug logging switches to Gradle launch
Update launched Gradle options to include debug logging.

See gh-9316
7 years ago
Phillip Webb d588bf7506 Fix odd Java parsing issues
Update `LoggingMainClassTimeWarningListener` to import individual
`Layout` inner classes. This fixes an odd javac parse issue that
otherwise occurs.

See gh-9316
7 years ago
Phillip Webb c6f930b49e Fix Gradle to use flattened POM file
Update the Gradle plugin to use version information from the
flattened POM.xml files.

See gh-9316
7 years ago
Phillip Webb b87f9c11f1 Fix POMs for the updated build/release process
Fix POMs following project relocations and apply CI friendly Maven
conventions.

See gh-9316
7 years ago
Phillip Webb 0ba4830b4f Relocate projects to spring-boot-project
Move projects to better reflect the way that Spring Boot is released.

The following projects are under `spring-boot-project`:

  - `spring-boot`
  - `spring-boot-autoconfigure`
  - `spring-boot-tools`
  - `spring-boot-starters`
  - `spring-boot-actuator`
  - `spring-boot-actuator-autoconfigure`
  - `spring-boot-test`
  - `spring-boot-test-autoconfigure`
  - `spring-boot-devtools`
  - `spring-boot-cli`
  - `spring-boot-docs`

See gh-9316
7 years ago