Full Code of spring-projects/spring-boot for AI

main d04cb90d1983 cached
11593 files
35.9 MB
10.4M tokens
67400 symbols
2 requests
Copy disabled (too large) Download .txt
Showing preview only (41,764K chars total). Download the full file to get everything.
Repository: spring-projects/spring-boot
Branch: main
Commit: d04cb90d1983
Files: 11593
Total size: 35.9 MB

Directory structure:
gitextract_5h52i2gm/

├── .editorconfig
├── .git-blame-ignore-revs
├── .github/
│   ├── ISSUE_TEMPLATE/
│   │   ├── config.yml
│   │   └── issue.md
│   ├── PULL_REQUEST_TEMPLATE.md
│   ├── actions/
│   │   ├── await-http-resource/
│   │   │   └── action.yml
│   │   ├── create-github-release/
│   │   │   ├── action.yml
│   │   │   ├── changelog-generator-commercial.yml
│   │   │   └── changelog-generator-oss.yml
│   │   ├── prepare-gradle-build/
│   │   │   └── action.yml
│   │   ├── print-jvm-thread-dumps/
│   │   │   └── action.yml
│   │   ├── publish-gradle-plugin/
│   │   │   ├── action.yml
│   │   │   ├── artifacts.spec
│   │   │   ├── build.gradle
│   │   │   └── settings.gradle
│   │   ├── publish-to-sdkman/
│   │   │   └── action.yml
│   │   ├── send-notification/
│   │   │   └── action.yml
│   │   ├── sync-to-maven-central/
│   │   │   ├── action.yml
│   │   │   └── artifacts.spec
│   │   └── update-homebrew-tap/
│   │       └── action.yml
│   ├── dco.yml
│   ├── dependabot.yml
│   ├── scripts/
│   │   └── reclaim-docker-diskspace.sh
│   └── workflows/
│       ├── build-and-deploy-snapshot.yml
│       ├── build-pull-request.yml
│       ├── ci.yml
│       ├── distribute.yml
│       ├── release-milestone.yml
│       ├── release.yml
│       ├── run-codeql-analysis.yml
│       ├── run-system-tests.yml
│       ├── trigger-docs-build.yml
│       └── verify.yml
├── .gitignore
├── .idea/
│   └── .gitignore
├── .sdkmanrc
├── CONTRIBUTING.adoc
├── LICENSE.txt
├── README.adoc
├── SUPPORT.adoc
├── antora/
│   └── package.json
├── build-plugin/
│   ├── spring-boot-antlib/
│   │   ├── build.gradle
│   │   └── src/
│   │       ├── it/
│   │       │   └── sample/
│   │       │       ├── build.xml
│   │       │       ├── ivysettings.xml
│   │       │       └── src/
│   │       │           └── main/
│   │       │               ├── java/
│   │       │               │   └── org/
│   │       │               │       └── test/
│   │       │               │           └── SampleApplication.java
│   │       │               └── resources/
│   │       │                   └── foo
│   │       └── main/
│   │           ├── java/
│   │           │   └── org/
│   │           │       └── springframework/
│   │           │           └── boot/
│   │           │               └── ant/
│   │           │                   ├── FindMainClass.java
│   │           │                   ├── ShareAntlibLoader.java
│   │           │                   └── package-info.java
│   │           └── resources/
│   │               └── org/
│   │                   └── springframework/
│   │                       └── boot/
│   │                           └── ant/
│   │                               └── antlib.xml
│   ├── spring-boot-gradle-plugin/
│   │   ├── .gitignore
│   │   ├── build.gradle
│   │   └── src/
│   │       ├── dockerTest/
│   │       │   ├── java/
│   │       │   │   └── org/
│   │       │   │       └── springframework/
│   │       │   │           └── boot/
│   │       │   │               └── gradle/
│   │       │   │                   └── tasks/
│   │       │   │                       └── bundling/
│   │       │   │                           ├── BootBuildImageIntegrationTests.java
│   │       │   │                           └── BootBuildImageRegistryIntegrationTests.java
│   │       │   └── resources/
│   │       │       └── org/
│   │       │           └── springframework/
│   │       │               └── boot/
│   │       │                   └── gradle/
│   │       │                       └── tasks/
│   │       │                           └── bundling/
│   │       │                               ├── BootBuildImageIntegrationTests-buildsImageOnLinuxArmWithImagePlatformLinuxArm.gradle
│   │       │                               ├── BootBuildImageIntegrationTests-buildsImageWithApplicationDirectory.gradle
│   │       │                               ├── BootBuildImageIntegrationTests-buildsImageWithBindCaches.gradle
│   │       │                               ├── BootBuildImageIntegrationTests-buildsImageWithBinding.gradle
│   │       │                               ├── BootBuildImageIntegrationTests-buildsImageWithBuildpackFromBuilder.gradle
│   │       │                               ├── BootBuildImageIntegrationTests-buildsImageWithBuildpackFromDirectory.gradle
│   │       │                               ├── BootBuildImageIntegrationTests-buildsImageWithBuildpackFromTarGzip.gradle
│   │       │                               ├── BootBuildImageIntegrationTests-buildsImageWithBuildpacksFromImages.gradle
│   │       │                               ├── BootBuildImageIntegrationTests-buildsImageWithCommandLineOptions.gradle
│   │       │                               ├── BootBuildImageIntegrationTests-buildsImageWithCreatedDate.gradle
│   │       │                               ├── BootBuildImageIntegrationTests-buildsImageWithCurrentCreatedDate.gradle
│   │       │                               ├── BootBuildImageIntegrationTests-buildsImageWithCustomBuilderAndRunImage.gradle
│   │       │                               ├── BootBuildImageIntegrationTests-buildsImageWithCustomName.gradle
│   │       │                               ├── BootBuildImageIntegrationTests-buildsImageWithEmptySecurityOptions.gradle
│   │       │                               ├── BootBuildImageIntegrationTests-buildsImageWithNetworkModeNone.gradle
│   │       │                               ├── BootBuildImageIntegrationTests-buildsImageWithPullPolicy.gradle
│   │       │                               ├── BootBuildImageIntegrationTests-buildsImageWithTag.gradle
│   │       │                               ├── BootBuildImageIntegrationTests-buildsImageWithTrustBuilder.gradle
│   │       │                               ├── BootBuildImageIntegrationTests-buildsImageWithVolumeCaches.gradle
│   │       │                               ├── BootBuildImageIntegrationTests-buildsImageWithWarPackagingAndJarConfiguration.gradle
│   │       │                               ├── BootBuildImageIntegrationTests-failsWhenBuildingOnLinuxAmdWithImagePlatformLinuxArm.gradle
│   │       │                               ├── BootBuildImageIntegrationTests-failsWhenCachesAreConfiguredTwice.gradle
│   │       │                               ├── BootBuildImageIntegrationTests-failsWithBuilderError.gradle
│   │       │                               ├── BootBuildImageIntegrationTests-failsWithBuildpackNotInBuilder.gradle
│   │       │                               ├── BootBuildImageIntegrationTests-failsWithIncompatiblePlatform.gradle
│   │       │                               ├── BootBuildImageIntegrationTests-failsWithInvalidCreatedDate.gradle
│   │       │                               ├── BootBuildImageIntegrationTests-failsWithInvalidTag.gradle
│   │       │                               ├── BootBuildImageIntegrationTests.gradle
│   │       │                               └── BootBuildImageRegistryIntegrationTests.gradle
│   │       ├── docs/
│   │       │   └── antora/
│   │       │       ├── antora.yml
│   │       │       ├── local-nav.adoc
│   │       │       └── modules/
│   │       │           └── gradle-plugin/
│   │       │               ├── examples/
│   │       │               │   ├── aot/
│   │       │               │   │   ├── apply-aot-plugin.gradle
│   │       │               │   │   ├── apply-aot-plugin.gradle.kts
│   │       │               │   │   ├── apply-native-image-plugin.gradle
│   │       │               │   │   └── apply-native-image-plugin.gradle.kts
│   │       │               │   ├── getting-started/
│   │       │               │   │   ├── apply-plugin-commercial.gradle
│   │       │               │   │   ├── apply-plugin-commercial.gradle.kts
│   │       │               │   │   ├── apply-plugin-release.gradle
│   │       │               │   │   ├── apply-plugin-release.gradle.kts
│   │       │               │   │   ├── apply-plugin-snapshot.gradle
│   │       │               │   │   ├── milestone-settings.gradle
│   │       │               │   │   ├── milestone-settings.gradle.kts
│   │       │               │   │   ├── snapshot-settings.gradle
│   │       │               │   │   ├── snapshot-settings.gradle.kts
│   │       │               │   │   ├── typical-plugins.gradle
│   │       │               │   │   └── typical-plugins.gradle.kts
│   │       │               │   ├── integrating-with-actuator/
│   │       │               │   │   ├── build-info-additional.gradle
│   │       │               │   │   ├── build-info-additional.gradle.kts
│   │       │               │   │   ├── build-info-basic.gradle
│   │       │               │   │   ├── build-info-basic.gradle.kts
│   │       │               │   │   ├── build-info-custom-values.gradle
│   │       │               │   │   ├── build-info-custom-values.gradle.kts
│   │       │               │   │   ├── build-info-exclude-time.gradle
│   │       │               │   │   └── build-info-exclude-time.gradle.kts
│   │       │               │   ├── managing-dependencies/
│   │       │               │   │   ├── configure-bom-with-plugins.gradle.kts
│   │       │               │   │   ├── configure-bom.gradle
│   │       │               │   │   ├── configure-bom.gradle.kts
│   │       │               │   │   ├── configure-platform.gradle
│   │       │               │   │   ├── configure-platform.gradle.kts
│   │       │               │   │   ├── custom-version-with-platform.gradle
│   │       │               │   │   ├── custom-version-with-platform.gradle.kts
│   │       │               │   │   ├── custom-version.gradle
│   │       │               │   │   ├── custom-version.gradle.kts
│   │       │               │   │   ├── depend-on-plugin-commercial.gradle
│   │       │               │   │   ├── depend-on-plugin-commercial.gradle.kts
│   │       │               │   │   ├── depend-on-plugin-milestone.gradle
│   │       │               │   │   ├── depend-on-plugin-release.gradle
│   │       │               │   │   ├── depend-on-plugin-release.gradle.kts
│   │       │               │   │   ├── depend-on-plugin-snapshot.gradle
│   │       │               │   │   ├── dependencies.gradle
│   │       │               │   │   └── dependencies.gradle.kts
│   │       │               │   ├── packaging/
│   │       │               │   │   ├── application-plugin-main-class.gradle
│   │       │               │   │   ├── application-plugin-main-class.gradle.kts
│   │       │               │   │   ├── boot-build-image-bind-caches.gradle
│   │       │               │   │   ├── boot-build-image-bind-caches.gradle.kts
│   │       │               │   │   ├── boot-build-image-builder.gradle
│   │       │               │   │   ├── boot-build-image-builder.gradle.kts
│   │       │               │   │   ├── boot-build-image-buildpacks.gradle
│   │       │               │   │   ├── boot-build-image-buildpacks.gradle.kts
│   │       │               │   │   ├── boot-build-image-caches.gradle
│   │       │               │   │   ├── boot-build-image-caches.gradle.kts
│   │       │               │   │   ├── boot-build-image-docker-auth-token.gradle
│   │       │               │   │   ├── boot-build-image-docker-auth-token.gradle.kts
│   │       │               │   │   ├── boot-build-image-docker-auth-user.gradle
│   │       │               │   │   ├── boot-build-image-docker-auth-user.gradle.kts
│   │       │               │   │   ├── boot-build-image-docker-host-colima.gradle
│   │       │               │   │   ├── boot-build-image-docker-host-colima.gradle.kts
│   │       │               │   │   ├── boot-build-image-docker-host-podman.gradle
│   │       │               │   │   ├── boot-build-image-docker-host-podman.gradle.kts
│   │       │               │   │   ├── boot-build-image-docker-host.gradle
│   │       │               │   │   ├── boot-build-image-docker-host.gradle.kts
│   │       │               │   │   ├── boot-build-image-env-proxy.gradle
│   │       │               │   │   ├── boot-build-image-env-proxy.gradle.kts
│   │       │               │   │   ├── boot-build-image-env-runtime.gradle
│   │       │               │   │   ├── boot-build-image-env-runtime.gradle.kts
│   │       │               │   │   ├── boot-build-image-env.gradle
│   │       │               │   │   ├── boot-build-image-env.gradle.kts
│   │       │               │   │   ├── boot-build-image-name.gradle
│   │       │               │   │   ├── boot-build-image-name.gradle.kts
│   │       │               │   │   ├── boot-build-image-publish.gradle
│   │       │               │   │   ├── boot-build-image-publish.gradle.kts
│   │       │               │   │   ├── boot-jar-and-jar-classifiers.gradle
│   │       │               │   │   ├── boot-jar-and-jar-classifiers.gradle.kts
│   │       │               │   │   ├── boot-jar-layered-custom.gradle
│   │       │               │   │   ├── boot-jar-layered-custom.gradle.kts
│   │       │               │   │   ├── boot-jar-layered-disabled.gradle
│   │       │               │   │   ├── boot-jar-layered-disabled.gradle.kts
│   │       │               │   │   ├── boot-jar-layered-exclude-tools.gradle
│   │       │               │   │   ├── boot-jar-layered-exclude-tools.gradle.kts
│   │       │               │   │   ├── boot-jar-main-class.gradle
│   │       │               │   │   ├── boot-jar-main-class.gradle.kts
│   │       │               │   │   ├── boot-jar-manifest-main-class.gradle
│   │       │               │   │   ├── boot-jar-manifest-main-class.gradle.kts
│   │       │               │   │   ├── boot-jar-requires-unpack.gradle
│   │       │               │   │   ├── boot-jar-requires-unpack.gradle.kts
│   │       │               │   │   ├── boot-war-include-devtools.gradle
│   │       │               │   │   ├── boot-war-include-devtools.gradle.kts
│   │       │               │   │   ├── boot-war-properties-launcher.gradle
│   │       │               │   │   ├── boot-war-properties-launcher.gradle.kts
│   │       │               │   │   ├── only-boot-jar.gradle
│   │       │               │   │   ├── only-boot-jar.gradle.kts
│   │       │               │   │   ├── spring-boot-dsl-main-class.gradle
│   │       │               │   │   ├── spring-boot-dsl-main-class.gradle.kts
│   │       │               │   │   ├── war-container-dependency.gradle
│   │       │               │   │   └── war-container-dependency.gradle.kts
│   │       │               │   ├── publishing/
│   │       │               │   │   ├── maven-publish.gradle
│   │       │               │   │   └── maven-publish.gradle.kts
│   │       │               │   └── running/
│   │       │               │       ├── application-plugin-main-class-name.gradle
│   │       │               │       ├── application-plugin-main-class-name.gradle.kts
│   │       │               │       ├── boot-run-disable-optimized-launch.gradle
│   │       │               │       ├── boot-run-disable-optimized-launch.gradle.kts
│   │       │               │       ├── boot-run-main.gradle
│   │       │               │       ├── boot-run-main.gradle.kts
│   │       │               │       ├── boot-run-source-resources.gradle
│   │       │               │       ├── boot-run-source-resources.gradle.kts
│   │       │               │       ├── boot-run-system-property.gradle
│   │       │               │       ├── boot-run-system-property.gradle.kts
│   │       │               │       ├── spring-boot-dsl-main-class-name.gradle
│   │       │               │       └── spring-boot-dsl-main-class-name.gradle.kts
│   │       │               ├── pages/
│   │       │               │   ├── aot.adoc
│   │       │               │   ├── getting-started.adoc
│   │       │               │   ├── index.adoc
│   │       │               │   ├── integrating-with-actuator.adoc
│   │       │               │   ├── introduction.adoc
│   │       │               │   ├── managing-dependencies.adoc
│   │       │               │   ├── packaging-oci-image.adoc
│   │       │               │   ├── packaging.adoc
│   │       │               │   ├── publishing.adoc
│   │       │               │   ├── reacting.adoc
│   │       │               │   └── running.adoc
│   │       │               └── partials/
│   │       │                   └── nav-gradle-plugin.adoc
│   │       ├── main/
│   │       │   ├── java/
│   │       │   │   └── org/
│   │       │   │       └── springframework/
│   │       │   │           └── boot/
│   │       │   │               └── gradle/
│   │       │   │                   ├── dsl/
│   │       │   │                   │   ├── SpringBootExtension.java
│   │       │   │                   │   └── package-info.java
│   │       │   │                   ├── plugin/
│   │       │   │                   │   ├── ApplicationPluginAction.java
│   │       │   │                   │   ├── CyclonedxPluginAction.java
│   │       │   │                   │   ├── DependencyManagementPluginAction.java
│   │       │   │                   │   ├── JarTypeFileSpec.java
│   │       │   │                   │   ├── JavaPluginAction.java
│   │       │   │                   │   ├── KotlinPluginAction.java
│   │       │   │                   │   ├── NativeImagePluginAction.java
│   │       │   │                   │   ├── PluginApplicationAction.java
│   │       │   │                   │   ├── ProtobufPluginAction.java
│   │       │   │                   │   ├── ResolveMainClassName.java
│   │       │   │                   │   ├── SinglePublishedArtifact.java
│   │       │   │                   │   ├── SpringBootAotPlugin.java
│   │       │   │                   │   ├── SpringBootPlugin.java
│   │       │   │                   │   ├── WarPluginAction.java
│   │       │   │                   │   └── package-info.java
│   │       │   │                   ├── tasks/
│   │       │   │                   │   ├── aot/
│   │       │   │                   │   │   ├── AbstractAot.java
│   │       │   │                   │   │   ├── ProcessAot.java
│   │       │   │                   │   │   ├── ProcessTestAot.java
│   │       │   │                   │   │   └── package-info.java
│   │       │   │                   │   ├── buildinfo/
│   │       │   │                   │   │   ├── BuildInfo.java
│   │       │   │                   │   │   ├── BuildInfoProperties.java
│   │       │   │                   │   │   └── package-info.java
│   │       │   │                   │   ├── bundling/
│   │       │   │                   │   │   ├── BootArchive.java
│   │       │   │                   │   │   ├── BootArchiveSupport.java
│   │       │   │                   │   │   ├── BootBuildImage.java
│   │       │   │                   │   │   ├── BootJar.java
│   │       │   │                   │   │   ├── BootWar.java
│   │       │   │                   │   │   ├── BootZipCopyAction.java
│   │       │   │                   │   │   ├── CacheSpec.java
│   │       │   │                   │   │   ├── DefaultTimeZoneOffset.java
│   │       │   │                   │   │   ├── DockerSpec.java
│   │       │   │                   │   │   ├── LayerResolver.java
│   │       │   │                   │   │   ├── LayeredSpec.java
│   │       │   │                   │   │   ├── LoaderZipEntries.java
│   │       │   │                   │   │   ├── ResolvedDependencies.java
│   │       │   │                   │   │   ├── ZipCompression.java
│   │       │   │                   │   │   └── package-info.java
│   │       │   │                   │   └── run/
│   │       │   │                   │       ├── BootRun.java
│   │       │   │                   │       └── package-info.java
│   │       │   │                   └── util/
│   │       │   │                       ├── VersionExtractor.java
│   │       │   │                       └── package-info.java
│   │       │   └── resources/
│   │       │       ├── unixStartScript.txt
│   │       │       └── windowsStartScript.txt
│   │       └── test/
│   │           ├── java/
│   │           │   └── org/
│   │           │       └── springframework/
│   │           │           └── boot/
│   │           │               └── gradle/
│   │           │                   ├── TaskConfigurationAvoidanceTests.java
│   │           │                   ├── docs/
│   │           │                   │   ├── AotDocumentationTests.java
│   │           │                   │   ├── Examples.java
│   │           │                   │   ├── GettingStartedDocumentationTests.java
│   │           │                   │   ├── IntegratingWithActuatorDocumentationTests.java
│   │           │                   │   ├── ManagingDependenciesDocumentationTests.java
│   │           │                   │   ├── PackagingDocumentationTests.java
│   │           │                   │   ├── PublishingDocumentationTests.java
│   │           │                   │   ├── RunningDocumentationTests.java
│   │           │                   │   └── package-info.java
│   │           │                   ├── dsl/
│   │           │                   │   └── BuildInfoDslIntegrationTests.java
│   │           │                   ├── junit/
│   │           │                   │   ├── GradleBuildFieldSetter.java
│   │           │                   │   ├── GradleCompatibility.java
│   │           │                   │   ├── GradleCompatibilityExtension.java
│   │           │                   │   ├── GradleMultiDslExtension.java
│   │           │                   │   ├── GradleProjectBuilder.java
│   │           │                   │   └── package-info.java
│   │           │                   ├── package-info.java
│   │           │                   ├── plugin/
│   │           │                   │   ├── ApplicationPluginActionIntegrationTests.java
│   │           │                   │   ├── CyclonedxPluginActionIntegrationTests.java
│   │           │                   │   ├── DependencyManagementPluginActionIntegrationTests.java
│   │           │                   │   ├── JavaPluginActionIntegrationTests.java
│   │           │                   │   ├── KotlinPluginActionIntegrationTests.java
│   │           │                   │   ├── NativeImagePluginActionIntegrationTests.java
│   │           │                   │   ├── OnlyDependencyManagementIntegrationTests.java
│   │           │                   │   ├── ProtobufPluginActionIntegrationTests.java
│   │           │                   │   ├── SpringBootAotPluginIntegrationTests.java
│   │           │                   │   ├── SpringBootPluginIntegrationTests.java
│   │           │                   │   ├── SpringBootPluginTests.java
│   │           │                   │   └── WarPluginActionIntegrationTests.java
│   │           │                   ├── tasks/
│   │           │                   │   ├── buildinfo/
│   │           │                   │   │   ├── BuildInfoIntegrationTests.java
│   │           │                   │   │   └── BuildInfoTests.java
│   │           │                   │   ├── bundling/
│   │           │                   │   │   ├── AbstractBootArchiveIntegrationTests.java
│   │           │                   │   │   ├── AbstractBootArchiveTests.java
│   │           │                   │   │   ├── BootBuildImageTests.java
│   │           │                   │   │   ├── BootJarIntegrationTests.java
│   │           │                   │   │   ├── BootJarTests.java
│   │           │                   │   │   ├── BootWarIntegrationTests.java
│   │           │                   │   │   ├── BootWarTests.java
│   │           │                   │   │   ├── DefaultTimeZoneOffsetTests.java
│   │           │                   │   │   ├── DockerSpecTests.java
│   │           │                   │   │   ├── MavenPublishingIntegrationTests.java
│   │           │                   │   │   └── PomCondition.java
│   │           │                   │   └── run/
│   │           │                   │       ├── BootRunIntegrationTests.java
│   │           │                   │       └── BootTestRunIntegrationTests.java
│   │           │                   └── testkit/
│   │           │                       ├── PluginClasspathGradleBuild.java
│   │           │                       └── package-info.java
│   │           └── resources/
│   │               ├── com/
│   │               │   └── example/
│   │               │       ├── bootjar/
│   │               │       │   ├── classpath/
│   │               │       │   │   └── BootJarClasspathApplication.java
│   │               │       │   └── main/
│   │               │       │       └── CustomMainClass.java
│   │               │       ├── bootrun/
│   │               │       │   ├── classpath/
│   │               │       │   │   └── BootRunClasspathApplication.java
│   │               │       │   ├── jvmargs/
│   │               │       │   │   └── BootRunJvmArgsApplication.java
│   │               │       │   └── main/
│   │               │       │       └── CustomMainClass.java
│   │               │       ├── boottestrun/
│   │               │       │   ├── classpath/
│   │               │       │   │   └── BootTestRunClasspathApplication.java
│   │               │       │   ├── jvmargs/
│   │               │       │   │   └── BootTestRunJvmArgsApplication.java
│   │               │       │   └── nomain/
│   │               │       │       └── BootTestRunNoMain.java
│   │               │       └── bootwar/
│   │               │           └── main/
│   │               │               └── CustomMainClass.java
│   │               ├── org/
│   │               │   └── springframework/
│   │               │       └── boot/
│   │               │           └── gradle/
│   │               │               ├── dsl/
│   │               │               │   ├── BuildInfoDslIntegrationTests-additionalProperties.gradle
│   │               │               │   ├── BuildInfoDslIntegrationTests-basicJar.gradle
│   │               │               │   ├── BuildInfoDslIntegrationTests-basicWar.gradle
│   │               │               │   ├── BuildInfoDslIntegrationTests-classesDependency.gradle
│   │               │               │   ├── BuildInfoDslIntegrationTests-jarWithCustomName.gradle
│   │               │               │   └── BuildInfoDslIntegrationTests-warWithCustomName.gradle
│   │               │               ├── plugin/
│   │               │               │   ├── ApplicationPluginActionIntegrationTests-applicationNameCanBeUsedToCustomizeDistributionName.gradle
│   │               │               │   ├── ApplicationPluginActionIntegrationTests-scriptsHaveCorrectPermissions.gradle
│   │               │               │   ├── ApplicationPluginActionIntegrationTests-tarDistributionForJarCanBeBuilt.gradle
│   │               │               │   ├── ApplicationPluginActionIntegrationTests-tarDistributionForWarCanBeBuilt.gradle
│   │               │               │   ├── ApplicationPluginActionIntegrationTests-taskConfigurationIsAvoided.gradle
│   │               │               │   ├── ApplicationPluginActionIntegrationTests-zipDistributionForJarCanBeBuilt.gradle
│   │               │               │   ├── ApplicationPluginActionIntegrationTests-zipDistributionForWarCanBeBuilt.gradle
│   │               │               │   ├── ApplicationPluginActionIntegrationTests.gradle
│   │               │               │   ├── CyclonedxPluginActionIntegrationTests-sbomIsIncludedInUberJar.gradle
│   │               │               │   ├── CyclonedxPluginActionIntegrationTests-sbomIsIncludedInUberWar.gradle
│   │               │               │   ├── DependencyManagementPluginActionIntegrationTests-helpfulErrorWhenVersionlessDependencyFailsToResolve.gradle
│   │               │               │   ├── DependencyManagementPluginActionIntegrationTests.gradle
│   │               │               │   ├── JavaPluginActionIntegrationTests-additionalMetadataLocationsConfiguredWhenProcessorIsPresent.gradle
│   │               │               │   ├── JavaPluginActionIntegrationTests-additionalMetadataLocationsNotConfiguredWhenProcessorIsAbsent.gradle
│   │               │               │   ├── JavaPluginActionIntegrationTests-applyingJavaPluginCreatesBootJarTask.gradle
│   │               │               │   ├── JavaPluginActionIntegrationTests-applyingJavaPluginCreatesBootRunTask.gradle
│   │               │               │   ├── JavaPluginActionIntegrationTests-applyingJavaPluginCreatesBootTestRunTask.gradle
│   │               │               │   ├── JavaPluginActionIntegrationTests-applyingJavaPluginCreatesDevelopmentOnlyConfiguration.gradle
│   │               │               │   ├── JavaPluginActionIntegrationTests-applyingJavaPluginCreatesTestAndDevelopmentOnlyConfiguration.gradle
│   │               │               │   ├── JavaPluginActionIntegrationTests-assembleRunsBootJarAndJar.gradle
│   │               │               │   ├── JavaPluginActionIntegrationTests-compileClasspathDoesNotIncludeDevelopmentOnlyDependencies.gradle
│   │               │               │   ├── JavaPluginActionIntegrationTests-compileClasspathDoesNotIncludeTestAndDevelopmentOnlyDependencies.gradle
│   │               │               │   ├── JavaPluginActionIntegrationTests-errorMessageIsHelpfulWhenMainClassCannotBeResolved.gradle
│   │               │               │   ├── JavaPluginActionIntegrationTests-javaCompileTasksCanOverrideDefaultParametersCompilerFlag.gradle
│   │               │               │   ├── JavaPluginActionIntegrationTests-javaCompileTasksUseParametersAndAdditionalCompilerFlags.gradle
│   │               │               │   ├── JavaPluginActionIntegrationTests-javaCompileTasksUseParametersCompilerFlagByDefault.gradle
│   │               │               │   ├── JavaPluginActionIntegrationTests-javaCompileTasksUseUtf8Encoding.gradle
│   │               │               │   ├── JavaPluginActionIntegrationTests-noBootJarTaskWithoutJavaPluginApplied.gradle
│   │               │               │   ├── JavaPluginActionIntegrationTests-noBootRunTaskWithoutJavaPluginApplied.gradle
│   │               │               │   ├── JavaPluginActionIntegrationTests-noBootTestRunTaskWithoutJavaPluginApplied.gradle
│   │               │               │   ├── JavaPluginActionIntegrationTests-productionRuntimeClasspathIsConfiguredWithAttributesThatMatchRuntimeClasspath.gradle
│   │               │               │   ├── JavaPluginActionIntegrationTests-productionRuntimeClasspathIsConfiguredWithResolvabilityAndConsumabilityThatMatchesRuntimeClasspath.gradle
│   │               │               │   ├── JavaPluginActionIntegrationTests-runtimeClasspathIncludesDevelopmentOnlyDependencies.gradle
│   │               │               │   ├── JavaPluginActionIntegrationTests-runtimeClasspathIncludesTestAndDevelopmentOnlyDependencies.gradle
│   │               │               │   ├── JavaPluginActionIntegrationTests-taskConfigurationIsAvoided.gradle
│   │               │               │   ├── JavaPluginActionIntegrationTests-testCompileClasspathDoesNotIncludeDevelopmentOnlyDependencies.gradle
│   │               │               │   ├── JavaPluginActionIntegrationTests-testCompileClasspathIncludesTestAndDevelopmentOnlyDependencies.gradle
│   │               │               │   ├── JavaPluginActionIntegrationTests-testRuntimeClasspathDoesNotIncludeDevelopmentOnlyDependencies.gradle
│   │               │               │   ├── JavaPluginActionIntegrationTests-testRuntimeClasspathIncludesTestAndDevelopmentOnlyDependencies.gradle
│   │               │               │   ├── KotlinPluginActionIntegrationTests-compileAotJavaHasTransitiveRuntimeDependenciesOnItsClasspathWhenUsingKotlin.gradle
│   │               │               │   ├── KotlinPluginActionIntegrationTests-compileAotTestJavaHasTransitiveRuntimeDependenciesOnItsClasspathWhenUsingKotlin.gradle
│   │               │               │   ├── KotlinPluginActionIntegrationTests-kotlinCompileTasksCanOverrideDefaultJavaParametersFlag.gradle
│   │               │               │   ├── KotlinPluginActionIntegrationTests-kotlinCompileTasksUseJavaParametersFlagByDefault.gradle
│   │               │               │   ├── KotlinPluginActionIntegrationTests-kotlinVersionPropertyIsSet.gradle
│   │               │               │   ├── KotlinPluginActionIntegrationTests-noKotlinVersionPropertyWithoutKotlinPlugin.gradle
│   │               │               │   ├── KotlinPluginActionIntegrationTests-taskConfigurationIsAvoided.gradle
│   │               │               │   ├── MavenPluginActionIntegrationTests.gradle
│   │               │               │   ├── NativeImagePluginActionIntegrationTests-applyingNativeImagePluginAppliesAotPlugin.gradle
│   │               │               │   ├── NativeImagePluginActionIntegrationTests-classesGeneratedDuringAotProcessingAreOnTheNativeImageClasspath.gradle
│   │               │               │   ├── NativeImagePluginActionIntegrationTests-classesGeneratedDuringAotTestProcessingAreOnTheTestNativeImageClasspath.gradle
│   │               │               │   ├── NativeImagePluginActionIntegrationTests-developmentOnlyDependenciesDoNotAppearInNativeImageClasspath.gradle
│   │               │               │   ├── NativeImagePluginActionIntegrationTests-nativeEntryIsAddedToManifest.gradle
│   │               │               │   ├── NativeImagePluginActionIntegrationTests-reachabilityMetadataConfigurationFilesAreCopiedToJar.gradle
│   │               │               │   ├── NativeImagePluginActionIntegrationTests-reachabilityMetadataConfigurationFilesFromFileRepositoryAreCopiedToJar.gradle
│   │               │               │   ├── NativeImagePluginActionIntegrationTests-testAndDevelopmentOnlyDependenciesDoNotAppearInNativeImageClasspath.gradle
│   │               │               │   ├── OnlyDependencyManagementIntegrationTests.gradle
│   │               │               │   ├── ProtobufPluginActionIntegrationTests-usesVersionOfGrpcPluginDependencyWhenSpecified.gradle
│   │               │               │   ├── ProtobufPluginActionIntegrationTests-usesVersionOfProtocDependencyWhenSpecified.gradle
│   │               │               │   ├── ProtobufPluginActionIntegrationTests.gradle
│   │               │               │   ├── SpringBootAotPluginIntegrationTests-applyingAotPluginCreatesProcessAotTask.gradle
│   │               │               │   ├── SpringBootAotPluginIntegrationTests-applyingAotPluginCreatesProcessTestAotTask.gradle
│   │               │               │   ├── SpringBootAotPluginIntegrationTests-applyingAotPluginDoesNotPreventConfigurationOfJavaToolchainLanguageVersion.gradle
│   │               │               │   ├── SpringBootAotPluginIntegrationTests-noProcessAotTaskWithoutAotPluginApplied.gradle
│   │               │               │   ├── SpringBootAotPluginIntegrationTests-noProcessTestAotTaskWithoutAotPluginApplied.gradle
│   │               │               │   ├── SpringBootAotPluginIntegrationTests-processAotDoesNotHaveDevelopmentOnlyDependenciesOnItsClasspath.gradle
│   │               │               │   ├── SpringBootAotPluginIntegrationTests-processAotDoesNotHaveTestAndDevelopmentOnlyDependenciesOnItsClasspath.gradle
│   │               │               │   ├── SpringBootAotPluginIntegrationTests-processAotHasLibraryResourcesOnItsClasspath.gradle
│   │               │               │   ├── SpringBootAotPluginIntegrationTests-processAotHasTransitiveRuntimeDependenciesOnItsClasspath.gradle
│   │               │               │   ├── SpringBootAotPluginIntegrationTests-processAotIsSkippedWhenProjectHasNoMainSource.gradle
│   │               │               │   ├── SpringBootAotPluginIntegrationTests-processAotRunsWhenProjectHasMainSource.gradle
│   │               │               │   ├── SpringBootAotPluginIntegrationTests-processTestAotDoesNotHaveDevelopmentOnlyDependenciesOnItsClasspath.gradle
│   │               │               │   ├── SpringBootAotPluginIntegrationTests-processTestAotHasLibraryResourcesOnItsClasspath.gradle
│   │               │               │   ├── SpringBootAotPluginIntegrationTests-processTestAotHasTestAndDevelopmentOnlyDependenciesOnItsClasspath.gradle
│   │               │               │   ├── SpringBootAotPluginIntegrationTests-processTestAotHasTransitiveRuntimeDependenciesOnItsClasspath.gradle
│   │               │               │   ├── SpringBootAotPluginIntegrationTests-processTestAotIsSkippedWhenProjectHasNoTestSource.gradle
│   │               │               │   ├── SpringBootPluginIntegrationTests-unresolvedDependenciesAreAnalyzedWhenDependencyResolutionFails.gradle
│   │               │               │   ├── SpringBootPluginIntegrationTests.gradle
│   │               │               │   ├── WarPluginActionIntegrationTests-assembleRunsBootWarAndWar.gradle
│   │               │               │   ├── WarPluginActionIntegrationTests-taskConfigurationIsAvoided.gradle
│   │               │               │   └── WarPluginActionIntegrationTests.gradle
│   │               │               └── tasks/
│   │               │                   ├── buildinfo/
│   │               │                   │   ├── BuildInfoIntegrationTests-basicExecution.gradle
│   │               │                   │   ├── BuildInfoIntegrationTests-defaultValues.gradle
│   │               │                   │   ├── BuildInfoIntegrationTests-excludeProperties.gradle
│   │               │                   │   ├── BuildInfoIntegrationTests-notUpToDateWhenExecutedTwiceAsTimeChanges.gradle
│   │               │                   │   ├── BuildInfoIntegrationTests-notUpToDateWhenExecutedTwiceWithFixedTimeAndChangedGradlePropertiesProjectVersion.gradle
│   │               │                   │   ├── BuildInfoIntegrationTests-notUpToDateWhenExecutedTwiceWithFixedTimeAndChangedProjectVersion.gradle
│   │               │                   │   ├── BuildInfoIntegrationTests-reproducibleOutputWithFixedTime.gradle
│   │               │                   │   └── BuildInfoIntegrationTests-upToDateWhenExecutedTwiceWithFixedTime.gradle
│   │               │                   ├── bundling/
│   │               │                   │   ├── BootJarIntegrationTests-applicationPluginMainClassNameIsUsed.gradle
│   │               │                   │   ├── BootJarIntegrationTests-classesFromASecondarySourceSetCanBeIncludedInTheArchive.gradle
│   │               │                   │   ├── BootJarIntegrationTests-customLayers.gradle
│   │               │                   │   ├── BootJarIntegrationTests-developmentOnlyDependenciesAreNotIncludedInTheArchive.gradle
│   │               │                   │   ├── BootJarIntegrationTests-developmentOnlyDependenciesAreNotIncludedInTheArchiveByDefault.gradle
│   │               │                   │   ├── BootJarIntegrationTests-developmentOnlyDependenciesCanBeIncludedInTheArchive.gradle
│   │               │                   │   ├── BootJarIntegrationTests-dirModeAndFileModeAreApplied.gradle
│   │               │                   │   ├── BootJarIntegrationTests-duplicatesAreHandledGracefully.gradle
│   │               │                   │   ├── BootJarIntegrationTests-explodedApplicationClasspath.gradle
│   │               │                   │   ├── BootJarIntegrationTests-implicitLayers.gradle
│   │               │                   │   ├── BootJarIntegrationTests-jarTypeFilteringIsApplied.gradle
│   │               │                   │   ├── BootJarIntegrationTests-layersWithCustomSourceSet.gradle
│   │               │                   │   ├── BootJarIntegrationTests-multiModuleCustomLayers.gradle
│   │               │                   │   ├── BootJarIntegrationTests-multiModuleImplicitLayers.gradle
│   │               │                   │   ├── BootJarIntegrationTests-notUpToDateWhenBuiltWithToolsAndThenWithoutTools.gradle
│   │               │                   │   ├── BootJarIntegrationTests-notUpToDateWhenBuiltWithoutLayersAndThenWithLayers.gradle
│   │               │                   │   ├── BootJarIntegrationTests-packagedApplicationClasspath.gradle
│   │               │                   │   ├── BootJarIntegrationTests-reproducibleArchive.gradle
│   │               │                   │   ├── BootJarIntegrationTests-signed.gradle
│   │               │                   │   ├── BootJarIntegrationTests-springBootExtensionMainClassNameIsUsed.gradle
│   │               │                   │   ├── BootJarIntegrationTests-startClassIsSetByResolvingTheMainClass.gradle
│   │               │                   │   ├── BootJarIntegrationTests-testAndDevelopmentOnlyDependenciesAreNotIncludedInTheArchiveByDefault.gradle
│   │               │                   │   ├── BootJarIntegrationTests-testAndDevelopmentOnlyDependenciesCanBeIncludedInTheArchive.gradle
│   │               │                   │   ├── BootJarIntegrationTests-upToDateWhenBuiltTwice.gradle
│   │               │                   │   ├── BootJarIntegrationTests-upToDateWhenBuiltWithDefaultLayeredAndThenWithExplicitLayered.gradle
│   │               │                   │   ├── BootJarIntegrationTests-versionMismatchBetweenTransitiveDevelopmentOnlyImplementationDependenciesDoesNotRemoveDependencyFromTheArchive.gradle
│   │               │                   │   ├── BootJarIntegrationTests-whenAResolvableCopyOfAnUnresolvableConfigurationIsResolvedThenResolutionSucceeds.gradle
│   │               │                   │   ├── BootJarIntegrationTests.gradle
│   │               │                   │   ├── BootWarIntegrationTests-applicationPluginMainClassNameIsUsed.gradle
│   │               │                   │   ├── BootWarIntegrationTests-classesFromASecondarySourceSetCanBeIncludedInTheArchive.gradle
│   │               │                   │   ├── BootWarIntegrationTests-customLayers.gradle
│   │               │                   │   ├── BootWarIntegrationTests-developmentOnlyDependenciesAreNotIncludedInTheArchiveByDefault.gradle
│   │               │                   │   ├── BootWarIntegrationTests-developmentOnlyDependenciesCanBeIncludedInTheArchive.gradle
│   │               │                   │   ├── BootWarIntegrationTests-dirModeAndFileModeAreApplied.gradle
│   │               │                   │   ├── BootWarIntegrationTests-duplicatesAreHandledGracefully.gradle
│   │               │                   │   ├── BootWarIntegrationTests-implicitLayers.gradle
│   │               │                   │   ├── BootWarIntegrationTests-jarTypeFilteringIsApplied.gradle
│   │               │                   │   ├── BootWarIntegrationTests-layersWithCustomSourceSet.gradle
│   │               │                   │   ├── BootWarIntegrationTests-multiModuleCustomLayers.gradle
│   │               │                   │   ├── BootWarIntegrationTests-multiModuleImplicitLayers.gradle
│   │               │                   │   ├── BootWarIntegrationTests-notUpToDateWhenBuiltWithToolsAndThenWithoutTools.gradle
│   │               │                   │   ├── BootWarIntegrationTests-notUpToDateWhenBuiltWithoutLayersAndThenWithLayers.gradle
│   │               │                   │   ├── BootWarIntegrationTests-reproducibleArchive.gradle
│   │               │                   │   ├── BootWarIntegrationTests-signed.gradle
│   │               │                   │   ├── BootWarIntegrationTests-springBootExtensionMainClassNameIsUsed.gradle
│   │               │                   │   ├── BootWarIntegrationTests-startClassIsSetByResolvingTheMainClass.gradle
│   │               │                   │   ├── BootWarIntegrationTests-testAndDevelopmentOnlyDependenciesAreNotIncludedInTheArchiveByDefault.gradle
│   │               │                   │   ├── BootWarIntegrationTests-testAndDevelopmentOnlyDependenciesCanBeIncludedInTheArchive.gradle
│   │               │                   │   ├── BootWarIntegrationTests-upToDateWhenBuiltTwice.gradle
│   │               │                   │   ├── BootWarIntegrationTests-upToDateWhenBuiltWithDefaultLayeredAndThenWithExplicitLayered.gradle
│   │               │                   │   ├── BootWarIntegrationTests-versionMismatchBetweenTransitiveDevelopmentOnlyImplementationDependenciesDoesNotRemoveDependencyFromTheArchive.gradle
│   │               │                   │   ├── BootWarIntegrationTests.gradle
│   │               │                   │   ├── MavenIntegrationTests-bootJarCanBeUploaded.gradle
│   │               │                   │   ├── MavenIntegrationTests-bootWarCanBeUploaded.gradle
│   │               │                   │   ├── MavenPublishingIntegrationTests-bootJarCanBePublished.gradle
│   │               │                   │   └── MavenPublishingIntegrationTests-bootWarCanBePublished.gradle
│   │               │                   └── run/
│   │               │                       ├── BootRunIntegrationTests-applicationPluginJvmArgumentsAreUsed.gradle
│   │               │                       ├── BootRunIntegrationTests-applicationPluginMainClassNameIsNotUsedWhenItIsNull.gradle
│   │               │                       ├── BootRunIntegrationTests-applicationPluginMainClassNameIsUsed.gradle
│   │               │                       ├── BootRunIntegrationTests-basicExecution.gradle
│   │               │                       ├── BootRunIntegrationTests-classesFromASecondarySourceSetCanBeOnTheClasspath.gradle
│   │               │                       ├── BootRunIntegrationTests-defaultJvmArgs.gradle
│   │               │                       ├── BootRunIntegrationTests-developmentOnlyDependenciesAreOnTheClasspath.gradle
│   │               │                       ├── BootRunIntegrationTests-jarTypeFilteringIsAppliedToTheClasspath.gradle
│   │               │                       ├── BootRunIntegrationTests-optimizedLaunchDisabledJvmArgs.gradle
│   │               │                       ├── BootRunIntegrationTests-sourceResourcesCanBeUsed.gradle
│   │               │                       ├── BootRunIntegrationTests-springBootExtensionMainClassNameIsUsed.gradle
│   │               │                       ├── BootRunIntegrationTests-testAndDevelopmentOnlyDependenciesAreOnTheClasspath.gradle
│   │               │                       ├── BootTestRunIntegrationTests-applicationPluginJvmArgumentsAreUsed.gradle
│   │               │                       ├── BootTestRunIntegrationTests-basicExecution.gradle
│   │               │                       ├── BootTestRunIntegrationTests-defaultJvmArgs.gradle
│   │               │                       ├── BootTestRunIntegrationTests-developmentOnlyDependenciesAreNotOnTheClasspath.gradle
│   │               │                       ├── BootTestRunIntegrationTests-failsGracefullyWhenNoTestMainMethodIsFound.gradle
│   │               │                       ├── BootTestRunIntegrationTests-jarTypeFilteringIsAppliedToTheClasspath.gradle
│   │               │                       ├── BootTestRunIntegrationTests-optimizedLaunchDisabledJvmArgs.gradle
│   │               │                       └── BootTestRunIntegrationTests-testAndDevelopmentOnlyDependenciesAreOnTheClasspath.gradle
│   │               ├── reachability-metadata-repository/
│   │               │   ├── ch.qos.logback/
│   │               │   │   └── logback-classic/
│   │               │   │       ├── 1.2.11/
│   │               │   │       │   ├── index.json
│   │               │   │       │   └── reflect-config.json
│   │               │   │       └── index.json
│   │               │   ├── index.json
│   │               │   ├── org.jline/
│   │               │   │   └── jline/
│   │               │   │       ├── 3.21.0/
│   │               │   │       │   ├── index.json
│   │               │   │       │   ├── jni-config.json
│   │               │   │       │   ├── proxy-config.json
│   │               │   │       │   ├── reflect-config.json
│   │               │   │       │   └── resource-config.json
│   │               │   │       └── index.json
│   │               │   └── schemas/
│   │               │       ├── library-and-framework-list-schema-v1.0.0.json
│   │               │       ├── metadata-library-index-schema-v1.0.0.json
│   │               │       └── metadata-root-index-schema-v1.0.0.json
│   │               └── repository/
│   │                   ├── com/
│   │                   │   └── example/
│   │                   │       └── library/
│   │                   │           └── 1.0-SNAPSHOT/
│   │                   │               └── library-1.0-SNAPSHOT.pom
│   │                   ├── commons-io-consumer/
│   │                   │   ├── one/
│   │                   │   │   └── 1.0/
│   │                   │   │       └── one-1.0.pom
│   │                   │   └── two/
│   │                   │       └── 1.0/
│   │                   │           └── two-1.0.pom
│   │                   └── org/
│   │                       └── springframework/
│   │                           └── boot/
│   │                               └── spring-boot-dependencies/
│   │                                   └── TEST-SNAPSHOT/
│   │                                       └── spring-boot-dependencies-TEST-SNAPSHOT.pom
│   └── spring-boot-maven-plugin/
│       ├── build.gradle
│       └── src/
│           ├── dockerTest/
│           │   ├── java/
│           │   │   └── org/
│           │   │       └── springframework/
│           │   │           └── boot/
│           │   │               └── maven/
│           │   │                   ├── BuildImageRegistryIntegrationTests.java
│           │   │                   └── BuildImageTests.java
│           │   └── projects/
│           │       ├── build-image/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── build-image-app-dir/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── build-image-bad-buildpack/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── build-image-bind-caches/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── build-image-bindings/
│           │       │   ├── bindings/
│           │       │   │   └── ca-certificates/
│           │       │   │       ├── test.crt
│           │       │   │       └── type
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── build-image-builder-error/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── build-image-caches-multiple/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── build-image-classifier/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── build-image-classifier-source/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── build-image-classifier-source-with-repackage/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── build-image-classifier-with-repackage/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── build-image-cmd-line/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── build-image-created-date/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── build-image-current-created-date/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── build-image-custom-builder/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── build-image-custom-buildpacks/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── build-image-custom-name/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── build-image-empty-env-entry/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── build-image-final-name/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── build-image-fork-classifier/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── build-image-multi-module/
│           │       │   ├── app/
│           │       │   │   ├── pom.xml
│           │       │   │   └── src/
│           │       │   │       └── main/
│           │       │   │           └── java/
│           │       │   │               └── org/
│           │       │   │                   └── test/
│           │       │   │                       └── SampleApplication.java
│           │       │   ├── library/
│           │       │   │   ├── pom.xml
│           │       │   │   └── src/
│           │       │   │       └── main/
│           │       │   │           └── java/
│           │       │   │               └── org/
│           │       │   │                   └── test/
│           │       │   │                       └── SampleLibrary.java
│           │       │   └── pom.xml
│           │       ├── build-image-network/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── build-image-platform-linux-arm/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── build-image-publish/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── build-image-security-opts/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── build-image-tags/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── build-image-trust-builder/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── build-image-volume-caches/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── build-image-war-packaging/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── build-image-with-repackage/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       └── build-image-zip-packaging/
│           │           ├── pom.xml
│           │           └── src/
│           │               └── main/
│           │                   └── java/
│           │                       └── org/
│           │                           └── test/
│           │                               └── SampleApplication.java
│           ├── docs/
│           │   └── antora/
│           │       ├── antora.yml
│           │       ├── local-nav.adoc
│           │       └── modules/
│           │           └── maven-plugin/
│           │               ├── examples/
│           │               │   ├── aot/
│           │               │   │   └── pom.xml
│           │               │   ├── aot-native/
│           │               │   │   └── pom.xml
│           │               │   ├── aot-native-profile-buildpacks/
│           │               │   │   └── pom.xml
│           │               │   ├── aot-native-profile-nbt/
│           │               │   │   └── pom.xml
│           │               │   ├── build-info/
│           │               │   │   └── pom.xml
│           │               │   ├── getting-started/
│           │               │   │   ├── plugin-repositories-pom.xml
│           │               │   │   └── pom.xml
│           │               │   ├── integration-tests/
│           │               │   │   ├── customize-jmx-port-pom.xml
│           │               │   │   ├── failsafe-pom.xml
│           │               │   │   ├── pom.xml
│           │               │   │   ├── random-port-pom.xml
│           │               │   │   └── skip-integration-tests-pom.xml
│           │               │   ├── packaging/
│           │               │   │   ├── classified-artifact-pom.xml
│           │               │   │   ├── custom-layers-classpath-pom.xml
│           │               │   │   ├── custom-layers-pom.xml
│           │               │   │   ├── custom-layout-pom.xml
│           │               │   │   ├── custom-name-pom.xml
│           │               │   │   ├── different-classifier-pom.xml
│           │               │   │   ├── disable-layers-pom.xml
│           │               │   │   ├── exclude-artifact-group-pom.xml
│           │               │   │   ├── exclude-artifact-pom.xml
│           │               │   │   ├── exclude-dependency-pom.xml
│           │               │   │   ├── jar-plugin-first-pom.xml
│           │               │   │   ├── layers-configuration.xml
│           │               │   │   ├── layers.xml
│           │               │   │   ├── local-repackaged-artifact-pom.xml
│           │               │   │   ├── non-default-pom.xml
│           │               │   │   ├── repackage-configuration-pom.xml
│           │               │   │   └── repackage-pom.xml
│           │               │   ├── packaging-oci-image/
│           │               │   │   ├── bind-caches-pom.xml
│           │               │   │   ├── build-image-example-builder-configuration-pom.xml
│           │               │   │   ├── buildpacks-pom.xml
│           │               │   │   ├── caches-pom.xml
│           │               │   │   ├── custom-image-builder-pom.xml
│           │               │   │   ├── custom-image-name-pom.xml
│           │               │   │   ├── docker-colima-pom.xml
│           │               │   │   ├── docker-minikube-pom.xml
│           │               │   │   ├── docker-podman-pom.xml
│           │               │   │   ├── docker-pom-authentication-command-line.xml
│           │               │   │   ├── docker-pom.xml
│           │               │   │   ├── docker-registry-authentication-pom.xml
│           │               │   │   ├── docker-token-authentication-pom.xml
│           │               │   │   ├── paketo-pom.xml
│           │               │   │   ├── pom.xml
│           │               │   │   └── runtime-jvm-configuration-pom.xml
│           │               │   ├── running/
│           │               │   │   ├── active-profiles-pom.xml
│           │               │   │   ├── application-arguments-pom.xml
│           │               │   │   ├── debug-pom.xml
│           │               │   │   ├── devtools-pom.xml
│           │               │   │   ├── environment-variables-pom.xml
│           │               │   │   ├── hot-refresh-pom.xml
│           │               │   │   └── system-properties-pom.xml
│           │               │   └── using/
│           │               │       ├── default-and-override-pom.xml
│           │               │       ├── different-versions-pom.xml
│           │               │       ├── no-starter-parent-override-dependencies-pom.xml
│           │               │       └── no-starter-parent-pom.xml
│           │               ├── pages/
│           │               │   ├── aot.adoc
│           │               │   ├── build-image.adoc
│           │               │   ├── build-info.adoc
│           │               │   ├── getting-started.adoc
│           │               │   ├── goals.adoc
│           │               │   ├── help.adoc
│           │               │   ├── index.adoc
│           │               │   ├── integration-tests.adoc
│           │               │   ├── packaging.adoc
│           │               │   ├── run.adoc
│           │               │   └── using.adoc
│           │               └── partials/
│           │                   └── nav-maven-plugin.adoc
│           ├── intTest/
│           │   ├── java/
│           │   │   └── org/
│           │   │       └── springframework/
│           │   │           └── boot/
│           │   │               └── maven/
│           │   │                   ├── AbstractArchiveIntegrationTests.java
│           │   │                   ├── AotTests.java
│           │   │                   ├── BuildInfoIntegrationTests.java
│           │   │                   ├── EclipseM2eIntegrationTests.java
│           │   │                   ├── JarIntegrationTests.java
│           │   │                   ├── MavenBuild.java
│           │   │                   ├── MavenBuildExtension.java
│           │   │                   ├── RunIntegrationTests.java
│           │   │                   ├── StartStopIntegrationTests.java
│           │   │                   ├── TestRunIntegrationTests.java
│           │   │                   ├── Versions.java
│           │   │                   └── WarIntegrationTests.java
│           │   └── projects/
│           │       ├── aot/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── aot-arguments/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       ├── SampleApplication.java
│           │       │                       └── TestProfileConfiguration.java
│           │       ├── aot-class-proxy/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       ├── SampleApplication.java
│           │       │                       └── SampleRunner.java
│           │       ├── aot-compiler-arguments/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── aot-exclude-devtools/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── aot-jdk-proxy/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── aot-jvm-arguments/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       ├── SampleApplication.java
│           │       │                       └── TestProfileConfiguration.java
│           │       ├── aot-module-info/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               ├── module-info.java
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── aot-profile/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       ├── SampleApplication.java
│           │       │                       └── TestProfileConfiguration.java
│           │       ├── aot-release/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── aot-resource-generation/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           ├── java/
│           │       │           │   └── org/
│           │       │           │       └── test/
│           │       │           │           ├── ResourceRegisteringAotProcessor.java
│           │       │           │           └── SampleApplication.java
│           │       │           └── resources/
│           │       │               └── META-INF/
│           │       │                   └── spring/
│           │       │                       └── aot.factories
│           │       ├── aot-system-properties/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       ├── SampleApplication.java
│           │       │                       └── TestProfileConfiguration.java
│           │       ├── aot-test/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       ├── main/
│           │       │       │   └── java/
│           │       │       │       └── org/
│           │       │       │           └── test/
│           │       │       │               └── SampleApplication.java
│           │       │       └── test/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplicationTests.java
│           │       ├── aot-test-exclude-devtools/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       ├── main/
│           │       │       │   └── java/
│           │       │       │       └── org/
│           │       │       │           └── test/
│           │       │       │               └── SampleApplication.java
│           │       │       └── test/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplicationTests.java
│           │       ├── aot-test-skip/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       ├── main/
│           │       │       │   └── java/
│           │       │       │       └── org/
│           │       │       │           └── test/
│           │       │       │               └── SampleApplication.java
│           │       │       └── test/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplicationTests.java
│           │       ├── build-info/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── build-info-additional-properties/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── build-info-custom-build-time/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── build-info-custom-file/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── build-info-disable-build-time/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── build-info-exclude-build-properties/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── build-info-exclude-build-time/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── build-info-reproducible/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── build-info-reproducible-epoch-seconds/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── jar/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── jar-attach-disabled/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── jar-classifier-main/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── jar-classifier-main-attach-disabled/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── jar-classifier-source/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── jar-classifier-source-attach-disabled/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── jar-create-dir/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── jar-custom-dir/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── jar-custom-layout/
│           │       │   ├── custom/
│           │       │   │   ├── pom.xml
│           │       │   │   └── src/
│           │       │   │       └── main/
│           │       │   │           └── java/
│           │       │   │               └── org/
│           │       │   │                   └── test/
│           │       │   │                       └── SampleApplication.java
│           │       │   ├── default/
│           │       │   │   ├── pom.xml
│           │       │   │   └── src/
│           │       │   │       └── main/
│           │       │   │           └── java/
│           │       │   │               └── org/
│           │       │   │                   └── test/
│           │       │   │                       └── SampleApplication.java
│           │       │   ├── layout/
│           │       │   │   ├── pom.xml
│           │       │   │   └── src/
│           │       │   │       └── main/
│           │       │   │           ├── java/
│           │       │   │           │   └── smoketest/
│           │       │   │           │       └── layout/
│           │       │   │           │           ├── SampleLayout.java
│           │       │   │           │           └── SampleLayoutFactory.java
│           │       │   │           └── resources/
│           │       │   │               └── META-INF/
│           │       │   │                   └── spring.factories
│           │       │   └── pom.xml
│           │       ├── jar-exclude-entry/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── jar-exclude-group/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── jar-include-entry/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── jar-layered/
│           │       │   ├── jar/
│           │       │   │   ├── pom.xml
│           │       │   │   └── src/
│           │       │   │       └── main/
│           │       │   │           └── java/
│           │       │   │               └── org/
│           │       │   │                   └── test/
│           │       │   │                       └── SampleApplication.java
│           │       │   ├── jar-release/
│           │       │   │   └── pom.xml
│           │       │   ├── jar-snapshot/
│           │       │   │   └── pom.xml
│           │       │   └── pom.xml
│           │       ├── jar-layered-custom/
│           │       │   ├── jar/
│           │       │   │   ├── pom.xml
│           │       │   │   └── src/
│           │       │   │       ├── layers.xml
│           │       │   │       └── main/
│           │       │   │           ├── java/
│           │       │   │           │   └── org/
│           │       │   │           │       └── test/
│           │       │   │           │           └── SampleApplication.java
│           │       │   │           └── resources/
│           │       │   │               └── application.yml
│           │       │   ├── jar-classifier/
│           │       │   │   └── pom.xml
│           │       │   ├── jar-release/
│           │       │   │   └── pom.xml
│           │       │   ├── jar-snapshot/
│           │       │   │   └── pom.xml
│           │       │   └── pom.xml
│           │       ├── jar-layered-custom-name/
│           │       │   ├── jar/
│           │       │   │   ├── pom.xml
│           │       │   │   └── src/
│           │       │   │       └── main/
│           │       │   │           ├── java/
│           │       │   │           │   └── org/
│           │       │   │           │       └── test/
│           │       │   │           │           └── SampleApplication.java
│           │       │   │           └── resources/
│           │       │   │               └── application.yml
│           │       │   ├── jar-classifier/
│           │       │   │   └── pom.xml
│           │       │   ├── jar-layers-configuration/
│           │       │   │   ├── pom.xml
│           │       │   │   └── src/
│           │       │   │       └── main/
│           │       │   │           └── resources/
│           │       │   │               └── META-INF/
│           │       │   │                   └── spring/
│           │       │   │                       └── layers/
│           │       │   │                           └── custom.xml
│           │       │   ├── jar-release/
│           │       │   │   └── pom.xml
│           │       │   ├── jar-snapshot/
│           │       │   │   └── pom.xml
│           │       │   └── pom.xml
│           │       ├── jar-layered-disabled/
│           │       │   ├── jar/
│           │       │   │   ├── pom.xml
│           │       │   │   └── src/
│           │       │   │       └── main/
│           │       │   │           └── java/
│           │       │   │               └── org/
│           │       │   │                   └── test/
│           │       │   │                       └── SampleApplication.java
│           │       │   ├── jar-release/
│           │       │   │   └── pom.xml
│           │       │   ├── jar-snapshot/
│           │       │   │   └── pom.xml
│           │       │   └── pom.xml
│           │       ├── jar-lib-name-conflict/
│           │       │   ├── acme-lib/
│           │       │   │   └── pom.xml
│           │       │   ├── another-acme-lib/
│           │       │   │   └── pom.xml
│           │       │   ├── pom.xml
│           │       │   └── test-project/
│           │       │       ├── pom.xml
│           │       │       └── src/
│           │       │           └── main/
│           │       │               └── java/
│           │       │                   └── org/
│           │       │                       └── test/
│           │       │                           └── SampleApplication.java
│           │       ├── jar-no-tools/
│           │       │   ├── jar/
│           │       │   │   ├── pom.xml
│           │       │   │   └── src/
│           │       │   │       └── main/
│           │       │   │           └── java/
│           │       │   │               └── org/
│           │       │   │                   └── test/
│           │       │   │                       └── SampleApplication.java
│           │       │   ├── jar-release/
│           │       │   │   └── pom.xml
│           │       │   ├── jar-snapshot/
│           │       │   │   └── pom.xml
│           │       │   └── pom.xml
│           │       ├── jar-optional-default/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── jar-optional-exclude/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── jar-optional-include/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── jar-output-timestamp/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── jar-pom/
│           │       │   └── pom.xml
│           │       ├── jar-signed/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── jar-skip/
│           │       │   └── pom.xml
│           │       ├── jar-system-scope/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── jar-system-scope-default/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── jar-test-scope/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── jar-with-kotlin-module/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── kotlin/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.kt
│           │       ├── jar-with-layout-property/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── jar-with-unpack/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── jar-with-zip-layout/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── run/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── run-additional-classpath-directory/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           ├── additional-elements/
│           │       │           │   ├── another/
│           │       │           │   │   └── two.txt
│           │       │           │   └── one.txt
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── run-additional-classpath-jar/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── run-arguments/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── run-arguments-commandline/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── run-envargs/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── run-exclude/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── run-fork/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── run-jvm-system-props/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── run-jvmargs/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── run-jvmargs-commandline/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── run-profiles/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── run-toolchains/
│           │       │   ├── jdkHome/
│           │       │   │   └── bin/
│           │       │   │       └── java
│           │       │   ├── pom.xml
│           │       │   ├── src/
│           │       │   │   └── main/
│           │       │   │       └── java/
│           │       │   │           └── org/
│           │       │   │               └── test/
│           │       │   │                   └── SampleApplication.java
│           │       │   └── toolchains.xml
│           │       ├── run-use-test-classpath/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── run-working-directory/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── settings.xml
│           │       ├── start-stop/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── start-stop-skip/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── test-run/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       ├── main/
│           │       │       │   └── java/
│           │       │       │       └── org/
│           │       │       │           └── test/
│           │       │       │               └── SampleApplication.java
│           │       │       └── test/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── TestSampleApplication.java
│           │       ├── war/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           ├── java/
│           │       │           │   └── org/
│           │       │           │       └── test/
│           │       │           │           └── SampleApplication.java
│           │       │           └── webapp/
│           │       │               └── index.html
│           │       ├── war-exclude-entry/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           ├── java/
│           │       │           │   └── org/
│           │       │           │       └── test/
│           │       │           │           └── SampleApplication.java
│           │       │           └── webapp/
│           │       │               └── index.html
│           │       ├── war-layered/
│           │       │   ├── jar-release/
│           │       │   │   └── pom.xml
│           │       │   ├── jar-snapshot/
│           │       │   │   └── pom.xml
│           │       │   ├── pom.xml
│           │       │   └── war/
│           │       │       ├── pom.xml
│           │       │       └── src/
│           │       │           └── main/
│           │       │               ├── java/
│           │       │               │   └── org/
│           │       │               │       └── test/
│           │       │               │           └── SampleApplication.java
│           │       │               └── webapp/
│           │       │                   └── index.html
│           │       ├── war-layered-custom/
│           │       │   ├── jar-classifier/
│           │       │   │   └── pom.xml
│           │       │   ├── jar-release/
│           │       │   │   └── pom.xml
│           │       │   ├── jar-snapshot/
│           │       │   │   └── pom.xml
│           │       │   ├── pom.xml
│           │       │   └── war/
│           │       │       ├── pom.xml
│           │       │       └── src/
│           │       │           ├── layers.xml
│           │       │           └── main/
│           │       │               ├── java/
│           │       │               │   └── org/
│           │       │               │       └── test/
│           │       │               │           └── SampleApplication.java
│           │       │               └── webapp/
│           │       │                   └── index.html
│           │       ├── war-layered-disabled/
│           │       │   ├── jar-release/
│           │       │   │   └── pom.xml
│           │       │   ├── jar-snapshot/
│           │       │   │   └── pom.xml
│           │       │   ├── pom.xml
│           │       │   └── war/
│           │       │       ├── pom.xml
│           │       │       └── src/
│           │       │           └── main/
│           │       │               ├── java/
│           │       │               │   └── org/
│           │       │               │       └── test/
│           │       │               │           └── SampleApplication.java
│           │       │               └── webapp/
│           │       │                   └── index.html
│           │       ├── war-no-tools/
│           │       │   ├── jar-release/
│           │       │   │   └── pom.xml
│           │       │   ├── jar-snapshot/
│           │       │   │   └── pom.xml
│           │       │   ├── pom.xml
│           │       │   └── war/
│           │       │       ├── pom.xml
│           │       │       └── src/
│           │       │           └── main/
│           │       │               ├── java/
│           │       │               │   └── org/
│           │       │               │       └── test/
│           │       │               │           └── SampleApplication.java
│           │       │               └── webapp/
│           │       │                   └── index.html
│           │       ├── war-output-timestamp/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           ├── java/
│           │       │           │   └── org/
│           │       │           │       └── test/
│           │       │           │           └── SampleApplication.java
│           │       │           └── webapp/
│           │       │               └── index.html
│           │       ├── war-reactor/
│           │       │   ├── jar/
│           │       │   │   └── pom.xml
│           │       │   ├── pom.xml
│           │       │   └── war/
│           │       │       ├── pom.xml
│           │       │       └── src/
│           │       │           └── main/
│           │       │               ├── java/
│           │       │               │   └── com/
│           │       │               │       └── example/
│           │       │               │           └── SampleApplication.java
│           │       │               └── webapp/
│           │       │                   └── index.html
│           │       ├── war-signed/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── war-system-scope/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           ├── java/
│           │       │           │   └── org/
│           │       │           │       └── test/
│           │       │           │           └── SampleApplication.java
│           │       │           └── webapp/
│           │       │               └── index.html
│           │       └── war-with-unpack/
│           │           ├── pom.xml
│           │           └── src/
│           │               └── main/
│           │                   ├── java/
│           │                   │   └── org/
│           │                   │       └── test/
│           │                   │           └── SampleApplication.java
│           │                   └── webapp/
│           │                       └── index.html
│           ├── main/
│           │   ├── java/
│           │   │   └── org/
│           │   │       └── springframework/
│           │   │           └── boot/
│           │   │               └── maven/
│           │   │                   ├── AbstractAotMojo.java
│           │   │                   ├── AbstractDependencyFilterMojo.java
│           │   │                   ├── AbstractPackagerMojo.java
│           │   │                   ├── AbstractRunMojo.java
│           │   │                   ├── ArtifactsLibraries.java
│           │   │                   ├── BuildImageForkMojo.java
│           │   │                   ├── BuildImageMojo.java
│           │   │                   ├── BuildImageNoForkMojo.java
│           │   │                   ├── BuildInfoMojo.java
│           │   │                   ├── CacheInfo.java
│           │   │                   ├── ClassPath.java
│           │   │                   ├── CommandLineBuilder.java
│           │   │                   ├── CustomLayersProvider.java
│           │   │                   ├── DependencyFilter.java
│           │   │                   ├── Docker.java
│           │   │                   ├── EnvVariables.java
│           │   │                   ├── Exclude.java
│           │   │                   ├── ExcludeFilter.java
│           │   │                   ├── FilterableDependency.java
│           │   │                   ├── Image.java
│           │   │                   ├── Include.java
│           │   │                   ├── IncludeFilter.java
│           │   │                   ├── JarTypeFilter.java
│           │   │                   ├── JavaCompilerPluginConfiguration.java
│           │   │                   ├── JavaProcessExecutor.java
│           │   │                   ├── Layers.java
│           │   │                   ├── LoggingMainClassTimeoutWarningListener.java
│           │   │                   ├── MatchingGroupIdFilter.java
│           │   │                   ├── MavenBuildOutputTimestamp.java
│           │   │                   ├── ProcessAotMojo.java
│           │   │                   ├── ProcessTestAotMojo.java
│           │   │                   ├── PropertiesMergingResourceTransformer.java
│           │   │                   ├── RepackageMojo.java
│           │   │                   ├── RunArguments.java
│           │   │                   ├── RunMojo.java
│           │   │                   ├── SpringApplicationAdminClient.java
│           │   │                   ├── SpringBootApplicationClassFinder.java
│           │   │                   ├── StartMojo.java
│           │   │                   ├── StopMojo.java
│           │   │                   ├── SystemPropertyFormatter.java
│           │   │                   ├── TestRunMojo.java
│           │   │                   ├── VersionExtractor.java
│           │   │                   └── package-info.java
│           │   ├── resources/
│           │   │   └── META-INF/
│           │   │       ├── m2e/
│           │   │       │   └── lifecycle-mapping-metadata.xml
│           │   │       └── spring/
│           │   │           └── layers/
│           │   │               └── default.xml
│           │   └── xsd/
│           │       ├── layers-2.3.xsd
│           │       ├── layers-2.4.xsd
│           │       ├── layers-2.5.xsd
│           │       ├── layers-2.6.xsd
│           │       ├── layers-2.7.xsd
│           │       ├── layers-3.0.xsd
│           │       ├── layers-3.1.xsd
│           │       ├── layers-3.2.xsd
│           │       ├── layers-3.3.xsd
│           │       ├── layers-3.4.xsd
│           │       ├── layers-3.5.xsd
│           │       ├── layers-4.0.xsd
│           │       └── layers-4.1.xsd
│           ├── maven/
│           │   └── resources/
│           │       └── pom.xml
│           └── test/
│               ├── java/
│               │   └── org/
│               │       └── springframework/
│               │           └── boot/
│               │               └── maven/
│               │                   ├── ArtifactsLibrariesTests.java
│               │                   ├── ClassPathTests.java
│               │                   ├── CommandLineBuilderTests.java
│               │                   ├── CustomLayersProviderTests.java
│               │                   ├── DependencyFilterMojoTests.java
│               │                   ├── DependencyFilterTests.java
│               │                   ├── DockerTests.java
│               │                   ├── EnvVariablesTests.java
│               │                   ├── ExcludeFilterTests.java
│               │                   ├── ImageTests.java
│               │                   ├── IncludeFilterTests.java
│               │                   ├── JarTypeFilterTests.java
│               │                   ├── JavaCompilerPluginConfigurationTests.java
│               │                   ├── MavenBuildOutputTimestampTests.java
│               │                   ├── PropertiesMergingResourceTransformerTests.java
│               │                   ├── RunArgumentsTests.java
│               │                   ├── SystemPropertyFormatterTests.java
│               │                   └── sample/
│               │                       ├── ClassWithMainMethod.java
│               │                       ├── ClassWithoutMainMethod.java
│               │                       └── package-info.java
│               └── resources/
│                   ├── application-layer-no-filter.xml
│                   ├── dependencies-layer-no-filter.xml
│                   ├── layers.xml
│                   └── resource-layer-no-filter.xml
├── build.gradle
├── buildSrc/
│   ├── SpringRepositorySupport.groovy
│   ├── build.gradle
│   ├── config/
│   │   └── checkstyle/
│   │       └── checkstyle.xml
│   ├── settings.gradle
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── org/
│       │   │       └── springframework/
│       │   │           └── boot/
│       │   │               └── build/
│       │   │                   ├── AntoraConventions.java
│       │   │                   ├── ConventionsPlugin.java
│       │   │                   ├── DeployedPlugin.java
│       │   │                   ├── EclipseConventions.java
│       │   │                   ├── EclipseSynchronizeJdtSettings.java
│       │   │                   ├── EclipseSynchronizeResourceSettings.java
│       │   │                   ├── EmptyPropertiesPersistableConfigurationObject.java
│       │   │                   ├── ExtractResources.java
│       │   │                   ├── JavaConventions.java
│       │   │                   ├── KotlinConventions.java
│       │   │                   ├── MavenPublishingConventions.java
│       │   │                   ├── MavenRepositoryPlugin.java
│       │   │                   ├── NoHttpConventions.java
│       │   │                   ├── RepositoryTransformersExtension.java
│       │   │                   ├── SyncAppSource.java
│       │   │                   ├── SystemRequirementsExtension.java
│       │   │                   ├── TestFixturesConventions.java
│       │   │                   ├── WarConventions.java
│       │   │                   ├── aggregation/
│       │   │                   │   ├── Aggregate.java
│       │   │                   │   └── AggregatorPlugin.java
│       │   │                   ├── antora/
│       │   │                   │   ├── AggregateContentContribution.java
│       │   │                   │   ├── AntoraAsciidocAttributes.java
│       │   │                   │   ├── AntoraContributorPlugin.java
│       │   │                   │   ├── AntoraDependenciesPlugin.java
│       │   │                   │   ├── CatalogContentContribution.java
│       │   │                   │   ├── CheckJavadocMacros.java
│       │   │                   │   ├── ConsumableContentContribution.java
│       │   │                   │   ├── ContentContribution.java
│       │   │                   │   ├── Contribution.java
│       │   │                   │   ├── CopyAntoraContent.java
│       │   │                   │   ├── Extensions.java
│       │   │                   │   ├── GenerateAntoraPlaybook.java
│       │   │                   │   ├── LocalAggregateContentContribution.java
│       │   │                   │   ├── SourceContribution.java
│       │   │                   │   └── SyncAntoraSource.java
│       │   │                   ├── architecture/
│       │   │                   │   ├── ArchitectureCheck.java
│       │   │                   │   ├── ArchitectureCheckAnnotation.java
│       │   │                   │   ├── ArchitecturePlugin.java
│       │   │                   │   ├── ArchitectureRules.java
│       │   │                   │   └── AutoConfigurationChecker.java
│       │   │                   ├── artifacts/
│       │   │                   │   └── ArtifactRelease.java
│       │   │                   ├── autoconfigure/
│       │   │                   │   ├── AutoConfigurationClass.java
│       │   │                   │   ├── AutoConfigurationImportsTask.java
│       │   │                   │   ├── AutoConfigurationMetadata.java
│       │   │                   │   ├── AutoConfigurationPlugin.java
│       │   │                   │   ├── CheckAutoConfigurationClasses.java
│       │   │                   │   ├── CheckAutoConfigurationImports.java
│       │   │                   │   └── DocumentAutoConfigurationClasses.java
│       │   │                   ├── bom/
│       │   │                   │   ├── BomExtension.java
│       │   │                   │   ├── BomPlugin.java
│       │   │                   │   ├── BomResolver.java
│       │   │                   │   ├── CheckBom.java
│       │   │                   │   ├── CheckLinks.java
│       │   │                   │   ├── CreateResolvedBom.java
│       │   │                   │   ├── Library.java
│       │   │                   │   ├── ResolvedBom.java
│       │   │                   │   ├── UpgradePolicy.java
│       │   │                   │   └── bomr/
│       │   │                   │       ├── InteractiveUpgradeResolver.java
│       │   │                   │       ├── LibraryUpdateResolver.java
│       │   │                   │       ├── LibraryWithVersionOptions.java
│       │   │                   │       ├── MavenMetadataVersionResolver.java
│       │   │                   │       ├── MoveToSnapshots.java
│       │   │                   │       ├── MultithreadedLibraryUpdateResolver.java
│       │   │                   │       ├── ReleaseSchedule.java
│       │   │                   │       ├── StandardLibraryUpdateResolver.java
│       │   │                   │       ├── Upgrade.java
│       │   │                   │       ├── UpgradeApplicator.java
│       │   │                   │       ├── UpgradeBom.java
│       │   │                   │       ├── UpgradeDependencies.java
│       │   │                   │       ├── UpgradeResolver.java
│       │   │                   │       ├── VersionOption.java
│       │   │                   │       ├── VersionResolver.java
│       │   │                   │       ├── github/
│       │   │                   │       │   ├── GitHub.java
│       │   │                   │       │   ├── GitHubRepository.java
│       │   │                   │       │   ├── Issue.java
│       │   │                   │       │   ├── Milestone.java
│       │   │                   │       │   ├── StandardGitHub.java
│       │   │                   │       │   └── StandardGitHubRepository.java
│       │   │                   │       └── version/
│       │   │                   │           ├── AbstractDependencyVersion.java
│       │   │                   │           ├── ArtifactVersionDependencyVersion.java
│       │   │                   │           ├── CalendarVersionDependencyVersion.java
│       │   │                   │           ├── CombinedPatchAndQualifierDependencyVersion.java
│       │   │                   │           ├── DependencyVersion.java
│       │   │                   │           ├── LeadingZeroesDependencyVersion.java
│       │   │                   │           ├── MultipleComponentsDependencyVersion.java
│       │   │                   │           ├── ReleaseTrainDependencyVersion.java
│       │   │                   │           └── UnstructuredDependencyVersion.java
│       │   │                   ├── classpath/
│       │   │                   │   ├── CheckClasspathForConflicts.java
│       │   │                   │   ├── CheckClasspathForProhibitedDependencies.java
│       │   │                   │   ├── CheckClasspathForUnconstrainedDirectDependencies.java
│       │   │                   │   └── CheckClasspathForUnnecessaryExclusions.java
│       │   │                   ├── cli/
│       │   │                   │   └── HomebrewFormula.java
│       │   │                   ├── context/
│       │   │                   │   └── properties/
│       │   │                   │       ├── Asciidoc.java
│       │   │                   │       ├── CheckAdditionalSpringConfigurationMetadata.java
│       │   │                   │       ├── CheckAggregatedSpringConfigurationMetadata.java
│       │   │                   │       ├── CheckManualSpringConfigurationMetadata.java
│       │   │                   │       ├── CheckSpringConfigurationMetadata.java
│       │   │                   │       ├── CompoundRow.java
│       │   │                   │       ├── ConfigurationMetadataPlugin.java
│       │   │                   │       ├── ConfigurationProperties.java
│       │   │                   │       ├── ConfigurationPropertiesAnalyzer.java
│       │   │                   │       ├── ConfigurationPropertiesPlugin.java
│       │   │                   │       ├── ConfigurationProperty.java
│       │   │                   │       ├── DocumentConfigurationProperties.java
│       │   │                   │       ├── Row.java
│       │   │                   │       ├── SingleRow.java
│       │   │                   │       ├── Snippet.java
│       │   │                   │       ├── Snippets.java
│       │   │                   │       └── Table.java
│       │   │                   ├── devtools/
│       │   │                   │   └── DocumentDevtoolsPropertyDefaults.java
│       │   │                   ├── docs/
│       │   │                   │   ├── ApplicationRunner.java
│       │   │                   │   ├── ConfigureJavadocLinks.java
│       │   │                   │   ├── DocumentManagedDependencies.java
│       │   │                   │   └── DocumentVersionProperties.java
│       │   │                   ├── mavenplugin/
│       │   │                   │   ├── DocumentPluginGoals.java
│       │   │                   │   ├── MavenExec.java
│       │   │                   │   ├── MavenPluginPlugin.java
│       │   │                   │   ├── PluginXmlParser.java
│       │   │                   │   └── PrepareMavenBinaries.java
│       │   │                   ├── optional/
│       │   │                   │   └── OptionalDependenciesPlugin.java
│       │   │                   ├── processors/
│       │   │                   │   └── AnnotationProcessorPlugin.java
│       │   │                   ├── properties/
│       │   │                   │   ├── BuildProperties.java
│       │   │                   │   └── BuildType.java
│       │   │                   ├── springframework/
│       │   │                   │   ├── CheckAotFactories.java
│       │   │                   │   ├── CheckFactoriesFile.java
│       │   │                   │   └── CheckSpringFactories.java
│       │   │                   ├── starters/
│       │   │                   │   ├── DocumentStarters.java
│       │   │                   │   ├── StarterMetadata.java
│       │   │                   │   └── StarterPlugin.java
│       │   │                   ├── test/
│       │   │                   │   ├── DockerTestBuildService.java
│       │   │                   │   ├── DockerTestPlugin.java
│       │   │                   │   ├── IntegrationTestPlugin.java
│       │   │                   │   ├── SystemTestPlugin.java
│       │   │                   │   └── autoconfigure/
│       │   │                   │       ├── CheckAutoConfigureImports.java
│       │   │                   │       ├── DocumentTestSlices.java
│       │   │                   │       ├── GenerateTestSliceMetadata.java
│       │   │                   │       ├── TestAutoConfigurationPlugin.java
│       │   │                   │       ├── TestSliceMetadata.java
│       │   │                   │       └── TestSlicePlugin.java
│       │   │                   ├── testing/
│       │   │                   │   ├── TestFailuresPlugin.java
│       │   │                   │   └── TestResultsOverview.java
│       │   │                   └── toolchain/
│       │   │                       ├── ToolchainExtension.java
│       │   │                       └── ToolchainPlugin.java
│       │   └── resources/
│       │       └── org/
│       │           └── springframework/
│       │               └── boot/
│       │                   └── build/
│       │                       ├── antora/
│       │                       │   ├── antora-asciidoc-attributes.properties
│       │                       │   └── antora-playbook-template.yml
│       │                       └── legal/
│       │                           ├── LICENSE.txt
│       │                           └── NOTICE.txt
│       └── test/
│           ├── java/
│           │   └── org/
│           │       └── springframework/
│           │           └── boot/
│           │               └── build/
│           │                   ├── ConventionsPluginTests.java
│           │                   ├── antora/
│           │                   │   ├── AntoraAsciidocAttributesTests.java
│           │                   │   └── GenerateAntoraPlaybookTests.java
│           │                   ├── architecture/
│           │                   │   ├── ArchitectureCheckTests.java
│           │                   │   ├── annotations/
│           │                   │   │   ├── TestConditionalOnClass.java
│           │                   │   │   ├── TestConditionalOnMissingBean.java
│           │                   │   │   ├── TestConfigurationProperties.java
│           │                   │   │   ├── TestConfigurationPropertiesBinding.java
│           │                   │   │   └── TestDeprecatedConfigurationProperty.java
│           │                   │   ├── assertj/
│           │                   │   │   ├── checkReturnValue/
│           │                   │   │   │   └── WithCheckReturnValue.java
│           │                   │   │   └── noCheckReturnValue/
│           │                   │   │       └── NoCheckReturnValue.java
│           │                   │   ├── beans/
│           │                   │   │   ├── privatebean/
│           │                   │   │   │   └── PrivateBean.java
│           │                   │   │   └── regular/
│           │                   │   │       └── RegularBean.java
│           │                   │   ├── bfpp/
│           │                   │   │   ├── nonstatic/
│           │                   │   │   │   └── NonStaticBeanFactoryPostProcessorConfiguration.java
│           │                   │   │   ├── noparameters/
│           │                   │   │   │   └── NoParametersBeanFactoryPostProcessorConfiguration.java
│           │                   │   │   └── parameters/
│           │                   │   │       └── ParametersBeanFactoryPostProcessorConfiguration.java
│           │                   │   ├── bpp/
│           │                   │   │   ├── nonstatic/
│           │                   │   │   │   └── NonStaticBeanPostProcessorConfiguration.java
│           │                   │   │   ├── noparameters/
│           │                   │   │   │   └── NoParametersBeanPostProcessorConfiguration.java
│           │                   │   │   ├── safeparameters/
│           │                   │   │   │   └── SafeParametersBeanPostProcessorConfiguration.java
│           │                   │   │   └── unsafeparameters/
│           │                   │   │       └── UnsafeParametersBeanPostProcessorConfiguration.java
│           │                   │   ├── collectors/
│           │                   │   │   └── toList/
│           │                   │   │       └── CollectorsToList.java
│           │                   │   ├── conditionalonclass/
│           │                   │   │   └── OnBeanMethod.java
│           │                   │   ├── conditionalonmissingbean/
│           │                   │   │   ├── valueonly/
│           │                   │   │   │   └── TypeSameAsMethodReturnType.java
│           │                   │   │   ├── withname/
│           │                   │   │   │   └── WithNameAttribute.java
│           │                   │   │   └── withtype/
│           │                   │   │       └── WithTypeAttribute.java
│           │                   │   ├── configurationproperties/
│           │                   │   │   ├── bindingnonstatic/
│           │                   │   │   │   └── BindingMethodNonStatic.java
│           │                   │   │   ├── classprefixandignore/
│           │                   │   │   │   └── ConfigurationPropertiesWithPrefixAndIgnore.java
│           │                   │   │   ├── classprefixonly/
│           │                   │   │   │   └── ConfigurationPropertiesWithPrefixOnly.java
│           │                   │   │   ├── classvalueonly/
│           │                   │   │   │   └── ConfigurationPropertiesWithValueOnly.java
│           │                   │   │   ├── deprecatedsince/
│           │                   │   │   │   └── DeprecatedConfigurationPropertySince.java
│           │                   │   │   ├── methodprefixandignore/
│           │                   │   │   │   └── ConfigurationPropertiesWithPrefixAndIgnore.java
│           │                   │   │   ├── methodprefixonly/
│           │                   │   │   │   └── ConfigurationPropertiesWithPrefixOnly.java
│           │                   │   │   └── methodvalueonly/
│           │                   │   │       └── ConfigurationPropertiesWithValueOnly.java
│           │                   │   ├── junit/
│           │                   │   │   └── enumsource/
│           │                   │   │       ├── inferredfromparametertype/
│           │                   │   │       │   └── EnumSourceInferredFromParameterType.java
│           │                   │   │       ├── sameasparametertype/
│           │                   │   │       │   └── EnumSourceSameAsParameterType.java
│           │                   │   │       └── valuenecessary/
│           │                   │   │           └── EnumSourceValueNecessary.java
│           │                   │   ├── nullmarked/
│           │                   │   │   └── notannotated/
│           │                   │   │       └── TestClass.java
│           │                   │   ├── objects/
│           │                   │   │   ├── noRequireNonNull/
│           │                   │   │   │   └── NoRequireNonNull.java
│           │                   │   │   ├── requireNonNullWithString/
│           │                   │   │   │   └── RequireNonNullWithString.java
│           │                   │   │   └── requireNonNullWithSupplier/
│           │                   │   │       └── RequireNonNullWithSupplier.java
│           │                   │   ├── resources/
│           │                   │   │   ├── loads/
│           │                   │   │   │   └── ResourceUtilsResourceLoader.java
│           │                   │   │   └── noloads/
│           │                   │   │       └── ResourceUtilsWithoutLoading.java
│           │                   │   ├── string/
│           │                   │   │   ├── toLowerCase/
│           │                   │   │   │   └── ToLowerCase.java
│           │                   │   │   ├── toLowerCaseWithLocale/
│           │                   │   │   │   └── ToLowerCaseWithLocale.java
│           │                   │   │   ├── toUpperCase/
│           │                   │   │   │   └── ToUpperCase.java
│           │                   │   │   └── toUpperCaseWithLocale/
│           │                   │   │       └── ToUpperCaseWithLocale.java
│           │                   │   ├── tangled/
│           │                   │   │   ├── TangledOne.java
│           │                   │   │   └── sub/
│           │                   │   │       └── TangledTwo.java
│           │                   │   ├── untangled/
│           │                   │   │   ├── UntangledOne.java
│           │                   │   │   └── sub/
│           │                   │   │       └── UntangledTwo.java
│           │                   │   └── url/
│           │                   │       ├── decode/
│           │                   │       │   └── UrlDecodeWithStringEncoding.java
│           │                   │       └── encode/
│           │                   │           └── UrlEncodeWithStringEncoding.java
│           │                   ├── artifacts/
│           │                   │   └── ArtifactReleaseTests.java
│           │                   ├── assertj/
│           │                   │   └── NodeAssert.java
│           │                   ├── autoconfigure/
│           │                   │   └── DocumentAutoConfigurationClassesTests.java
│           │                   ├── bom/
│           │                   │   ├── BomPluginIntegrationTests.java
│           │                   │   ├── LibraryTests.java
│           │                   │   └── bomr/
│           │                   │       ├── InteractiveUpgradeResolverTests.java
│           │                   │       ├── ReleaseScheduleTests.java
│           │                   │       ├── UpgradeApplicatorTests.java
│           │                   │       ├── UpgradeTests.java
│           │                   │       └── version/
│           │                   │           ├── ArtifactVersionDependencyVersionTests.java
│           │                   │           ├── CalendarVersionDependencyVersionTests.java
│           │                   │           ├── DependencyVersionTests.java
│           │                   │           ├── DependencyVersionUpgradeTests.java
│           │                   │           ├── MultipleComponentsDependencyVersionTests.java
│           │                   │           └── ReleaseTrainDependencyVersionTests.java
│           │                   ├── context/
│           │                   │   └── properties/
│           │                   │       ├── CompoundRowTests.java
│           │                   │       ├── ConfigurationPropertiesAnalyzerTests.java
│           │                   │       ├── ConfigurationPropertiesTests.java
│           │                   │       ├── SingleRowTests.java
│           │                   │       └── TableTests.java
│           │                   ├── groovyscripts/
│           │                   │   └── SpringRepositoriesExtensionTests.java
│           │                   ├── mavenplugin/
│           │                   │   └── PluginXmlParserTests.java
│           │                   ├── optional/
│           │                   │   └── OptionalDependenciesPluginIntegrationTests.java
│           │                   ├── test/
│           │                   │   └── autoconfigure/
│           │                   │       └── TestSliceMetadataTests.java
│           │                   └── testing/
│           │                       └── TestFailuresPluginIntegrationTests.java
│           └── resources/
│               ├── bom.gradle
│               ├── gradle.properties
│               ├── org/
│               │   └── springframework/
│               │       └── boot/
│               │           └── build/
│               │               └── antora/
│               │                   └── expected-playbook.yml
│               ├── plugin.xml
│               ├── releases.json
│               └── spring-configuration-metadata.json
├── buildpack/
│   └── spring-boot-buildpack-platform/
│       ├── build.gradle
│       └── src/
│           ├── dockerTest/
│           │   └── java/
│           │       └── org/
│           │           └── springframework/
│           │               └── boot/
│           │                   └── buildpack/
│           │                       └── platform/
│           │                           └── docker/
│           │                               └── DockerApiIntegrationTests.java
│           ├── main/
│           │   └── java/
│           │       └── org/
│           │           └── springframework/
│           │               └── boot/
│           │                   └── buildpack/
│           │                       └── platform/
│           │                           ├── build/
│           │                           │   ├── AbstractBuildLog.java
│           │                           │   ├── ApiVersions.java
│           │                           │   ├── BuildLog.java
│           │                           │   ├── BuildOwner.java
│           │                           │   ├── BuildRequest.java
│           │                           │   ├── Builder.java
│           │                           │   ├── BuilderBuildpack.java
│           │                           │   ├── BuilderDockerConfiguration.java
│           │                           │   ├── BuilderException.java
│           │                           │   ├── BuilderMetadata.java
│           │                           │   ├── Buildpack.java
│           │                           │   ├── BuildpackCoordinates.java
│           │                           │   ├── BuildpackLayersMetadata.java
│           │                           │   ├── BuildpackMetadata.java
│           │                           │   ├── BuildpackReference.java
│           │                           │   ├── BuildpackResolver.java
│           │                           │   ├── BuildpackResolverContext.java
│           │                           │   ├── BuildpackResolvers.java
│           │                           │   ├── Buildpacks.java
│           │                           │   ├── Cache.java
│           │                           │   ├── Creator.java
│           │                           │   ├── DirectoryBuildpack.java
│           │                           │   ├── EphemeralBuilder.java
│           │                           │   ├── ImageBuildpack.java
│           │                           │   ├── ImageType.java
│           │                           │   ├── Lifecycle.java
│           │                           │   ├── LifecycleVersion.java
│           │                           │   ├── Phase.java
│           │                           │   ├── PrintStreamBuildLog.java
│           │                           │   ├── PullPolicy.java
│           │                           │   ├── StackId.java
│           │                           │   ├── TarGzipBuildpack.java
│           │                           │   └── package-info.java
│           │                           ├── docker/
│           │                           │   ├── ApiVersion.java
│           │                           │   ├── DockerApi.java
│           │                           │   ├── DockerLog.java
│           │                           │   ├── ExportedImageTar.java
│           │                           │   ├── ImagePlatform.java
│           │                           │   ├── ImageProgressUpdateEvent.java
│           │                           │   ├── LoadImageUpdateEvent.java
│           │                           │   ├── LogUpdateEvent.java
│           │                           │   ├── ProgressUpdateEvent.java
│           │                           │   ├── PullImageUpdateEvent.java
│           │                           │   ├── PushImageUpdateEvent.java
│           │                           │   ├── TotalProgressBar.java
│           │                           │   ├── TotalProgressEvent.java
│           │                           │   ├── TotalProgressListener.java
│           │                           │   ├── TotalProgressPullListener.java
│           │                           │   ├── TotalProgressPushListener.java
│           │                           │   ├── UpdateEvent.java
│           │                           │   ├── UpdateListener.java
│           │                           │   ├── configuration/
│           │                           │   │   ├── Credential.java
│           │                           │   │   ├── CredentialHelper.java
│           │                           │   │   ├── DockerConfigurationMetadata.java
│           │                           │   │   ├── DockerConnectionConfiguration.java
│           │                           │   │   ├── DockerHost.java
│           │                           │   │   ├── DockerRegistryAuthentication.java
│           │                           │   │   ├── DockerRegistryConfigAuthentication.java
│           │                           │   │   ├── DockerRegistryTokenAuthentication.java
│           │                           │   │   ├── DockerRegistryUserAuthentication.java
│           │                           │   │   ├── JsonEncodedDockerRegistryAuthentication.java
│           │                           │   │   ├── ResolvedDockerHost.java
│           │                           │   │   └── package-info.java
│           │                           │   ├── package-info.java
│           │                           │   ├── ssl/
│           │                           │   │   ├── KeyStoreFactory.java
│           │                           │   │   ├── PemCertificateParser.java
│           │                           │   │   ├── PemPrivateKeyParser.java
│           │                           │   │   ├── SslContextFactory.java
│           │                           │   │   └── package-info.java
│           │                           │   ├── transport/
│           │                           │   │   ├── DockerConnectionException.java
│           │                           │   │   ├── DockerEngineException.java
│           │                           │   │   ├── Errors.java
│           │                           │   │   ├── HttpClientTransport.java
│           │                           │   │   ├── HttpTransport.java
│           │                           │   │   ├── LocalHttpClientTransport.java
│           │                           │   │   ├── Message.java
│           │                           │   │   ├── RemoteHttpClientTransport.java
│           │                           │   │   └── package-info.java
│           │                           │   └── type/
│           │                           │       ├── Binding.java
│           │                           │       ├── BlobReference.java
│           │                           │       ├── ContainerConfig.java
│           │                           │       ├── ContainerContent.java
│           │                           │       ├── ContainerReference.java
│           │                           │       ├── ContainerStatus.java
│           │                           │       ├── Image.java
│           │                           │       ├── ImageArchive.java
│           │                           │       ├── ImageArchiveIndex.java
│           │                           │       ├── ImageArchiveManifest.java
│           │                           │       ├── ImageConfig.java
│           │                           │       ├── ImageName.java
│           │                           │       ├── ImageReference.java
│           │                           │       ├── Layer.java
│           │                           │       ├── LayerId.java
│           │                           │       ├── Manifest.java
│           │                           │       ├── ManifestList.java
│           │                           │       ├── RandomString.java
│           │                           │       ├── Regex.java
│           │                           │       ├── VolumeName.java
│           │                           │       └── package-info.java
│           │                           ├── io/
│           │                           │   ├── Content.java
│           │                           │   ├── DefaultOwner.java
│           │                           │   ├── FilePermissions.java
│           │                           │   ├── IOBiConsumer.java
│           │                           │   ├── IOConsumer.java
│           │                           │   ├── IOSupplier.java
│           │                           │   ├── InspectedContent.java
│           │                           │   ├── Layout.java
│           │                           │   ├── Owner.java
│           │                           │   ├── TarArchive.java
│           │                           │   ├── TarLayoutWriter.java
│           │                           │   ├── ZipFileTarArchive.java
│           │                           │   └── package-info.java
│           │                           ├── json/
│           │                           │   ├── JsonStream.java
│           │                           │   ├── MappedObject.java
│           │                           │   ├── SharedJsonMapper.java
│           │                           │   └── package-info.java
│           │                           ├── socket/
│           │                           │   ├── AbstractSocket.java
│           │                           │   ├── FileDescriptor.java
│           │                           │   ├── NamedPipeSocket.java
│           │                           │   ├── UnixDomainSocket.java
│           │                           │   └── package-info.java
│           │                           └── system/
│           │                               ├── Environment.java
│           │                               └── package-info.java
│           └── test/
│               ├── java/
│               │   └── org/
│               │       └── springframework/
│               │           └── boot/
│               │               └── buildpack/
│               │                   └── platform/
│               │                       ├── build/
│               │                       │   ├── ApiVersionsTests.java
│               │                       │   ├── BuildLogTests.java
│               │                       │   ├── BuildOwnerTests.java
│               │                       │   ├── BuildRequestTests.java
│               │                       │   ├── BuilderBuildpackTests.java
│               │                       │   ├── BuilderExceptionTests.java
│               │                       │   ├── BuilderMetadataTests.java
│               │                       │   ├── BuilderTests.java
│               │                       │   ├── BuildpackCoordinatesTests.java
│               │                       │   ├── BuildpackLayersMetadataTests.java
│               │                       │   ├── BuildpackMetadataTests.java
│               │                       │   ├── BuildpackReferenceTests.java
│               │                       │   ├── BuildpackResolversTests.java
│               │                       │   ├── BuildpacksTests.java
│               │                       │   ├── DirectoryBuildpackTests.java
│               │                       │   ├── EphemeralBuilderTests.java
│               │                       │   ├── ImageBuildpackTests.java
│               │                       │   ├── LifecycleTests.java
│               │                       │   ├── LifecycleVersionTests.java
│               │                       │   ├── PhaseTests.java
│               │                       │   ├── PrintStreamBuildLogTests.java
│               │                       │   ├── StackIdTests.java
│               │                       │   ├── TarGzipBuildpackTests.java
│               │                       │   ├── TestBuildpack.java
│               │                       │   └── TestTarGzip.java
│               │                       ├── docker/
│               │                       │   ├── ApiVersionTests.java
│               │                       │   ├── DockerApiTests.java
│               │                       │   ├── DockerLogTests.java
│               │                       │   ├── ExportedImageTarTests.java
│               │                       │   ├── ImagePlatformTests.java
│               │                       │   ├── LoadImageUpdateEventTests.java
│               │                       │   ├── LogUpdateEventTests.java
│               │                       │   ├── ProgressUpdateEventTests.java
│               │                       │   ├── PullImageUpdateEventTests.java
│               │                       │   ├── PullUpdateEventTests.java
│               │                       │   ├── PushImageUpdateEventTests.java
│               │                       │   ├── TotalProgressBarTests.java
│               │                       │   ├── TotalProgressEventTests.java
│               │                       │   ├── TotalProgressListenerTests.java
│               │                       │   ├── configuration/
│               │                       │   │   ├── CredentialHelperTests.java
│               │                       │   │   ├── CredentialTests.java
│               │                       │   │   ├── DockerConfigurationMetadataTests.java
│               │                       │   │   ├── DockerRegistryConfigAuthenticationTests.java
│               │                       │   │   ├── DockerRegistryTokenAuthenticationTests.java
│               │                       │   │   ├── DockerRegistryUserAuthenticationTests.java
│               │                       │   │   └── ResolvedDockerHostTests.java
│               │                       │   ├── ssl/
│               │                       │   │   ├── KeyStoreFactoryTests.java
│               │                       │   │   ├── PemCertificateParserTests.java
│               │                       │   │   ├── PemFileWriter.java
│               │                       │   │   ├── PemPrivateKeyParserTests.java
│               │                       │   │   ├── SslContextFactoryTests.java
│               │                       │   │   └── SslSource.java
│               │                       │   ├── transport/
│               │                       │   │   ├── DockerConnectionExceptionTests.java
│               │                       │   │   ├── DockerEngineExceptionTests.java
│               │                       │   │   ├── ErrorsTests.java
│               │                       │   │   ├── HttpClientTransportTests.java
│               │                       │   │   ├── HttpTransportTests.java
│               │                       │   │   ├── LocalHttpClientTransportTests.java
│               │                       │   │   ├── MessageTests.java
│               │                       │   │   ├── RemoteHttpClientTransportTests.java
│               │                       │   │   └── TestDockerEngineException.java
│               │                       │   └── type/
│               │                       │       ├── BindingTests.java
│               │                       │       ├── ContainerConfigTests.java
│               │                       │       ├── ContainerContentTests.java
│               │                       │       ├── ContainerReferenceTests.java
│               │                       │       ├── ContainerStatusTests.java
│               │                       │       ├── ImageArchiveIndexTests.java
│               │                       │       ├── ImageArchiveManifestTests.java
│               │                       │       ├── ImageArchiveTests.java
│               │                       │       ├── ImageConfigTests.java
│               │                       │       ├── ImageNameTests.java
│               │                       │       ├── ImageReferenceTests.java
│               │                       │       ├── ImageTests.java
│               │                       │       ├── LayerIdTests.java
│               │                       │       ├── LayerTests.java
│               │                       │       ├── ManifestListTests.java
│               │                       │       ├── ManifestTests.java
│               │                       │       ├── RandomStringTests.java
│               │                       │       └── VolumeNameTests.java
│               │                       ├── io/
│               │                       │   ├── ContentTests.java
│               │                       │   ├── DefaultOwnerTests.java
│               │                       │   ├── FilePermissionsTests.java
│               │                       │   ├── InspectedContentTests.java
│               │                       │   ├── OwnerTests.java
│               │                       │   ├── TarArchiveTests.java
│               │                       │   ├── TarLayoutWriterTests.java
│               │                       │   └── ZipFileTarArchiveTests.java
│               │                       ├── json/
│               │                       │   ├── AbstractJsonTests.java
│               │                       │   ├── JsonStreamTests.java
│               │                       │   ├── MappedObjectTests.java
│               │                       │   └── SharedJsonMapperTests.java
│               │                       └── socket/
│               │                           └── FileDescriptorTests.java
│               └── resources/
│                   └── org/
│                       └── springframework/
│                           └── boot/
│                               └── buildpack/
│                                   └── platform/
│                                       ├── build/
│                                       │   ├── builder-metadata-platform-api-0.3.json
│                                       │   ├── builder-metadata-supported-apis.json
│                                       │   ├── builder-metadata-unsupported-api.json
│                                       │   ├── builder-metadata-unsupported-apis.json
│                                       │   ├── builder-metadata.json
│                                       │   ├── buildpack-image.json
│                                       │   ├── buildpack-layers-metadata.json
│                                       │   ├── buildpack-metadata.json
│                                       │   ├── buildpack.toml
│                                       │   ├── image-with-empty-stack.json
│                                       │   ├── image-with-no-run-image-tag.json
│                                       │   ├── image-with-platform.json
│                                       │   ├── image-with-run-image-different-registry.json
│                                       │   ├── image-with-run-image-digest.json
│                                       │   ├── image.json
│                                       │   ├── lifecycle-analyzer-cache-bind-mounts.json
│                                       │   ├── lifecycle-analyzer-cache-volumes.json
│                                       │   ├── lifecycle-analyzer-inherit-local.json
│                                       │   ├── lifecycle-analyzer-inherit-remote.json
│                                       │   ├── lifecycle-analyzer-security-opts.json
│                                       │   ├── lifecycle-analyzer.json
│                                       │   ├── lifecycle-builder-app-dir.json
│                                       │   ├── lifecycle-builder-cache-bind-mounts.json
│                                       │   ├── lifecycle-builder-cache-volumes.json
│                                       │   ├── lifecycle-builder.json
│                                       │   ├── lifecycle-creator-app-dir.json
│                                       │   ├── lifecycle-creator-bindings.json
│                                       │   ├── lifecycle-creator-cache-bind-mounts.json
│                                       │   ├── lifecycle-creator-cache-volumes.json
│                                       │   ├── lifecycle-creator-clean-cache.json
│                                       │   ├── lifecycle-creator-created-date.json
│                                       │   ├── lifecycle-creator-inherit-local.json
│                                       │   ├── lifecycle-creator-inherit-remote.json
│                                       │   ├── lifecycle-creator-network.json
│                                       │   ├── lifecycle-creator-platform-api-0.3.json
│                                       │   ├── lifecycle-creator-security-opts.json
│                                       │   ├── lifecycle-creator.json
│                                       │   ├── lifecycle-detector-app-dir.json
│                                       │   ├── lifecycle-detector-cache-bind-mounts.json
│                                       │   ├── lifecycle-detector-cache-volumes.json
│                                       │   ├── lifecycle-detector.json
│                                       │   ├── lifecycle-exporter-app-dir.json
│                                       │   ├── lifecycle-exporter-cache-bind-mounts.json
│                                       │   ├── lifecycle-exporter-cache-volumes.json
│                                       │   ├── lifecycle-exporter-created-date.json
│                                       │   ├── lifecycle-exporter-inherit-local.json
│                                       │   ├── lifecycle-exporter-inherit-remote.json
│                                       │   ├── lifecycle-exporter-security-opts.json
│                                       │   ├── lifecycle-exporter.json
│                                       │   ├── lifecycle-restorer-cache-bind-mounts.json
│                                       │   ├── lifecycle-restorer-cache-volumes.json
│                                       │   ├── lifecycle-restorer-inherit-local.json
│                                       │   ├── lifecycle-restorer-inherit-remote.json
│                                       │   ├── lifecycle-restorer-security-opts.json
│                                       │   ├── lifecycle-restorer.json
│                                       │   ├── order.toml
│                                       │   ├── print-stream-build-log.txt
│                                       │   ├── run-image-with-bad-stack.json
│                                       │   ├── run-image-with-platform.json
│                                       │   └── run-image.json
│                                       ├── docker/
│                                       │   ├── configuration/
│                                       │   │   ├── auth-token.json
│                                       │   │   ├── auth-user-full.json
│                                       │   │   ├── auth-user-minimal.json
│                                       │   │   ├── docker-credential-test.bat
│                                       │   │   ├── docker-credential-test.sh
│                                       │   │   ├── with-auth/
│                                       │   │   │   └── config.json
│                                       │   │   ├── with-context/
│                                       │   │   │   ├── config.json
│                                       │   │   │   └── contexts/
│                                       │   │   │       └── meta/
│                                       │   │   │           └── ea1b2003cc8155cb8af43960c89a4c1e28777d6fd848ff3422cf375329c2626d/
│                                       │   │   │               └── meta.json
│                                       │   │   ├── with-default-context/
│                                       │   │   │   ├── config.json
│                                       │   │   │   └── contexts/
│                                       │   │   │       ├── meta/
│                                       │   │   │       │   └── ea1b2003cc8155cb8af43960c89a4c1e28777d6fd848ff3422cf375329c2626d/
│                                       │   │   │       │       └── meta.json
│                                       │   │   │       └── tls/
│                                       │   │   │           └── ea1b2003cc8155cb8af43960c89a4c1e28777d6fd848ff3422cf375329c2626d/
│                                       │   │   │               └── docker/
│                                       │   │   │                   ├── cert.pem
│                                       │   │   │                   └── key.pem
│                                       │   │   └── without-context/
│                                       │   │       └── config.json
│                                       │   ├── container-wait-response.json
│                                       │   ├── create-container-response.json
│                                       │   ├── load-error.json
│                                       │   ├── load-stream.json
│                                       │   ├── log-update-event-ansi.stream
│                                       │   ├── log-update-event-invalid-stream-type.stream
│                                       │   ├── log-update-event.stream
│                                       │   ├── pull-stream.json
│                                       │   ├── pull-update-full.json
│                                       │   ├── pull-update-minimal.json
│                                       │   ├── pull-with-empty-details.json
│                                       │   ├── push-stream-with-error.json
│                                       │   ├── push-stream.json
│                                       │   ├── transport/
│                                       │   │   ├── errors.json
│                                       │   │   ├── message-and-errors.json
│                                       │   │   ├── message.json
│                                       │   │   └── proxy-error.txt
│                                       │   └── type/
│                                       │       ├── container-config.json
│                                       │       ├── container-status-error.json
│                                       │       ├── container-status-success.json
│                                       │       ├── distribution-manifest-list.json
│                                       │       ├── distribution-manifest.json
│                                       │       ├── image-archive-config.json
│                                       │       ├── image-archive-index.json
│                                       │       ├── image-archive-manifest.json
│                                       │       ├── image-config.json
│                                       │       ├── image-empty-os.json
│                                       │       ├── image-manifest.json
│                                       │       ├── image-no-descriptor.json
│                                       │       ├── image-no-digest.json
│                                       │       ├── image-non-default-os.json
│                                       │       ├── image-platform.json
│                                       │       ├── image.json
│                                       │       ├── manifest.json
│                                       │       └── minimal-image-config.json
│                                       └── json/
│                                           ├── stream.json
│                                           └── test-mapped-object.json
├── cli/
│   └── spring-boot-cli/
│       ├── build.gradle
│       └── src/
│           ├── intTest/
│           │   ├── java/
│           │   │   └── org/
│           │   │       └── springframework/
│           │   │           └── boot/
│           │   │               └── cli/
│           │   │                   ├── CommandLineIT.java
│           │   │                   └── infrastructure/
│           │   │                       ├── CommandLineInvoker.java
│           │   │                       └── Versions.java
│           │   └── resources/
│           │       └── settings.xml
│           ├── json-shade/
│           │   ├── README.adoc
│           │   └── java/
│           │       └── org/
│           │           └── springframework/
│           │               └── boot/
│           │                   └── cli/
│           │                       └── json/
│           │                           ├── JSON.java
│           │                           ├── JSONArray.java
│           │                           ├── JSONException.java
│           │                           ├── JSONObject.java
│           │                           ├── JSONStringer.java
│           │                           ├── JSONTokener.java
│           │                           └── package-info.java
│           ├── main/
│           │   ├── content/
│           │   │   ├── INSTALL.txt
│           │   │   ├── LICENCE.txt
│           │   │   ├── bin/
│           │   │   │   └── spring.bat
│           │   │   ├── legal/
│           │   │   │   └── open_source_licenses.txt
│           │   │   └── shell-completion/
│           │   │       ├── bash/
│           │   │       │   └── spring
│           │   │       └── zsh/
│           │   │           └── _spring
│           │   ├── executablecontent/
│           │   │   └── bin/
│           │   │       └── spring
│           │   ├── homebrew/
│           │   │   └── spring-boot.rb
│           │   ├── java/
│           │   │   └── org/
│           │   │       └── springframework/
│           │   │           └── boot/
│           │   │               └── cli/
│           │   │                   ├── DefaultCommandFactory.java
│           │   │                   ├── SpringCli.java
│           │   │                   ├── command/
│           │   │                   │   ├── AbstractCommand.java
│           │   │                   │   ├── Command.java
│           │   │                   │   ├── CommandException.java
│           │   │                   │   ├── CommandFactory.java
│           │   │                   │   ├── CommandRunner.java
│           │   │                   │   ├── HelpExample.java
│           │   │                   │   ├── NoArgumentsException.java
│           │   │                   │   ├── NoHelpCommandArgumentsException.java
│           │   │                   │   ├── NoSuchCommandException.java
│           │   │                   │   ├── OptionParsingCommand.java
│           │   │                   │   ├── core/
│           │   │                   │   │   ├── HelpCommand.java
│           │   │                   │   │   ├── HintCommand.java
│           │   │                   │   │   ├── VersionCommand.java
│           │   │                   │   │   └── package-info.java
│           │   │                   │   ├── encodepassword/
│           │   │                   │   │   ├── EncodePasswordCommand.java
│           │   │                   │   │   └── package-info.java
│           │   │                   │   ├── init/
│           │   │                   │   │   ├── Dependency.java
│           │   │                   │   │   ├── InitCommand.java
│           │   │                   │   │   ├── InitializrService.java
│           │   │                   │   │   ├── InitializrServiceMetadata.java
│           │   │                   │   │   ├── ProjectGenerationRequest.java
│           │   │                   │   │   ├── ProjectGenerationResponse.java
│           │   │                   │   │   ├── ProjectGenerator.java
│           │   │                   │   │   ├── ProjectType.java
│           │   │                   │   │   ├── ReportableException.java
│           │   │                   │   │   ├── ServiceCapabilitiesReportGenerator.java
│           │   │                   │   │   └── package-info.java
│           │   │                   │   ├── options/
│           │   │                   │   │   ├── OptionHandler.java
│           │   │                   │   │   ├── OptionHelp.java
│           │   │                   │   │   └── package-info.java
│           │   │                   │   ├── package-info.java
│           │   │                   │   ├── shell/
│           │   │                   │   │   ├── AnsiString.java
│           │   │                   │   │   ├── ClearCommand.java
│           │   │                   │   │   ├── CommandCompleter.java
│           │   │                   │   │   ├── EscapeAwareWhiteSpaceArgumentDelimiter.java
│           │   │                   │   │   ├── ExitCommand.java
│           │   │                   │   │   ├── ForkProcessCommand.java
│           │   │                   │   │   ├── PromptCommand.java
│           │   │                   │   │   ├── RunProcessCommand.java
│           │   │                   │   │   ├── Shell.java
│           │   │                   │   │   ├── ShellCommand.java
│           │   │                   │   │   ├── ShellExitException.java
│           │   │                   │   │   ├── ShellPrompts.java
│           │   │                   │   │   └── package-info.java
│           │   │                   │   └── status/
│           │   │                   │       ├── ExitStatus.java
│           │   │                   │       └── package-info.java
│           │   │                   ├── package-info.java
│           │   │                   └── util/
│           │   │                       ├── Log.java
│           │   │                       ├── LogListener.java
│           │   │                       └── package-info.java
│           │   └── resources/
│           │       └── META-INF/
│           │           └── services/
│           │               └── org.springframework.boot.cli.command.CommandFactory
│           └── test/
│               ├── java/
│               │   ├── cli/
│               │   │   └── command/
│               │   │       ├── CustomCommand.java
│               │   │       └── CustomCommandFactory.java
│               │   └── org/
│               │       └── springframework/
│               │           └── boot/
│               │               └── cli/
│               │                   ├── command/
│               │                   │   ├── CommandRunnerIntegrationTests.java
│               │                   │   ├── CommandRunnerTests.java
│               │                   │   ├── OptionParsingCommandTests.java
│               │                   │   ├── encodepassword/
│               │                   │   │   └── EncodePasswordCommandTests.java
│               │                   │   ├── init/
│               │                   │   │   ├── AbstractHttpClientMockTests.java
│               │                   │   │   ├── InitCommandTests.java
│               │                   │   │   ├── InitializrServiceMetadataTests.java
│               │                   │   │   ├── InitializrServiceTests.java
│               │                   │   │   ├── ProjectGenerationRequestTests.java
│               │                   │   │   └── ServiceCapabilitiesReportGeneratorTests.java
│               │                   │   └── shell/
│               │                   │       └── EscapeAwareWhiteSpaceArgumentDelimiterTests.java
│               │                   └── util/
│               │                       └── MockLog.java
│               ├── plugins/
│               │   └── custom/
│               │       ├── META-INF/
│               │       │   └── services/
│               │       │       └── org.springframework.boot.cli.CommandFactory
│               │       └── custom/
│               │           └── 0.0.1/
│               │               └── custom-0.0.1.pom
│               └── resources/
│                   ├── .m2/
│                   │   └── settings.xml
│                   ├── classloader-test-app.groovy
│                   ├── commands/
│                   │   ├── closure.groovy
│                   │   ├── command.groovy
│                   │   ├── handler.groovy
│                   │   └── options.groovy
│                   ├── dependency-customizer-tests/
│                   │   ├── resource1.txt
│                   │   └── resource2.txt
│                   ├── dir-sample/
│                   │   └── code/
│                   │       └── app.groovy
│                   ├── foo.pom
│                   ├── grab-samples/
│                   │   ├── customDependencyManagement.groovy
│                   │   ├── duplicateDependencyManagementBom.groovy
│                   │   ├── grab.groovy
│                   │   └── repository/
│                   │       └── test/
│                   │           ├── child/
│                   │           │   └── 1.0.0/
│                   │           │       └── child-1.0.0.pom
│                   │           └── parent/
│                   │               └── 1.0.0/
│                   │                   └── parent-1.0.0.pom
│                   ├── grab.groovy
│                   ├── init.groovy
│                   ├── maven-settings/
│                   │   ├── active-profile-repositories/
│                   │   │   └── .m2/
│                   │   │       └── settings.xml
│                   │   ├── basic/
│                   │   │   └── .m2/
│                   │   │       └── settings.xml
│                   │   ├── encrypted/
│                   │   │   └── .m2/
│                   │   │       ├── settings-security.xml
│                   │   │       └── settings.xml
│                   │   └── property-interpolation/
│                   │       └── .m2/
│                   │           └── settings.xml
│                   ├── metadata/
│                   │   ├── service-metadata-2.0.0.json
│                   │   ├── service-metadata-2.1.0.json
│                   │   ├── service-metadata-2.1.0.txt
│                   │   └── service-metadata-types-conflict.json
│                   ├── repro-samples/
│                   │   ├── data-jpa.groovy
│                   │   ├── grab-ant-builder.groovy
│                   │   └── secure.groovy
│                   ├── resource-matcher/
│                   │   ├── one/
│                   │   │   ├── alpha/
│                   │   │   │   └── nested/
│                   │   │   │       ├── excluded
│                   │   │   │       └── fileA
│                   │   │   ├── bravo/
│                   │   │   │   ├── fileC
│                   │   │   │   └── nested/
│                   │   │   │       └── fileB
│                   │   │   └── fileD
│                   │   ├── three
│                   │   └── two/
│                   │       ├── .file
│                   │       ├── bravo/
│                   │       │   └── fileE
│                   │       └── fileF
│                   ├── run-command/
│                   │   └── quiet.groovy
│                   ├── schema-all.sql
│                   ├── scripts/
│                   │   ├── closure.groovy
│                   │   ├── command.groovy
│                   │   ├── commands.groovy
│                   │   ├── handler.groovy
│                   │   └── options.groovy
│                   └── templates/
│                       ├── home.html
│                       └── test.txt
├── config/
│   ├── checkstyle/
│   │   ├── checkstyle-header.txt
│   │   ├── checkstyle-suppressions.xml
│   │   ├── checkstyle.xml
│   │   └── import-control.xml
│   ├── detekt/
│   │   └── config.yml
│   └── nohttp/
│       ├── allowlist.lines
│       ├── checkstyle.xml
│       └── suppressions.xml
├── configuration-metadata/
│   ├── spring-boot-configuration-metadata/
│   │   ├── build.gradle
│   │   └── src/
│   │       ├── json-shade/
│   │       │   ├── README.adoc
│   │       │   └── java/
│   │       │       └── org/
│   │       │           └── springframework/
│   │       │               └── boot/
│   │       │                   └── configurationmetadata/
│   │       │                       └── json/
│   │       │                           ├── JSON.java
│   │       │                           ├── JSONArray.java
│   │       │                           ├── JSONException.java
│   │       │                           ├── JSONObject.java
│   │       │                           ├── JSONStringer.java
│   │       │                           └── JSONTokener.java
│   │       ├── main/
│   │       │   └── java/
│   │       │       └── org/
│   │       │           └── springframework/
│   │       │               └── boot/
│   │       │                   └── configurationmetadata/
│   │       │                       ├── ConfigurationMetadataGroup.java
│   │       │                       ├── ConfigurationMetadataHint.java
│   │       │                       ├── ConfigurationMetadataItem.java
│   │       │                       ├── ConfigurationMetadataProperty.java
│   │       │                       ├── ConfigurationMetadataRepository.java
│   │       │                       ├── ConfigurationMetadataRepositoryJsonBuilder.java
│   │       │                       ├── ConfigurationMetadataSource.java
│   │       │                       ├── Deprecation.java
│   │       │                       ├── Hints.java
│   │       │                       ├── JsonReader.java
│   │       │                       ├── RawConfigurationMetadata.java
│   │       │                       ├── SentenceExtractor.java
│   │       │                       ├── SimpleConfigurationMetadataRepository.java
│   │       │                       ├── ValueHint.java
│   │       │                       ├── ValueProvider.java
│   │       │                       └── package-info.java
│   │       └── test/
│   │           ├── java/
│   │           │   └── org/
│   │           │       └── springframework/
│   │           │           └── boot/
│   │           │               └── configurationmetadata/
│   │           │                   ├── AbstractConfigurationMetadataTests.java
│   │           │                   ├── ConfigurationMetadataRepositoryJsonBuilderTests.java
│   │           │                   ├── JsonReaderTests.java
│   │           │                   └── SentenceExtractorTests.java
│   │           └── resources/
│   │               └── metadata/
│   │                   ├── configuration-metadata-bar.json
│   │                   ├── configuration-metadata-deprecated.json
│   │                   ├── configuration-metadata-empty-groups.json
│   │                   ├── configuration-metadata-empty.json
│   │                   ├── configuration-metadata-foo.json
│   │                   ├── configuration-metadata-foo2.json
│   │                   ├── configuration-metadata-foo3.json
│   │                   ├── configuration-metadata-invalid.json
│   │                   ├── configuration-metadata-map.json
│   │                   ├── configuration-metadata-multi-groups.json
│   │                   └── configuration-metadata-root.json
│   ├── spring-boot-configuration-metadata-changelog-generator/
│   │   ├── build.gradle
│   │   └── src/
│   │       ├── main/
│   │       │   └── java/
│   │       │       └── org/
│   │       │           └── springframework/
│   │       │               └── boot/
│   │       │                   └── configurationmetadata/
│   │       │                       └── changelog/
│   │       │                           ├── Changelog.java
│   │       │                           ├── ChangelogGenerator.java
│   │       │                           ├── ChangelogWriter.java
│   │       │                           ├── Difference.java
│   │       │                           ├── DifferenceType.java
│   │       │                           └── package-info.java
│   │       └── test/
│   │           ├── java/
│   │           │   └── org/
│   │           │       └── springframework/
│   │           │           └── boot/
│   │           │               └── configurationmetadata/
│   │           │                   └── changelog/
│   │           │                       ├── ChangelogGeneratorTests.java
│   │           │                       ├── ChangelogTests.java
│   │           │                       ├── ChangelogWriterTests.java
│   │           │                       ├── DifferenceTests.java
│   │           │                       └── TestChangelog.java
│   │           └── resources/
│   │               ├── sample-1.0.json
│   │               ├── sample-2.0.json
│   │               └── sample.adoc
│   └── spring-boot-configuration-processor/
│       ├── build.gradle
│       └── src/
│           ├── json-shade/
│           │   ├── README.adoc
│           │   └── java/
│           │       └── org/
│           │           └── springframework/
│           │               └── boot/
│           │                   └── configurationprocessor/
│           │                       └── json/
│           │                           ├── JSON.java
│           │                           ├── JSONArray.java
│           │                           ├── JSONException.java
│           │                           ├── JSONObject.java
│           │                           ├── JSONStringer.java
│           │                           └── JSONTokener.java
│           ├── main/
│           │   ├── java/
│           │   │   └── org/
│           │   │       └── springframework/
│           │   │           └── boot/
│           │   │               └── configurationprocessor/
│           │   │                   ├── ConfigurationMetadataAnnotationProcessor.java
│           │   │                   ├── ConfigurationPropertiesSourceResolver.java
│           │   │                   ├── ConstructorParameterPropertyDescriptor.java
│           │   │                   ├── JavaBeanPropertyDescriptor.java
│           │   │                   ├── LombokPropertyDescriptor.java
│           │   │                   ├── MetadataCollector.java
│           │   │                   ├── MetadataCollectors.java
│           │   │                   ├── MetadataGenerationEnvironment.java
│           │   │                   ├── MetadataStore.java
│           │   │                   ├── ParameterPropertyDescriptor.java
│           │   │                   ├── PropertyDescriptor.java
│           │   │                   ├── PropertyDescriptorResolver.java
│           │   │                   ├── RecordParameterPropertyDescriptor.java
│           │   │                   ├── TypeElementMembers.java
│           │   │                   ├── TypeUtils.java
│           │   │                   ├── fieldvalues/
│           │   │                   │   ├── FieldValuesParser.java
│           │   │                   │   ├── javac/
│           │   │                   │   │   ├── ExpressionTree.java
│           │   │                   │   │   ├── JavaCompilerFieldValuesParser.java
│           │   │                   │   │   ├── ReflectionWrapper.java
│           │   │                   │   │   ├── Tree.java
│           │   │                   │   │   ├── TreeVisitor.java
│           │   │                   │   │   ├── Trees.java
│           │   │                   │   │   ├── VariableTree.java
│           │   │                   │   │   └── package-info.java
│           │   │                   │   └── package-info.java
│           │   │                   ├── metadata/
│           │   │                   │   ├── ConfigurationMetadata.java
│           │   │                   │   ├── InvalidConfigurationMetadataException.java
│           │   │                   │   ├── ItemDeprecation.java
│           │   │                   │   ├── ItemHint.java
│           │   │                   │   ├── ItemIgnore.java
│           │   │                   │   ├── ItemMetadata.java
│           │   │                   │   ├── JsonConverter.java
│           │   │                   │   ├── JsonMarshaller.java
│           │   │                   │   └── package-info.java
│           │   │                   ├── package-info.java
│           │   │                   └── support/
│           │   │                       ├── ConventionUtils.java
│           │   │                       └── package-info.java
│           │   └── resources/
│           │       └── META-INF/
│           │           ├── gradle/
│           │           │   └── incremental.annotation.processors
│           │           └── services/
│           │               └── javax.annotation.processing.Processor
│           └── test/
│               ├── java/
│               │   └── org/
│               │       └── springframework/
│               │           └── boot/
│               │               ├── configurationprocessor/
│               │               │   ├── AbstractMetadataGenerationTests.java
│               │               │   ├── ConfigurationMetadataAnnotationProcessorTests.java
│               │               │   ├── ConstructorParameterPropertyDescriptorTests.java
│               │               │   ├── DeducedImmutablePropertiesMetadataGenerationTests.java
│               │               │   ├── EndpointMetadataGenerationTests.java
│               │               │   ├── GenericsMetadataGenerationTests.java
│               │               │   ├── ImmutablePropertiesMetadataGenerationTests.java
│               │               │   ├── IncrementalBuildMetadataGenerationTests.java
│               │               │   ├── InheritanceMetadataGenerationTests.java
│               │               │   ├── JavaBeanPropertyDescriptorTests.java
│               │               │   ├── LombokMetadataGenerationTests.java
│               │               │   ├── LombokPropertyDescriptorTests.java
│               │               │   ├── MergeMetadataGenerationTests.java
│               │               │   ├── MetadataCollectorTests.java
│               │               │   ├── MetadataGenerationEnvironmentFactory.java
│               │               │   ├── MetadataStoreTests.java
│               │               │   ├── MethodBasedMetadataGenerationTests.java
│               │               │   ├── NameAnnotationPropertiesTests.java
│               │               │   ├── PropertyDescriptorResolverTests.java
│               │               │   ├── PropertyDescriptorTests.java
│               │               │   ├── TestProject.java
│               │               │   ├── TypeUtilsTests.java
│               │               │   ├── fieldvalues/
│               │               │   │   ├── AbstractFieldValuesProcessorTests.java
│               │               │   │   └── javac/
│               │               │   │       └── JavaCompilerFieldValuesProcessorTests.java
│               │               │   ├── metadata/
│               │               │   │   ├── ItemHintTests.java
│               │               │   │   ├── ItemMetadataTests.java
│               │               │   │   ├── JsonMarshallerTests.java
│               │               │   │   ├── Metadata.java
│               │               │   │   └── TestJsonConverter.java
│               │               │   ├── support/
│               │               │   │   └── ConventionUtilsTests.java
│               │               │   └── test/
│               │               │       ├── CompiledMetadataReader.java
│               │               │       ├── ItemMetadataAssert.java
│               │               │       ├── RoundEnvironmentTester.java
│               │               │       ├── TestConfigurationMetadataAnnotationProcessor.java
│               │               │       └── TestableAnnotationProcessor.java
│               │               └── configurationsample/
│               │                   ├── TestAccess.java
│               │                   ├── TestAutowired.java
│               │                   ├── TestConfigurationProperties.java
│               │                   ├── TestConfigurationPropertiesSource.java
│               │                   ├── TestConstructorBinding.java
│               │                   ├── TestControllerEndpoint.java
│               │                   ├── TestDefaultValue.java
│               │                   ├── TestDeprecatedConfigurationProperty.java
│               │                   ├── TestEndpoint.java
│               │                   ├── TestJmxEndpoint.java
│               │                   ├── TestName.java
│               │                   ├── TestNestedConfigurationProperty.java
│               │                   ├── TestReadOperation.java
│               │                   ├── TestRestControllerEndpoint.java
│               │                   ├── TestServletEndpoint.java
│               │                   ├── TestWebEndpoint.java
│               │                   ├── deprecation/
│               │                   │   └── Dbcp2Configuration.java
│               │                   ├── endpoint/
│               │                   │   ├── CamelCaseEndpoint.java
│               │                   │   ├── CustomPropertiesEndpoint.java
│               │                   │   ├── EnabledEndpoint.java
│               │                   │   ├── NoAccessEndpoint.java
│               │                   │   ├── NullableParameterEndpoint.java
│               │                   │   ├── ReadOnlyAccessEndpoint.java
│               │                   │   ├── SimpleEndpoint.java
│               │                   │   ├── SimpleEndpoint2.java
│               │                   │   ├── SimpleEndpoint3.java
│               │                   │   ├── SpecificEndpoint.java
│               │                   │   ├── UnrestrictedAccessEndpoint.java
│               │                   │   └── incremental/
│               │                   │       ├── IncrementalEndpoint.java
│               │                   │       └── IncrementalSpecificEndpoint.java
│               │                   ├── fieldvalues/
│               │                   │   ├── FieldValues.java
│               │                   │   └── UnknownElementType.java
│               │                   ├── generic/
│               │                   │   ├── AbstractGenericProperties.java
│               │                   │   ├── AbstractIntermediateGenericProperties.java
│               │                   │   ├── ComplexGenericProperties.java
│               │                   │   ├── ConcreteBuilderProperties.java
│               │                   │   ├── GenericBuilderProperties.java
│               │                   │   ├── GenericConfig.java
│               │                   │   ├── MixGenericNameProperties.java
│               │                   │   ├── SimpleGenericProperties.java
│               │                   │   ├── UnresolvedGenericProperties.java
│               │                   │   ├── UpperBoundGenericPojo.java
│               │                   │   └── WildcardConfig.java
│               │                   ├── immutable/
│               │                   │   ├── DeducedImmutableClassProperties.java
│               │                   │   ├── ImmutableClassConstructorBindingProperties.java
│               │                   │   ├── ImmutableCollectionProperties.java
│               │                   │   ├── ImmutableDeducedConstructorBindingProperties.java
│               │                   │   ├── ImmutableInnerClassProperties.java
│               │                   │   ├── ImmutableMultiConstructorProperties.java
│               │                   │   ├── ImmutablePrimitiveProperties.java
│               │                   │   ├── ImmutablePrimitiveWithDefaultsProperties.java
│               │                   │   ├── ImmutablePrimitiveWrapperWithDefaultsProperties.java
│               │                   │   └── ImmutableSimpleProperties.java
│               │                   ├── incremental/
│               │                   │   ├── BarProperties.java
│               │                   │   ├── FooProperties.java
│               │                   │   └── RenamedBarProperties.java
│               │                   ├── inheritance/
│               │                   │   ├── BaseProperties.java
│               │                   │   ├── ChildProperties.java
│               │                   │   ├── ChildPropertiesConfig.java
│               │                   │   ├── OverrideChildProperties.java
│               │                   │   └── OverrideChildPropertiesConfig.java
│               │                   ├── lombok/
│               │                   │   ├── LombokAccessLevelOverwriteDataProperties.java
│               │                   │   ├── LombokAccessLevelOverwriteDefaultProperties.java
│               │                   │   ├── LombokAccessLevelOverwriteExplicitProperties.java
│               │                   │   ├── LombokAccessLevelProperties.java
│               │                   │   ├── LombokDefaultValueProperties.java
│               │                   │   ├── LombokDeprecatedProperties.java
│               │                   │   ├── LombokDeprecatedSingleProperty.java
│               │                   │   ├── LombokExplicitProperties.java
│               │                   │   ├── LombokInnerClassProperties.java
│               │                   │   ├── LombokInnerClassWithGetterProperties.java
│               │                   │   ├── LombokSimpleDataProperties.java
│               │                   │   ├── LombokSimpleProperties.java
│               │                   │   ├── LombokSimpleValueProperties.java
│               │                   │   └── SimpleLombokPojo.java
│               │                   ├── method/
│               │                   │   ├── DeprecatedClassMethodConfig.java
│               │                   │   ├── DeprecatedMethodConfig.java
│               │                   │   ├── EmptyTypeMethodConfig.java
│               │                   │   ├── InvalidMethodConfig.java
│               │                   │   ├── MethodAndClassConfig.java
│               │                   │   ├── NestedPropertiesMethod.java
│               │                   │   ├── NestedPropertiesMethodImmutable.java
│               │                   │   ├── NestedProperty.java
│               │                   │   ├── PackagePrivateMethodConfig.java
│               │                   │   ├── PrivateMethodConfig.java
│               │                   │   ├── ProtectedMethodConfig.java
│               │                   │   ├── PublicMethodConfig.java
│               │                   │   └── SingleConstructorMethodConfig.java
│               │                   ├── name/
│               │                   │   ├── ConstructorParameterNameAnnotationProperties.java
│               │                   │   ├── JavaBeanNameAnnotationProperties.java
│               │                   │   ├── LombokNameAnnotationProperties.java
│               │                   │   └── RecordComponentNameAnnotationProperties.java
│               │                   ├── record/
│               │                   │   ├── ExampleRecord.java
│               │                   │   ├── NestedPropertiesRecord.java
│               │                   │   ├── NestedRecord.java
│               │                   │   └── RecordWithGetter.java
│               │                   ├── recursive/
│               │                   │   └── RecursiveProperties.java
│               │                   ├── simple/
│               │                   │   ├── AutowiredProperties.java
│               │                   │   ├── ClassWithNestedProperties.java
│               │                   │   ├── DeprecatedFieldSingleProperty.java
│               │                   │   ├── DeprecatedProperties.java
│               │                   │   ├── DeprecatedRecord.java
│               │                   │   ├── DeprecatedSingleProperty.java
│               │                   │   ├── DescriptionProperties.java
│               │                   │   ├── HierarchicalProperties.java
│               │                   │   ├── HierarchicalPropertiesGrandparent.java
│               │                   │   ├── HierarchicalPropertiesParent.java
│               │                   │   ├── IgnoredProperties.java
│               │                   │   ├── InnerClassWithPrivateConstructor.java
│               │                   │   ├── NotAnnotated.java
│               │                   │   ├── SimpleArrayProperties.java
│               │                   │   ├── SimpleCollectionProperties.java
│               │                   │   ├── SimplePrefixValueProperties.java
│               │                   │   ├── SimpleProperties.java
│               │                   │   └── SimpleTypeProperties.java
│               │                   ├── source/
│               │                   │   ├── BaseSource.java
│               │                   │   ├── ConcreteProperties.java
│               │                   │   ├── ConcreteSource.java
│               │                   │   ├── ConcreteSourceAnnotated.java
│               │                   │   ├── ConventionSource.java
│               │                   │   ├── ConventionSourceAnnotated.java
│               │                   │   ├── ImmutableSource.java
│               │                   │   ├── ImmutableSourceAnnotated.java
│               │                   │   ├── LombokSource.java
│               │                   │   ├── LombokSourceAnnotated.java
│               │                   │   ├── ParentWithHintProperties.java
│               │                   │   ├── RecordSource.java
│               │                   │   ├── RecordSourceAnnotated.java
│               │                   │   ├── SimpleSource.java
│               │                   │   ├── SimpleSourceAnnotated.java
│               │                   │   └── generation/
│               │                   │       ├── AbstractPropertiesSource.java
│               │                   │       ├── ConfigurationPropertySourcesContainer.java
│               │                   │       ├── ImmutablePropertiesSource.java
│               │                   │       ├── LombokPropertiesSource.java
│               │                   │       ├── NestedPropertiesSource.java
│               │                   │       ├── RecordPropertiesSources.java
│               │                   │       └── SimplePropertiesSource.java
│               │                   └── specific/
│               │                       ├── AnnotatedGetter.java
│               │                       ├── BoxingPojo.java
│               │                       ├── BuilderPojo.java
│               │                       ├── DeprecatedLessPreciseTypePojo.java
│               │                       ├── DeprecatedSimplePojo.java
│               │                       ├── DeprecatedUnrelatedMethodPojo.java
│               │                       ├── DoubleRegistrationProperties.java
│               │                       ├── EmptyDefaultValueProperties.java
│               │                       ├── EnumValuesPojo.java
│               │                       ├── ExcludedTypesPojo.java
│               │                       ├── InnerClassAnnotatedGetterConfig.java
│               │                       ├── InnerClassHierarchicalProperties.java
│               │                       ├── InnerClassProperties.java
│               │                       ├── InnerClassRootConfig.java
│               │                       ├── InvalidAccessorProperties.java
│               │                       ├── InvalidDefaultValueCharacterProperties.java
│               │                       ├── InvalidDefaultValueFloatingPointProperties.java
│               │                       ├── InvalidDefaultValueNumberProperties.java
│               │                       ├── InvalidDoubleRegistrationProperties.java
│               │                       ├── MatchingConstructorNoDirectiveProperties.java
│               │                       ├── SimpleConflictingProperties.java
│               │                       ├── SimplePojo.java
│               │                       ├── StaticAccessor.java
│               │                       └── TwoConstructorsExample.java
│               └── resources/
│                   ├── META-INF/
│                   │   └── spring/
│                   │       └── configuration-metadata/
│                   │           ├── org.springframework.boot.configurationsample.source.BaseSource.json
│                   │           ├── org.springframework.boot.configurationsample.source.ConventionSource.json
│                   │           ├── org.springframework.boot.configurationsample.source.ImmutableSource.json
│                   │           ├── org.springframework.boot.configurationsample.source.LombokSource.json
│                   │           ├── org.springframework.boot.configurationsample.source.RecordSource.json
│                   │           └── org.springframework.boot.configurationsample.source.SimpleSource.json
│                   └── org/
│                       └── springframework/
│                           └── boot/
│                               └── configurationsample/
│                                   └── incremental/
│                                       └── BarProperties.snippet
├── core/
│   ├── spring-boot/
│   │   ├── build.gradle
│   │   └── src/
│   │       ├── main/
│   │       │   ├── java/
│   │       │   │   └── org/
│   │       │   │       └── springframework/
│   │       │   │           └── boot/
│   │       │   │               ├── AotInitializerNotFoundException.java
│   │       │   │               ├── ApplicationArguments.java
│   │       │   │               ├── ApplicationContextFactory.java
│   │       │   │               ├── ApplicationEnvironment.java
│   │       │   │               ├── ApplicationInfoPropertySource.java
│   │       │   │               ├── ApplicationProperties.java
│   │       │   │               ├── ApplicationRunner.java
│   │       │   │               ├── Banner.java
│   │       │   │               ├── BeanDefinitionLoader.java
│   │       │   │               ├── ClearCachesApplicationLi

================================================
FILE CONTENTS
================================================

================================================
FILE: .editorconfig
================================================
root=true

[*.{groovy,java,kt,xml}]
indent_style = tab
indent_size = 4
continuation_indent_size = 8


================================================
FILE: .git-blame-ignore-revs
================================================
# .git-blame-ignore-revs
# Reformat code following spring-javaformat upgrade
df5898a1464112f185d295d585740de696934a12
c4de86c244acdcff69ed0aecacd254399be79ce2
b07269a018a4a9d4c029aba7dd8a15fa66df681c

    

================================================
FILE: .github/ISSUE_TEMPLATE/config.yml
================================================
blank_issues_enabled: false
contact_links:
  - name: Community Support
    url: https://stackoverflow.com/tags/spring-boot
    about: Please ask and answer questions on StackOverflow with the tag `spring-boot`.


================================================
FILE: .github/ISSUE_TEMPLATE/issue.md
================================================
---
name: General
about: Bugs, enhancements, documentation, tasks.
title: ''
labels: ''
assignees: ''
---

<!--
Thanks for raising a Spring Boot issue. Please take the time to review the following
categories as some of them do not apply here.

🙅 "Please DO NOT Raise an Issue" Cases
- Question
STOP!! Please ask questions about how to use something, or to understand why something isn't
working as you expect it to, on Stack Overflow using the spring-boot tag.
- Security Vulnerability
STOP!! Please don't raise security vulnerabilities here. Head over to https://spring.io/security-policy to learn how to disclose them responsibly.
- Managed Dependency Upgrade
You DO NOT need to raise an issue for a managed dependency version upgrade as there's a semi-automatic process for checking managed dependencies for new versions before a release. BUT pull requests for upgrades that are more involved than just a version property change are still most welcome.
- With an Immediate Pull Request
An issue will be closed as a duplicate of the immediate pull request, so you don't have to raise an issue if you plan to create a pull request immediately.

🐞 Bug report (please don't include this emoji/text, just add your details)
Please provide details of the problem, including the version of Spring Boot that you
are using. If possible, please provide a test case or sample application that reproduces
the problem. This makes it much easier for us to diagnose the problem and to verify that
we have fixed it.

🎁 Enhancement (please don't include this emoji/text, just add your details)
Please start by describing the problem that you are trying to solve. There may already
be a solution, or there may be a way to solve it that you hadn't considered.


TIP: You can always edit your issue if it isn't formatted correctly.
     See https://guides.github.com/features/mastering-markdown 
-->


================================================
FILE: .github/PULL_REQUEST_TEMPLATE.md
================================================
<!--
Thanks for contributing to Spring Boot. Please review the following notes before
submitting a pull request.

Please submit only genuine pull-requests. Do not use this repository as a GitHub
playground.

Security Vulnerabilities

STOP! If your contribution fixes a security vulnerability, please do not submit it.
Instead, please head over to https://spring.io/security-policy to learn how to disclose a
vulnerability responsibly.

Dependency Upgrades

Please do not open a pull request for a straightforward dependency upgrade (one that
only updates the version property). We have a semi-automated process for such upgrades
that we prefer to use. However, if the upgrade is more involved (such as requiring
changes for removed or deprecated API) your pull request is most welcome.

Describing Your Changes

If, having reviewed the notes above, you're ready to submit your pull request, please
provide a brief description of the proposed changes. If they fix a bug, please
describe the broken behaviour and how the changes fix it. If they make an enhancement,
please describe the new functionality and why you believe it's useful. If your pull
request relates to any existing issues, please reference them by using the issue number
prefixed with #.
-->


================================================
FILE: .github/actions/await-http-resource/action.yml
================================================
name: Await HTTP Resource
description: 'Waits for an HTTP resource to be available (a HEAD request succeeds)'
inputs:
  url:
    description: 'URL of the resource to await'
    required: true
runs:
  using: composite
  steps:
    - name: Await HTTP resource
      shell: bash
      run: |
        url=${{ inputs.url }}
        echo "Waiting for $url"
        until curl --fail --head --silent ${{ inputs.url }} > /dev/null
        do
          echo "."
          sleep 60
        done
        echo "$url is available"


================================================
FILE: .github/actions/create-github-release/action.yml
================================================
name: Create GitHub Release
description: 'Create the release on GitHub with a changelog'
inputs:
  commercial:
    description: 'Whether to generate the changelog for the commercial release'
    required: true
  milestone:
    description: 'Name of the GitHub milestone for which a release will be created'
    required: true
  pre-release:
    description: 'Whether the release is a pre-release (a milestone or release candidate)'
    required: false
    default: 'false'
  token:
    description: 'Token to use for authentication with GitHub'
    required: true
runs:
  using: composite
  steps:
    - name: Generate Changelog
      uses: spring-io/github-changelog-generator@f7d7a87a3e7c627ecb8c26cf086c38ac5a939721 #v0.0.14
      with:
        config-file: ${{ inputs.commercial && '.github/actions/create-github-release/changelog-generator-commercial.yml' || '.github/actions/create-github-release/changelog-generator-oss.yml' }}
        milestone: ${{ inputs.milestone }}
        token: ${{ inputs.token }}
    - name: Create GitHub Release
      shell: bash
      env:
        GITHUB_TOKEN: ${{ inputs.token }}
      run: gh release create ${{ format('v{0}', inputs.milestone) }} --notes-file changelog.md ${{ inputs.pre-release == 'true' && '--prerelease' || '' }}


================================================
FILE: .github/actions/create-github-release/changelog-generator-commercial.yml
================================================
changelog:
  sections:
    - title: ":warning: Attention Required"
      labels:
        - "for: upgrade-attention"
      summary:
        mode: "member-comment"
        config:
          prefix: "Attention required:"
    - title: ":star: New Features"
      labels:
        - "type: enhancement"
    - title: ":lady_beetle: Bug Fixes"
      labels:
        - "type: bug"
        - "type: regression"
    - title: ":notebook_with_decorative_cover: Documentation"
      labels:
        - "type: documentation"
    - title: ":hammer: Dependency Upgrades"
      sort: "title"
      labels:
        - "type: dependency-upgrade"
  issues:
    generate_links: false
    ports:
      - label: "status: forward-port"
        bodyExpression: 'Forward port of issue #(\d+).*'
      - label: "status: back-port"
        bodyExpression: 'Back port of issue #(\d+).*'


================================================
FILE: .github/actions/create-github-release/changelog-generator-oss.yml
================================================
changelog:
  sections:
    - title: ":warning: Attention Required"
      labels:
        - "for: upgrade-attention"
      summary:
        mode: "member-comment"
        config:
          prefix: "Attention required:"
    - title: ":star: New Features"
      labels:
        - "type: enhancement"
    - title: ":lady_beetle: Bug Fixes"
      labels:
        - "type: bug"
        - "type: regression"
    - title: ":notebook_with_decorative_cover: Documentation"
      labels:
        - "type: documentation"
    - title: ":hammer: Dependency Upgrades"
      sort: "title"
      labels:
        - "type: dependency-upgrade"
      summary:
        mode: "body-regex"
        config:
          expression: '(Upgrade to \[.*\]\(.*\)).*'
  issues:
    generate_links: true
    ports:
      - label: "status: forward-port"
        bodyExpression: 'Forward port of issue #(\d+).*'
      - label: "status: back-port"
        bodyExpression: 'Back port of issue #(\d+).*'


================================================
FILE: .github/actions/prepare-gradle-build/action.yml
================================================
name: Prepare Gradle Build
description: 'Prepares a Gradle build. Sets up Java and Gradle and configures Gradle properties'
inputs:
  cache-read-only:
    description: 'Whether Gradle''s cache should be read only'
    required: false
    default: 'true'
  develocity-access-key:
    description: 'Access key for authentication with ge.spring.io'
    required: false
  java-distribution:
    description: 'Java distribution to use'
    required: false
    default: 'liberica'
  java-early-access:
    description: 'Whether the Java version is in early access. When true, forces java-distribution to temurin'
    required: false
    default: 'false'
  java-toolchain:
    description: 'Whether a Java toolchain should be used'
    required: false
    default: 'false'
  java-version:
    description: 'Java version to use for the build'
    required: false
    default: '25'
runs:
  using: composite
  steps:
    - name: Free Disk Space
      if: ${{ runner.os == 'Linux' }}
      uses: jlumbroso/free-disk-space@54081f138730dfa15788a46383842cd2f914a1be # v1.3.1
      with:
        tool-cache: true
        docker-images: false
    - name: Set Up Java
      uses: actions/setup-java@v5
      with:
        distribution: ${{ inputs.java-early-access == 'true' && 'temurin' || (inputs.java-distribution || 'liberica') }}
        java-version: |
          ${{ inputs.java-early-access == 'true' && format('{0}-ea', inputs.java-version) || inputs.java-version }}
          ${{ inputs.java-toolchain == 'true' && '25' || '' }}
    - name: Set Up Gradle With Read/Write Cache
      if: ${{ inputs.cache-read-only == 'false' }}
      uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5.0.2
      with:
        cache-read-only: false
        develocity-access-key: ${{ inputs.develocity-access-key }}
    - name: Set Up Gradle
      uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5.0.2
      with:
        develocity-access-key: ${{ inputs.develocity-access-key }}
        develocity-token-expiry: 4
    - name: Configure Gradle Properties
      shell: bash
      run: |
        mkdir -p $HOME/.gradle
        echo 'systemProp.user.name=spring-builds+github' >> $HOME/.gradle/gradle.properties
        echo 'systemProp.org.gradle.internal.launcher.welcomeMessageEnabled=false' >> $HOME/.gradle/gradle.properties
        echo 'org.gradle.daemon=false' >> $HOME/.gradle/gradle.properties
    - name: Configure Toolchain Properties
      if: ${{ inputs.java-toolchain == 'true' }}
      shell: bash
      run: |
        echo toolchainVersion=${{ inputs.java-version }} >> $HOME/.gradle/gradle.properties
        echo systemProp.org.gradle.java.installations.auto-detect=false >> $HOME/.gradle/gradle.properties
        echo systemProp.org.gradle.java.installations.auto-download=false >> $HOME/.gradle/gradle.properties
        echo systemProp.org.gradle.java.installations.paths=${{ format('$JAVA_HOME_{0}_X64', inputs.java-version) }} >> $HOME/.gradle/gradle.properties


================================================
FILE: .github/actions/print-jvm-thread-dumps/action.yml
================================================
name: Print JVM thread dumps
description: 'Prints a thread dump for all running JVMs'
runs:
  using: composite
  steps:
    - if: ${{ runner.os == 'Linux' }}
      shell: bash
      run: |
        for jvm_pid in $(jps -q -J-XX:+PerfDisableSharedMem); do
          jcmd $jvm_pid Thread.print
        done
    - if: ${{ runner.os == 'Windows' }}
      shell: powershell
      run: |
        foreach ($jvm_pid in $(jps -q -J-XX:+PerfDisableSharedMem)) {
          jcmd $jvm_pid Thread.print
        }


================================================
FILE: .github/actions/publish-gradle-plugin/action.yml
================================================
name: Publish Gradle Plugin
description: 'Publishes Spring Boot''s Gradle plugin to the Plugin Portal'
inputs:
  build-number:
    description: 'Build number to use when downloading plugin artifacts'
    required: false
    default: ${{ github.run_number }}
  gradle-plugin-publish-key:
    description: 'Gradle publishing key'
    required: true
  gradle-plugin-publish-secret:
    description: 'Gradle publishing secret'
    required: true
  jfrog-cli-config-token:
    description: 'Config token for the JFrog CLI'
    required: true
  plugin-version:
    description: 'Version of the plugin'
    required: true
runs:
  using: composite
  steps:
    - name: Set Up JFrog CLI
      uses: jfrog/setup-jfrog-cli@1641575d87647fb969c0545f0b6a76873e328b7c # v5.0.0
      env:
        JF_ENV_SPRING: ${{ inputs.jfrog-cli-config-token }}
    - name: Download Artifacts
      shell: bash
      run: jf rt download --spec ${{ format('{0}/artifacts.spec', github.action_path) }} --spec-vars 'buildName=${{ format('spring-boot-{0}', inputs.plugin-version) }};buildNumber=${{ inputs.build-number }}'
    - name: Set Up Java
      uses: actions/setup-java@v5
      with:
        distribution: 'liberica'
        java-version: '17'
    - name: Publish
      shell: bash
      working-directory: ${{ github.action_path }}
      run: ${{ github.workspace }}/gradlew publishExisting -Pgradle.publish.key=${{ inputs.gradle-plugin-publish-key }} -Pgradle.publish.secret=${{ inputs.gradle-plugin-publish-secret }} -PbootVersion=${{ inputs.plugin-version }} -PrepositoryRoot=${{ github.workspace }}/repository


================================================
FILE: .github/actions/publish-gradle-plugin/artifacts.spec
================================================
{
  "files": [
    {
      "aql": {
        "items.find": {
          "$and": [
            {
              "@build.name": "${buildName}",
              "@build.number": "${buildNumber}",
              "path": {
                "$match": "org/springframework/boot/spring-boot-gradle-plugin/*"
              }
            }
          ]
        }
      },
      "target": "repository/"
    }
  ]
}


================================================
FILE: .github/actions/publish-gradle-plugin/build.gradle
================================================
/*
 * Copyright 2012-present the original author or authors.
 *
 * Licensed under the Apache License, Version 2.0 (the License);
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      https://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

plugins {
	id "com.gradle.plugin-publish" version "1.2.1"
}

tasks.register("publishExisting", com.gradle.publish.PublishExistingTask) {
	pluginId = "org.springframework.boot"
	fileRepositoryRoot = new File("${repositoryRoot}")
	pluginVersion = "${bootVersion}"
	pluginCoordinates = "org.springframework.boot:spring-boot-gradle-plugin:${bootVersion}"
	displayName = "Spring Boot Gradle Plugin"
	pluginDescription = "Spring Boot Gradle Plugin"
	website = "https://spring.io/projects/spring-boot"
	vcsUrl = "https://github.com/spring-projects/spring-boot"
}


================================================
FILE: .github/actions/publish-gradle-plugin/settings.gradle
================================================
/*
 * Copyright 2012-present the original author or authors.
 *
 * Licensed under the Apache License, Version 2.0 (the License);
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      https://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */



================================================
FILE: .github/actions/publish-to-sdkman/action.yml
================================================
name: Publish to SDKMAN!
description: 'Publishes the release as a new candidate version on SDKMAN!'
inputs:
  make-default:
    description: 'Whether the release should be made the default version'
    required: false
    default: 'false'
  sdkman-consumer-key:
    description: 'Key for publishing to SDKMAN!'
    required: true
  sdkman-consumer-token:
    description: 'Token for publishing to SDKMAN!'
    required: true
  spring-boot-version:
    description: 'Version to publish'
    required: true
runs:
  using: composite
  steps:
    - name: Publish Release
      shell: bash
      run: >
        curl -X POST \
          -H "Consumer-Key: ${{ inputs.sdkman-consumer-key }}" \
          -H "Consumer-Token: ${{ inputs.sdkman-consumer-token }}" \
          -H "Content-Type: application/json" \
          -H "Accept: application/json" \
          -d '{"candidate": "springboot", "version": "${{ inputs.spring-boot-version }}", "url": "${{ format('https://repo.maven.apache.org/maven2/org/springframework/boot/spring-boot-cli/{0}/spring-boot-cli-{0}-bin.zip', inputs.spring-boot-version) }}"}' \
          https://vendors.sdkman.io/release
    - name: Flag Release as Default
      if: ${{ inputs.make-default == 'true' }}
      shell: bash
      run: >
        curl -X PUT \
          -H "Consumer-Key: ${{ inputs.sdkman-consumer-key }}" \
          -H "Consumer-Token: ${{ inputs.sdkman-consumer-token }}" \
          -H "Content-Type: application/json" \
          -H "Accept: application/json" \
          -d '{"candidate": "springboot", "version": "${{ inputs.spring-boot-version }}"}' \
          https://vendors.sdkman.io/default


================================================
FILE: .github/actions/send-notification/action.yml
================================================
name: Send Notification
description: 'Sends a Google Chat message as a notification of the job''s outcome'
inputs:
  build-scan-url:
    description: 'URL of the build scan to include in the notification'
    required: false
  run-name:
    description: 'Name of the run to include in the notification'
    required: false
    default: ${{ format('{0} {1}', github.ref_name, github.job) }}
  status:
    description: 'Status of the job'
    required: true
  webhook-url:
    description: 'Google Chat Webhook URL'
    required: true
runs:
  using: composite
  steps:
    - name: Prepare Variables
      shell: bash
      run: |
        echo "BUILD_SCAN=${{ inputs.build-scan-url == '' && ' [build scan unavailable]' || format(' [<{0}|Build Scan>]', inputs.build-scan-url) }}" >> "$GITHUB_ENV"
        echo "RUN_URL=${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}" >> "$GITHUB_ENV"
    - name: Success Notification
      if: ${{ inputs.status == 'success' }}
      shell: bash
      run: |
        curl -X POST '${{ inputs.webhook-url }}' -H 'Content-Type: application/json' -d '{ text: "<${{ env.RUN_URL }}|${{ inputs.run-name }}> was successful ${{ env.BUILD_SCAN }}"}' || true
    - name: Failure Notification
      if: ${{ inputs.status == 'failure' }}
      shell: bash
      run: |
        curl -X POST '${{ inputs.webhook-url }}' -H 'Content-Type: application/json' -d '{ text: "<users/all> *<${{ env.RUN_URL }}|${{ inputs.run-name }}> failed* ${{ env.BUILD_SCAN }}"}' || true
    - name: Cancel Notification
      if: ${{ inputs.status == 'cancelled' }}
      shell: bash
      run: |
        curl -X POST '${{ inputs.webhook-url }}' -H 'Content-Type: application/json' -d '{ text: "<${{ env.RUN_URL }}|${{ inputs.run-name }}> was cancelled"}' || true


================================================
FILE: .github/actions/sync-to-maven-central/action.yml
================================================
name: Sync to Maven Central
description: 'Syncs a release to Maven Central and waits for it to be available for use'
inputs:
  central-token-password:
    description: 'Password for authentication with central.sonatype.com'
    required: true
  central-token-username:
    description: 'Username for authentication with central.sonatype.com'
    required: true
  jfrog-cli-config-token:
    description: 'Config token for the JFrog CLI'
    required: true
  spring-boot-version:
    description: 'Version of Spring Boot that is being synced to Central'
    required: true
runs:
  using: composite
  steps:
    - name: Set Up JFrog CLI
      uses: jfrog/setup-jfrog-cli@1641575d87647fb969c0545f0b6a76873e328b7c # v5.0.0
      env:
        JF_ENV_SPRING: ${{ inputs.jfrog-cli-config-token }}
    - name: Download Release Artifacts
      shell: bash
      run: jf rt download --spec ${{ format('{0}/artifacts.spec', github.action_path) }} --spec-vars 'buildName=${{ format('spring-boot-{0}', inputs.spring-boot-version) }};buildNumber=${{ github.run_number }}'
    - name: Sync
      uses: spring-io/central-publish-action@0c03960e9b16fdfe70e2443e1d5393cbc3a35622 # v0.3.0
      with:
        token: ${{ inputs.central-token-password }}
        token-name: ${{ inputs.central-token-username }}
        ignore-already-exists-error: true
        timeout: "90m"
    - name: Await
      uses: ./.github/actions/await-http-resource
      with:
        url: ${{ format('https://repo.maven.apache.org/maven2/org/springframework/boot/spring-boot/{0}/spring-boot-{0}.jar', inputs.spring-boot-version) }}


================================================
FILE: .github/actions/sync-to-maven-central/artifacts.spec
================================================
{
  "files": [
    {
      "aql": {
        "items.find": {
          "$and": [
            {
              "@build.name": "${buildName}",
              "@build.number": "${buildNumber}",
              "path": {
                "$nmatch": "org/springframework/boot/spring-boot-docs/*"
              }
            }
          ]
        }
      },
      "target": "nexus/"
    }
  ]
}


================================================
FILE: .github/actions/update-homebrew-tap/action.yml
================================================
name: Update Homebrew Tap
description: Updates the Homebrew Tap for the Spring Boot CLI
inputs:
  spring-boot-version:
    description: 'The version to publish'
    required: true
  token:
    description: 'Token to use for GitHub authentication'
    required: true
runs:
  using: composite
  steps:
    - name: Check Out Homebrew Tap Repo
      uses: actions/checkout@v6
      with:
        path: updated-homebrew-tap-repo
        repository: spring-io/homebrew-tap
        token: ${{ inputs.token }}
    - name: Await Formula
      uses: ./.github/actions/await-http-resource
      with:
        url: https://repo.maven.apache.org/maven2/org/springframework/boot/spring-boot-cli/${{ inputs.spring-boot-version }}/spring-boot-cli-${{ inputs.spring-boot-version }}-homebrew.rb
    - name: Update Homebrew Tap
      shell: bash
      run: |
        pushd updated-homebrew-tap-repo > /dev/null
        curl https://repo.maven.apache.org/maven2/org/springframework/boot/spring-boot-cli/${{ inputs.spring-boot-version }}/spring-boot-cli-${{ inputs.spring-boot-version }}-homebrew.rb --output spring-boot-cli-${{ inputs.spring-boot-version }}-homebrew.rb
        rm spring-boot.rb
        mv spring-boot-cli-*.rb spring-boot.rb
        git config user.name "Spring Builds" > /dev/null
        git config user.email "spring-builds@users.noreply.github.com" > /dev/null
        git add spring-boot.rb > /dev/null
        git commit -m "Upgrade to Spring Boot ${{ inputs.spring-boot-version }}" > /dev/null
        git push
        echo "DONE"
        popd > /dev/null


================================================
FILE: .github/dco.yml
================================================
require:
  members: false


================================================
FILE: .github/dependabot.yml
================================================
version: 2
updates:
  - package-ecosystem: "github-actions"
    directory: "/"
    schedule:
      interval: "weekly"
    labels:
      - "type: task"
      - "status: waiting-for-triage"
  - package-ecosystem: "npm"
    directory: "/antora"
    schedule:
      interval: "weekly"
    labels:
      - "type: task"
      - "status: waiting-for-triage"


================================================
FILE: .github/scripts/reclaim-docker-diskspace.sh
================================================
#!/bin/bash

echo "Reclaiming Docker Disk Space"
echo

docker image ls --format "{{.Size}} {{.ID}} {{.Repository}} {{.Tag}}" | LANG=en_US sort -rh | while read line; do
	size=$( echo "$line" | cut -d' ' -f1 | sed -e 's/\.[0-9]*//' | sed -e 's/MB/000000/' | sed -e 's/GB/000000000/' )
	image=$( echo "$line" | cut -d' ' -f2 )
	repository=$( echo "$line" | cut -d' ' -f3 )
	tag=$( echo "$line" | cut -d' ' -f4 )
	echo "Considering $image $repository:$tag $size"
	if [[ "$tag" =~ ^[a-f0-9]{32}$ ]]; then
		echo "Ignoring GitHub action image $image $repository:$tag"
	elif [[ "$tag" == "<none>" ]]; then
		echo "Ignoring untagged image $image $repository:$tag"
	elif [[ "$size" -lt 200000000 ]]; then
		echo "Ignoring small image $image $repository:$tag"
	else
		echo "Cleaning $image $repository:$tag"
		docker image rm $image
	fi
done

echo "Finished cleanup, leaving the following containers:"
echo
docker image ls --format "{{.Size}} {{.ID}} {{.Repository}}:{{.Tag}}" | LANG=en_US sort -rh
echo
df -h
echo


================================================
FILE: .github/workflows/build-and-deploy-snapshot.yml
================================================
name: Build and Deploy Snapshot
on:
  workflow_dispatch:
  push:
    branches:
      - 'main'
permissions:
  contents: read
concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
jobs:
  build-and-deploy-snapshot:
    name: Build and Deploy Snapshot
    if: ${{ github.repository == 'spring-projects/spring-boot' || github.repository == 'spring-projects/spring-boot-commercial' }}
    runs-on: ${{ vars.UBUNTU_MEDIUM || 'ubuntu-latest' }}
    steps:
      - name: Check Out Code
        uses: actions/checkout@v6
      - name: Build and Publish
        id: build-and-publish
        uses: ./.github/actions/build
        with:
          commercial-release-repository-url: ${{ vars.COMMERCIAL_RELEASE_REPO_URL }}
          commercial-repository-password: ${{ secrets.COMMERCIAL_ARTIFACTORY_PASSWORD }}
          commercial-repository-username: ${{ secrets.COMMERCIAL_ARTIFACTORY_USERNAME }}
          commercial-snapshot-repository-url: ${{ vars.COMMERCIAL_SNAPSHOT_REPO_URL }}
          develocity-access-key: ${{ secrets.DEVELOCITY_ACCESS_KEY }}
          gradle-cache-read-only: false
          publish: true
      - name: Deploy
        uses: spring-io/artifactory-deploy-action@926d7f7cc810569395346bf3a4d91b380b3e355b # v0.0.4
        with:
          build-name: ${{ vars.COMMERCIAL && format('spring-boot-commercial-{0}', '4.1.x') || format('spring-boot-{0}', '4.1.x') }}
          folder: 'deployment-repository'
          password: ${{ vars.COMMERCIAL && secrets.COMMERCIAL_ARTIFACTORY_PASSWORD || secrets.ARTIFACTORY_PASSWORD }}
          project: ${{ vars.COMMERCIAL && 'spring' }}
          repository: ${{ vars.COMMERCIAL && 'spring-enterprise-maven-dev-local' || 'libs-snapshot-local' }}
          signing-key: ${{ secrets.GPG_PRIVATE_KEY }}
          signing-passphrase: ${{ secrets.GPG_PASSPHRASE }}
          threads: 8
          uri: ${{ vars.COMMERCIAL_DEPLOY_REPO_URL || 'https://repo.spring.io' }}
          username: ${{ vars.COMMERCIAL && secrets.COMMERCIAL_ARTIFACTORY_USERNAME || secrets.ARTIFACTORY_USERNAME }}
      - name: Send Notification
        if: always()
        uses: ./.github/actions/send-notification
        with:
          build-scan-url: ${{ steps.build-and-publish.outputs.build-scan-url }}
          run-name: ${{ format('{0} | Linux | Java 25', github.ref_name) }}
          status: ${{ job.status }}
          webhook-url: ${{ secrets.GOOGLE_CHAT_WEBHOOK_URL }}
    outputs:
      version: ${{ steps.build-and-publish.outputs.version }}
  trigger-docs-build:
    name: Trigger Docs Build
    needs: build-and-deploy-snapshot
    permissions:
      actions: write
    runs-on: ${{ vars.UBUNTU_SMALL || 'ubuntu-latest' }}
    steps:
      - name: Run Deploy Docs Workflow
        env:
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        run: gh workflow run deploy-docs.yml --repo ${{ github.repository }} -r docs-build -f build-sha=${{ github.sha }} -f build-refname=${{ github.ref_name }} -f build-version=${{ needs.build-and-deploy-snapshot.outputs.version }}
  verify:
    name: Verify
    needs: build-and-deploy-snapshot
    uses: ./.github/workflows/verify.yml
    secrets:
      commercial-repository-password: ${{ secrets.COMMERCIAL_ARTIFACTORY_PASSWORD }}
      commercial-repository-username: ${{ secrets.COMMERCIAL_ARTIFACTORY_USERNAME }}
      google-chat-webhook-url: ${{ secrets.GOOGLE_CHAT_WEBHOOK_URL }}
      opensource-repository-password: ${{ secrets.ARTIFACTORY_PASSWORD }}
      opensource-repository-username: ${{ secrets.ARTIFACTORY_USERNAME }}
      token: ${{ secrets.GH_ACTIONS_REPO_TOKEN }}
    with:
      version: ${{ needs.build-and-deploy-snapshot.outputs.version }}


================================================
FILE: .github/workflows/build-pull-request.yml
================================================
name: Build Pull Request
on: pull_request
permissions:
  contents: read
jobs:
  build:
    name: Build Pull Request
    if: ${{ github.repository == 'spring-projects/spring-boot' }}
    runs-on: ${{ vars.UBUNTU_MEDIUM || 'ubuntu-latest' }}
    steps:
      - name: Check Out Code
        uses: actions/checkout@v6
      - name: Build
        id: build
        uses: ./.github/actions/build
      - name: Print JVM Thread Dumps When Cancelled
        if: cancelled()
        uses: ./.github/actions/print-jvm-thread-dumps
      - name: Upload Build Reports
        if: failure()
        uses: actions/upload-artifact@v7
        with:
          name: build-reports
          path: '**/build/reports/'


================================================
FILE: .github/workflows/ci.yml
================================================
name: CI
on:
  push:
    branches:
      - 'main'
permissions:
  contents: read
jobs:
  ci:
    name: '${{ matrix.os.name}} | Java ${{ matrix.java.version}}'
    if: ${{ github.repository == 'spring-projects/spring-boot' || github.repository == 'spring-projects/spring-boot-commercial' }}
    runs-on: ${{ matrix.os.id }}
    strategy:
      fail-fast: false
      matrix:
        os:
          - id: ${{ vars.UBUNTU_MEDIUM || 'ubuntu-latest' }}
            name: Linux
          - id: windows-latest
            name: Windows
        java:
          - version: 17
            toolchain: true
          - version: 21
            toolchain: true
          - version: 25
            toolchain: false
          - version: 26
            toolchain: true
        exclude:
          - os:
              name: Linux
            java:
              version: 25
          - os:
              name: ${{ github.repository == 'spring-projects/spring-boot-commercial' && 'Windows' }}
    steps:
      - name: Prepare Windows runner
        if: ${{ runner.os == 'Windows' }}
        run: |
          git config --global core.autocrlf true
          git config --global core.longPaths true
          Stop-Service -name Docker
      - name: Check Out Code
        uses: actions/checkout@v6
      - name: Build
        id: build
        uses: ./.github/actions/build
        with:
          commercial-release-repository-url: ${{ vars.COMMERCIAL_RELEASE_REPO_URL }}
          commercial-repository-password: ${{ secrets.COMMERCIAL_ARTIFACTORY_PASSWORD }}
          commercial-repository-username: ${{ secrets.COMMERCIAL_ARTIFACTORY_USERNAME }}
          commercial-snapshot-repository-url: ${{ vars.COMMERCIAL_SNAPSHOT_REPO_URL }}
          develocity-access-key: ${{ secrets.DEVELOCITY_ACCESS_KEY }}
          gradle-cache-read-only: false
          java-early-access: ${{ matrix.java.early-access || 'false' }}
          java-distribution: ${{ matrix.java.distribution }}
          java-toolchain: ${{ matrix.java.toolchain }}
          java-version: ${{ matrix.java.version }}
      - name: Send Notification
        if: always()
        uses: ./.github/actions/send-notification
        with:
          build-scan-url: ${{ steps.build.outputs.build-scan-url }}
          run-name: ${{ format('{0} | {1} | Java {2}', github.ref_name, matrix.os.name, matrix.java.version) }}
          status: ${{ job.status }}
          webhook-url: ${{ secrets.GOOGLE_CHAT_WEBHOOK_URL }}


================================================
FILE: .github/workflows/distribute.yml
================================================
name: Distribute
on:
  workflow_dispatch:
    inputs:
      build-number:
        description: 'Number of the build to use to create the bundle'
        required: true
        type: string
      create-bundle:
        description: 'Whether to create the bundle. If unchecked, only the bundle distribution is executed'
        required: true
        type: boolean
        default: true
      version:
        description: 'Version to bundle and distribute'
        required: true
        type: string
permissions:
  contents: read
jobs:
  distribute-spring-enterprise-release-bundle:
    runs-on: ${{ vars.UBUNTU_SMALL || 'ubuntu-latest' }}
    steps:
      - name: Create Bundle
        if: ${{ vars.COMMERCIAL && inputs.create-bundle }}
        shell: bash
        run: |
          curl -s -u "${{ secrets.COMMERCIAL_ARTIFACTORY_USERNAME }}:${{ secrets.COMMERCIAL_ARTIFACTORY_PASSWORD }}" \
            -X POST -H "X-JFrog-Signing-Key-Name: packagesKey" -H "Content-Type: application/json" \
            "https://usw1.packages.broadcom.com/lifecycle/api/v2/release_bundle?project=spring" \
            -d '{"release_bundle_name": "TNZ-spring-boot-commercial", "release_bundle_version": "${{ inputs.version }}", "skip_docker_manifest_resolution": true, "source_type": "builds", "source": {"builds": [ {"build_repository": "spring-build-info", "build_name": "spring-boot-commercial-${{ inputs.version }}", "build_number": "${{ inputs.build-number }}", "include_dependencies": false}]}}' | \
            jq -e 'if has("repository_key") then . else halt_error end'
      - name: Sleep
        if: ${{ vars.COMMERCIAL && inputs.create-bundle }}
        shell: bash
        run: sleep 30
      - name: Distribute Bundle
        if: ${{ vars.COMMERCIAL }}
        shell: bash
        run: |
          curl -s -u "${{ secrets.COMMERCIAL_ARTIFACTORY_USERNAME }}:${{ secrets.COMMERCIAL_ARTIFACTORY_PASSWORD }}" \
            -X POST -H "Content-Type: application/json" \
            "https://usw1.packages.broadcom.com/lifecycle/api/v2/distribution/distribute/TNZ-spring-boot-commercial/${{ inputs.version }}?project=spring" \
            -d '{"auto_create_missing_repositories": "false", "distribution_rules": [{"site_name": "JP-SaaS"}], "modifications": {"mappings": [{"input": "spring-enterprise-maven-prod-local/(.*)", "output": "spring-enterprise/$1"}]}}' | \
            jq -e 'if has("id") then . else halt_error end'


================================================
FILE: .github/workflows/release-milestone.yml
================================================
name: Release Milestone
on:
  push:
    tags:
      - v4.1.0-M[0-9]
      - v4.1.0-RC[0-9]
permissions:
  contents: read
concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
jobs:
  build-and-stage-release:
    name: Build and Stage Release
    if: ${{ github.repository == 'spring-projects/spring-boot' }}
    runs-on: ${{ vars.UBUNTU_MEDIUM || 'ubuntu-latest' }}
    steps:
      - name: Check Out Code
        uses: actions/checkout@v6
      - name: Build and Publish
        id: build-and-publish
        uses: ./.github/actions/build
        with:
          develocity-access-key: ${{ secrets.DEVELOCITY_ACCESS_KEY }}
          gradle-cache-read-only: false
          publish: true
      - name: Stage Release
        uses: spring-io/artifactory-deploy-action@926d7f7cc810569395346bf3a4d91b380b3e355b # v0.0.4
        with:
          build-name: ${{ format('spring-boot-{0}', steps.build-and-publish.outputs.version)}}
          folder: 'deployment-repository'
          password: ${{ secrets.ARTIFACTORY_PASSWORD }}
          repository: 'libs-staging-local'
          signing-key: ${{ secrets.GPG_PRIVATE_KEY }}
          signing-passphrase: ${{ secrets.GPG_PASSPHRASE }}
          threads: 8
          uri: 'https://repo.spring.io'
          username: ${{ secrets.ARTIFACTORY_USERNAME }}
    outputs:
      version: ${{ steps.build-and-publish.outputs.version }}
  verify:
    name: Verify
    needs: build-and-stage-release
    uses: ./.github/workflows/verify.yml
    secrets:
      commercial-repository-password: ${{ secrets.COMMERCIAL_ARTIFACTORY_RO_PASSWORD }}
      commercial-repository-username: ${{ secrets.COMMERCIAL_ARTIFACTORY_RO_USERNAME }}
      google-chat-webhook-url: ${{ secrets.GOOGLE_CHAT_WEBHOOK_URL }}
      opensource-repository-password: ${{ secrets.ARTIFACTORY_PASSWORD }}
      opensource-repository-username: ${{ secrets.ARTIFACTORY_USERNAME }}
      token: ${{ secrets.GH_ACTIONS_REPO_TOKEN }}
    with:
      staging: true
      version: ${{ needs.build-and-stage-release.outputs.version }}
  sync-to-maven-central:
    name: Sync to Maven Central
    if: ${{ !vars.COMMERCIAL }}
    needs:
      - build-and-stage-release
      - verify
    runs-on: ${{ vars.UBUNTU_SMALL || 'ubuntu-latest' }}
    steps:
      - name: Check Out Code
        uses: actions/checkout@v6
      - name: Sync to Maven Central
        uses: ./.github/actions/sync-to-maven-central
        with:
          central-token-password: ${{ secrets.CENTRAL_TOKEN_PASSWORD }}
          central-token-username: ${{ secrets.CENTRAL_TOKEN_USERNAME }}
          jfrog-cli-config-token: ${{ secrets.JF_ARTIFACTORY_SPRING }}
          spring-boot-version: ${{ needs.build-and-stage-release.outputs.version }}
  promote-release:
    name: Promote Release
    needs:
      - build-and-stage-release
      - sync-to-maven-central
    runs-on: ${{ vars.UBUNTU_SMALL || 'ubuntu-latest' }}
    steps:
      - name: Set up JFrog CLI
        uses: jfrog/setup-jfrog-cli@1641575d87647fb969c0545f0b6a76873e328b7c # v5.0.0
        env:
          JF_ENV_SPRING: ${{ secrets.JF_ARTIFACTORY_SPRING }}
      - name: Promote build
        run: jfrog rt build-promote ${{ format('spring-boot-{0}', needs.build-and-stage-release.outputs.version)}} ${{ github.run_number }} libs-milestone-local
  publish-gradle-plugin:
    name: Publish Gradle Plugin
    if: ${{ !vars.COMMERCIAL }}
    needs:
      - build-and-stage-release
      - sync-to-maven-central
    runs-on: ${{ vars.UBUNTU_SMALL || 'ubuntu-latest' }}
    steps:
      - name: Check Out Code
        uses: actions/checkout@v6
      - name: Publish
        uses: ./.github/actions/publish-gradle-plugin
        with:
          gradle-plugin-publish-key: ${{ secrets.GRADLE_PLUGIN_PUBLISH_KEY }}
          gradle-plugin-publish-secret: ${{ secrets.GRADLE_PLUGIN_PUBLISH_SECRET }}
          jfrog-cli-config-token: ${{ secrets.JF_ARTIFACTORY_SPRING }}
          plugin-version: ${{ needs.build-and-stage-release.outputs.version }}
  trigger-docs-build:
    name: Trigger Docs Build
    needs:
      - build-and-stage-release
      - promote-release
    permissions:
      actions: write
    runs-on: ubuntu-latest
    steps:
      - name: Run Deploy Docs Workflow
        env:
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        run: gh workflow run deploy-docs.yml --repo ${{ github.repository }} -r docs-build -f build-refname=${{ github.ref_name }} -f build-version=${{ needs.build-and-stage-release.outputs.version }}
  create-github-release:
    name: Create GitHub Release
    needs:
      - build-and-stage-release
      - promote-release
      - publish-gradle-plugin
      - trigger-docs-build
    runs-on: ${{ vars.UBUNTU_SMALL || 'ubuntu-latest' }}
    steps:
      - name: Check Out Code
        uses: actions/checkout@v6
      - name: Create GitHub Release
        uses: ./.github/actions/create-github-release
        with:
          commercial: ${{ vars.COMMERCIAL }}
          milestone: ${{ needs.build-and-stage-release.outputs.version }}
          pre-release: true
          token: ${{ secrets.GH_ACTIONS_REPO_TOKEN }}


================================================
FILE: .github/workflows/release.yml
================================================
name: Release
on:
  push:
    tags:
      - v4.1.[0-9]+
permissions:
  contents: read
concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
jobs:
  build-and-stage-release:
    name: Build and Stage Release
    if: ${{ github.repository == 'spring-projects/spring-boot' || github.repository == 'spring-projects/spring-boot-commercial' }}
    runs-on: ${{ vars.UBUNTU_MEDIUM || 'ubuntu-latest' }}
    steps:
      - name: Check Out Code
        uses: actions/checkout@v6
      - name: Build and Publish
        id: build-and-publish
        uses: ./.github/actions/build
        with:
          commercial-release-repository-url: ${{ vars.COMMERCIAL_RELEASE_REPO_URL }}
          commercial-repository-password: ${{ secrets.COMMERCIAL_ARTIFACTORY_PASSWORD }}
          commercial-repository-username: ${{ secrets.COMMERCIAL_ARTIFACTORY_USERNAME }}
          commercial-snapshot-repository-url: ${{ vars.COMMERCIAL_SNAPSHOT_REPO_URL }}
          develocity-access-key: ${{ secrets.DEVELOCITY_ACCESS_KEY }}
          gradle-cache-read-only: false
          publish: true
      - name: Stage Release
        uses: spring-io/artifactory-deploy-action@926d7f7cc810569395346bf3a4d91b380b3e355b # v0.0.4
        with:
          build-name: ${{ vars.COMMERCIAL && format('spring-boot-commercial-{0}', steps.build-and-publish.outputs.version) || format('spring-boot-{0}', steps.build-and-publish.outputs.version) }}
          folder: 'deployment-repository'
          password: ${{ vars.COMMERCIAL && secrets.COMMERCIAL_ARTIFACTORY_PASSWORD || secrets.ARTIFACTORY_PASSWORD }}
          project: ${{ vars.COMMERCIAL && 'spring' }}
          repository: ${{ vars.COMMERCIAL && 'spring-enterprise-maven-stage-local' || 'libs-staging-local' }}
          signing-key: ${{ secrets.GPG_PRIVATE_KEY }}
          signing-passphrase: ${{ secrets.GPG_PASSPHRASE }}
          threads: 8
          uri: ${{ vars.COMMERCIAL_DEPLOY_REPO_URL || 'https://repo.spring.io' }}
          username: ${{ vars.COMMERCIAL && secrets.COMMERCIAL_ARTIFACTORY_USERNAME || secrets.ARTIFACTORY_USERNAME }}
      - name: Send Notification
        if: failure()
        uses: ./.github/actions/send-notification
        with:
          run-name: ${{ format('{0} | Release Staging | {1}', github.ref_name, inputs.version) }}
          status: ${{ job.status }}
          webhook-url: ${{ secrets.GOOGLE_CHAT_WEBHOOK_URL }}
    outputs:
      version: ${{ steps.build-and-publish.outputs.version }}
  verify:
    name: Verify
    needs: build-and-stage-release
    uses: ./.github/workflows/verify.yml
    secrets:
      commercial-repository-password: ${{ secrets.COMMERCIAL_ARTIFACTORY_PASSWORD }}
      commercial-repository-username: ${{ secrets.COMMERCIAL_ARTIFACTORY_USERNAME }}
      google-chat-webhook-url: ${{ secrets.GOOGLE_CHAT_WEBHOOK_URL }}
      opensource-repository-password: ${{ secrets.ARTIFACTORY_PASSWORD }}
      opensource-repository-username: ${{ secrets.ARTIFACTORY_USERNAME }}
      token: ${{ secrets.GH_ACTIONS_REPO_TOKEN }}
    with:
      staging: true
      version: ${{ needs.build-and-stage-release.outputs.version }}
  sync-to-maven-central:
    name: Sync to Maven Central
    if: ${{ !vars.COMMERCIAL }}
    needs:
      - build-and-stage-release
      - verify
    runs-on: ${{ vars.UBUNTU_SMALL || 'ubuntu-latest' }}
    steps:
      - name: Check Out Code
        uses: actions/checkout@v6
      - name: Sync to Maven Central
        uses: ./.github/actions/sync-to-maven-central
        with:
          central-token-password: ${{ secrets.CENTRAL_TOKEN_PASSWORD }}
          central-token-username: ${{ secrets.CENTRAL_TOKEN_USERNAME }}
          jfrog-cli-config-token: ${{ secrets.JF_ARTIFACTORY_SPRING }}
          spring-boot-version: ${{ needs.build-and-stage-release.outputs.version }}
  promote-release:
    name: Promote Release
    needs:
      - build-and-stage-release
      - sync-to-maven-central
    runs-on: ${{ vars.UBUNTU_SMALL || 'ubuntu-latest' }}
    steps:
      - name: Set up JFrog CLI
        uses: jfrog/setup-jfrog-cli@1641575d87647fb969c0545f0b6a76873e328b7c # v5.0.0
        env:
          JF_ENV_SPRING: ${{ vars.COMMERCIAL && secrets.COMMERCIAL_JF_ARTIFACTORY_SPRING || secrets.JF_ARTIFACTORY_SPRING }}
      - name: Promote open source build
        if: ${{ !vars.COMMERCIAL }}
        run: jfrog rt build-promote ${{ format('spring-boot-{0}', needs.build-and-stage-release.outputs.version)}} ${{ github.run_number }} libs-release-local
      - name: Promote commercial build
        if: ${{ vars.COMMERCIAL }}
        run: jfrog rt build-promote ${{ format('spring-boot-commercial-{0}', needs.build-and-stage-release.outputs.version)}} ${{ github.run_number }} spring-enterprise-maven-prod-local --project spring
  publish-gradle-plugin:
    name: Publish Gradle Plugin
    if: ${{ !vars.COMMERCIAL }}
    needs:
      - build-and-stage-release
      - sync-to-maven-central
    runs-on: ${{ vars.UBUNTU_SMALL || 'ubuntu-latest' }}
    steps:
      - name: Check Out Code
        uses: actions/checkout@v6
      - name: Publish
        uses: ./.github/actions/publish-gradle-plugin
        with:
          gradle-plugin-publish-key: ${{ secrets.GRADLE_PLUGIN_PUBLISH_KEY }}
          gradle-plugin-publish-secret: ${{ secrets.GRADLE_PLUGIN_PUBLISH_SECRET }}
          jfrog-cli-config-token: ${{ secrets.JF_ARTIFACTORY_SPRING }}
          plugin-version: ${{ needs.build-and-stage-release.outputs.version }}
  publish-to-sdkman:
    name: Publish to SDKMAN!
    if: ${{ !vars.COMMERCIAL }}
    needs:
      - build-and-stage-release
      - sync-to-maven-central
    runs-on: ${{ vars.UBUNTU_SMALL || 'ubuntu-latest' }}
    steps:
      - name: Check Out Code
        uses: actions/checkout@v6
      - name: Publish to SDKMAN!
        uses: ./.github/actions/publish-to-sdkman
        with:
          make-default: true
          sdkman-consumer-key: ${{ secrets.SDKMAN_CONSUMER_KEY }}
          sdkman-consumer-token: ${{ secrets.SDKMAN_CONSUMER_TOKEN }}
          spring-boot-version: ${{ needs.build-and-stage-release.outputs.version }}
  update-homebrew-tap:
    name: Update Homebrew Tap
    needs:
      - build-and-stage-release
      - sync-to-maven-central
    runs-on: ${{ vars.UBUNTU_SMALL || 'ubuntu-latest' }}
    steps:
      - name: Check Out Code
        uses: actions/checkout@v6
      - name: Update Homebrew Tap
        uses: ./.github/actions/update-homebrew-tap
        with:
          spring-boot-version: ${{ needs.build-and-stage-release.outputs.version }}
          token: ${{ secrets.GH_ACTIONS_REPO_TOKEN }}
  trigger-docs-build:
    name: Trigger Docs Build
    needs:
      - build-and-stage-release
      - promote-release
    permissions:
      actions: write
    runs-on: ubuntu-latest
    steps:
      - name: Run Deploy Docs Workflow
        env:
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        run: gh workflow run deploy-docs.yml --repo ${{ github.repository }} -r docs-build -f build-refname=${{ github.ref_name }} -f build-version=${{ needs.build-and-stage-release.outputs.version }}
  create-github-release:
    name: Create GitHub Release
    needs:
      - build-and-stage-release
      - promote-release
      - publish-gradle-plugin
      - publish-to-sdkman
      - trigger-docs-build
      - update-homebrew-tap
    runs-on: ${{ vars.UBUNTU_SMALL || 'ubuntu-latest' }}
    steps:
      - name: Check Out Code
        uses: actions/checkout@v6
      - name: Create GitHub Release
        uses: ./.github/actions/create-github-release
        with:
          commercial: ${{ vars.COMMERCIAL }}
          milestone: ${{ needs.build-and-stage-release.outputs.version }}
          token: ${{ secrets.GH_ACTIONS_REPO_TOKEN }}


================================================
FILE: .github/workflows/run-codeql-analysis.yml
================================================
name: "Run CodeQL Analysis"
on:
  push:
  pull_request:
  workflow_dispatch:
permissions: read-all
jobs:
  run-analysis:
    permissions:
      actions: read
      contents: read
      security-events: write
    uses: spring-io/github-actions/.github/workflows/codeql-analysis.yml@6e66995f7d29de1e4ff76e4f0def7a10163fe910


================================================
FILE: .github/workflows/run-system-tests.yml
================================================
name: Run System Tests
on:
  push:
    branches:
      - "main"
permissions:
  contents: read
jobs:
  run-system-tests:
    name: "Java ${{ matrix.java.version}}"
    if: ${{ github.repository == 'spring-projects/spring-boot' }}
    runs-on: ${{ vars.UBUNTU_MEDIUM || 'ubuntu-latest' }}
    strategy:
      matrix:
        java:
          - version: 17
            toolchain: true
          - version: 21
            toolchain: true
    steps:
      - name: Switch Docker to Overlay2
        shell: bash
        run: |
          echo '{"storage-driver":"overlay2"}' | sudo tee /etc/docker/daemon.json
          sudo systemctl restart docker
      - name: Check Out Code
        uses: actions/checkout@v6
      - name: Prepare Gradle Build
        uses: ./.github/actions/prepare-gradle-build
        with:
          develocity-access-key: ${{ secrets.DEVELOCITY_ACCESS_KEY }}
          java-toolchain: ${{ matrix.java.toolchain }}
          java-version: ${{ matrix.java.version }}
      - name: Run System Tests
        id: run-system-tests
        shell: bash
        run: ./gradlew systemTest
      - name: Show docker info
        if: always()
        shell: bash
        run: docker version ; docker info
      - name: List docker images
        if: always()
        shell: bash
        run: docker image ls --digests
      - name: Send Notification
        if: always()
        uses: ./.github/actions/send-notification
        with:
          build-scan-url: ${{ steps.run-system-tests.outputs.build-scan-url }}
          run-name: ${{ format('{0} | System Tests | Java {1}', github.ref_name, matrix.java.version) }}
          status: ${{ job.status }}
          webhook-url: ${{ secrets.GOOGLE_CHAT_WEBHOOK_URL }}


================================================
FILE: .github/workflows/trigger-docs-build.yml
================================================
name: Trigger Docs Build
on:
  push:
    branches: 'main'
    paths: [ 'antora/*' ]
  workflow_dispatch:
    inputs:
      build-version:
        description: 'Version being build (e.g. 1.0.3-SNAPSHOT)'
        required: false
      build-sha:
        description: Enter the SHA to build (e.g. 82c97891569821a7f91a77ca074232e0b54ca7a5)
        required: false
      build-refname:
        description: 'Git refname to build (e.g., 1.0.x)'
        required: false

permissions:
  contents: read
jobs:
  trigger-docs-build:
    name: Trigger Docs Build
    if: github.repository_owner == 'spring-projects'
    runs-on: ${{ vars.UBUNTU_SMALL || 'ubuntu-latest' }}
    permissions:
      actions: write
    steps:
    - name: Check Out
      uses: actions/checkout@v6
      with:
        ref: docs-build
    - name: Trigger Workflow
      env:
        GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
      run: gh workflow run deploy-docs.yml -r docs-build -f build-refname=${{ github.event.inputs.build-refname }} -f build-sha=${{ github.event.inputs.build-sha }} -f build-version=${{ github.event.inputs.build-version }}


================================================
FILE: .github/workflows/verify.yml
================================================
name: Verify
on:
  workflow_call:
    inputs:
      staging:
        description: 'Whether the release to verify is in the staging repository'
        required: false
        default: false
        type: boolean
      version:
        description: 'Version to verify'
        required: true
        type: string
    secrets:
      commercial-repository-password:
        description: 'Password for authentication with the commercial repository'
        required: false
      commercial-repository-username:
        description: 'Username for authentication with the commercial repository'
        required: false
      google-chat-webhook-url:
        description: 'Google Chat Webhook URL'
        required: true
      opensource-repository-password:
        description: 'Password for authentication with the open-source repository'
        required: false
      opensource-repository-username:
        description: 'Username for authentication with the open-source repository'
        required: false
      token:
        description: 'Token to use for authentication with GitHub'
        required: true
permissions:
  contents: read
jobs:
  verify:
    name: Verify
    runs-on: ${{ vars.UBUNTU_SMALL || 'ubuntu-latest' }}
    steps:
      - name: Check Out Release Verification Tests
        uses: actions/checkout@v6
        with:
          ref: 'v0.0.15'
          repository: spring-projects/spring-boot-release-verification
          token: ${{ secrets.token }}
      - name: Check Out Send Notification Action
        uses: actions/checkout@v6
        with:
          path: send-notification
          sparse-checkout: .github/actions/send-notification
      - name: Set Up Java
        uses: actions/setup-java@v5
        with:
          distribution: 'liberica'
          java-version: 17
      - name: Set Up Homebrew
        if: ${{ !vars.COMMERCIAL }}
        uses: Homebrew/actions/setup-homebrew@7657c9512f50e1c35b640971116425935bab3eea
        with:
          stable: true
      - name: Set Up Gradle
        uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5.0.2
        with:
          cache-read-only: false
      - name: Configure Gradle Properties
        shell: bash
        run: |
          mkdir -p $HOME/.gradle
          echo 'org.gradle.daemon=false' >> $HOME/.gradle/gradle.properties
      - name: Run Release Verification Tests
        env:
          RVT_COMMERCIAL_REPOSITORY_PASSWORD: ${{ secrets.commercial-repository-password }}
          RVT_COMMERCIAL_REPOSITORY_USERNAME: ${{ secrets.commercial-repository-username }}
          RVT_OSS_REPOSITORY_PASSWORD: ${{ secrets.opensource-repository-password }}
          RVT_OSS_REPOSITORY_USERNAME: ${{ secrets.opensource-repository-username }}
          RVT_RELEASE_TYPE: ${{ vars.COMMERCIAL && 'commercial' || 'oss' }}
          RVT_STAGING: ${{ inputs.staging }}
          RVT_VERSION: ${{ inputs.version }}
        run: ./gradlew spring-boot-release-verification-tests:test
      - name: Upload Build Reports on Failure
        if: failure()
        uses: actions/upload-artifact@v7
        with:
          name: build-reports
          path: '**/build/reports/'
      - name: Send Notification
        if: always()
        uses: ./send-notification/.github/actions/send-notification
        with:
          run-name: ${{ format('{0} | Verification | {1}', github.ref_name, inputs.version) }}
          status: ${{ job.status }}
          webhook-url: ${{ secrets.google-chat-webhook-url }}


================================================
FILE: .gitignore
================================================
*#
*.iml
*.ipr
*.iws
*.jar
*.sw?
*~
.#*
.*.md.html
.DS_Store
.attach_pid*
.classpath
.factorypath
.gradle
.metadata
.project
.recommenders
.settings
.springBeans
.vscode
/code
MANIFEST.MF
_site/
activemq-data
bin
build
!/**/src/**/bin
!/**/src/**/build
build.log
dependency-reduced-pom.xml
dump.rdb
interpolated*.xml
lib/
manifest.yml
out
overridedb.*
target
.flattened-pom.xml
secrets.yml
.gradletasknamecache
.sts4-cache
.git-hooks/
node_modules
/.kotlin/


================================================
FILE: .idea/.gitignore
================================================
# Project name
.name
*.xml
/modules/
/shelf/
/workspace.xml
# Editor-based HTTP Client requests
/httpRequests/
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml


================================================
FILE: .sdkmanrc
================================================
# Enable auto-env through the sdkman_auto_env config
# Add key=value pairs of SDKs to use below
java=25.0.2-librca


================================================
FILE: CONTRIBUTING.adoc
================================================
= Contributing to Spring Boot

Spring Boot is released under the Apache 2.0 license. If you would like to contribute something, or want to hack on the code this document should help you get started.



== Code of Conduct

This project adheres to the Contributor Covenant https://github.com/spring-projects/spring-boot?tab=coc-ov-file#contributor-code-of-conduct[code of conduct].
By participating, you are expected to uphold this code. Please report unacceptable behavior to code-of-conduct@spring.io.



== Using GitHub Issues

We use GitHub issues to track bugs and enhancements.
If you have a general usage question please ask on https://stackoverflow.com[Stack Overflow].
The Spring Boot team and the broader community monitor the https://stackoverflow.com/tags/spring-boot[`spring-boot`] tag.

If you are reporting a bug, please help to speed up problem diagnosis by providing as much information as possible.
Ideally, that would include a small sample project that reproduces the problem.



== Reporting Security Vulnerabilities

If you think you have found a security vulnerability in Spring Boot please *DO NOT* disclose it publicly until we've had a chance to fix it.
Please don't report security vulnerabilities using GitHub issues, instead head over to https://spring.io/security-policy and learn how to disclose them responsibly.



== Include a Signed Off By Trailer

All commits must include a __Signed-off-by__ trailer at the end of each commit message to indicate that the contributor agrees to the Developer Certificate of Origin.
For additional details, please refer to the blog post https://spring.io/blog/2025/01/06/hello-dco-goodbye-cla-simplifying-contributions-to-spring[Hello DCO, Goodbye CLA: Simplifying Contributions to Spring].



== Code Conventions and Housekeeping

None of these is essential for a pull request, but they will all help.  They can also be
added after the original pull request but before a merge.

* We use the https://github.com/spring-io/spring-javaformat/[Spring JavaFormat] project to apply code formatting conventions.
  If you use Eclipse and you follow the https://github.com/spring-projects/spring-boot/wiki/Working-with-the-Code#importing-into-eclipse["Importing into Eclipse"] instructions you should get project-specific formatting automatically.
  You can also install the https://github.com/spring-io/spring-javaformat/#intellij-idea[Spring JavaFormat IntelliJ Plugin] or format the code from the Gradle build by running `./gradlew format`.
  Note that if you have format violations in `buildSrc`, you can fix them by running `./gradlew -p buildSrc format` from the project root directory.
* The build includes Checkstyle rules for many of our code conventions. Run `./gradlew checkstyleMain checkstyleTest` if you want to check your changes are compliant.
* Make sure all new `.java` files have a Javadoc class comment with at least an `@author` tag identifying you, and preferably at least a paragraph on what the class is for.
* Add the ASF license header comment to all new `.java` files (copy from existing files in the project).
* Add yourself as an `@author` to the `.java` files that you modify substantially (more than cosmetic changes).
* Add some Javadocs.
* A few unit tests would help a lot as well -- someone has to do it.
* Verification tasks, including tests and Checkstyle, can be executed by running `./gradlew check` from the project root.
  Note that `SPRING_PROFILES_ACTIVE` environment variable might affect the result of tests, so in that case, you can prevent it by running `unset SPRING_PROFILES_ACTIVE` before running the task.
* If no-one else is using your branch, please rebase it against the current main branch (or other target branch in the project).
* When writing a commit message please follow https://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html[these conventions].



== Working with the Code

For information on editing, building, and testing the code, see the https://github.com/spring-projects/spring-boot/wiki/Working-with-the-Code[Working with the Code] page on the project wiki.


================================================
FILE: LICENSE.txt
================================================

                                 Apache License
                           Version 2.0, January 2004
                        https://www.apache.org/licenses/

   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

   1. Definitions.

      "License" shall mean the terms and conditions for use, reproduction,
      and distribution as defined by Sections 1 through 9 of this document.

      "Licensor" shall mean the copyright owner or entity authorized by
      the copyright owner that is granting the License.

      "Legal Entity" shall mean the union of the acting entity and all
      other entities that control, are controlled by, or are under common
      control with that entity. For the purposes of this definition,
      "control" means (i) the power, direct or indirect, to cause the
      direction or management of such entity, whether by contract or
      otherwise, or (ii) ownership of fifty percent (50%) or more of the
      outstanding shares, or (iii) beneficial ownership of such entity.

      "You" (or "Your") shall mean an individual or Legal Entity
      exercising permissions granted by this License.

      "Source" form shall mean the preferred form for making modifications,
      including but not limited to software source code, documentation
      source, and configuration files.

      "Object" form shall mean any form resulting from mechanical
      transformation or translation of a Source form, including but
      not limited to compiled object code, generated documentation,
      and conversions to other media types.

      "Work" shall mean the work of authorship, whether in Source or
      Object form, made available under the License, as indicated by a
      copyright notice that is included in or attached to the work
      (an example is provided in the Appendix below).

      "Derivative Works" shall mean any work, whether in Source or Object
      form, that is based on (or derived from) the Work and for which the
      editorial revisions, annotations, elaborations, or other modifications
      represent, as a whole, an original work of authorship. For the purposes
      of this License, Derivative Works shall not include works that remain
      separable from, or merely link (or bind by name) to the interfaces of,
      the Work and Derivative Works thereof.

      "Contribution" shall mean any work of authorship, including
      the original version of the Work and any modifications or additions
      to that Work or Derivative Works thereof, that is intentionally
      submitted to Licensor for inclusion in the Work by the copyright owner
      or by an individual or Legal Entity authorized to submit on behalf of
      the copyright owner. For the purposes of this definition, "submitted"
      means any form of electronic, verbal, or written communication sent
      to the Licensor or its representatives, including but not limited to
      communication on electronic mailing lists, source code control systems,
      and issue tracking systems that are managed by, or on behalf of, the
      Licensor for the purpose of discussing and improving the Work, but
      excluding communication that is conspicuously marked or otherwise
      designated in writing by the copyright owner as "Not a Contribution."

      "Contributor" shall mean Licensor and any individual or Legal Entity
      on behalf of whom a Contribution has been received by Licensor and
      subsequently incorporated within the Work.

   2. Grant of Copyright License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      copyright license to reproduce, prepare Derivative Works of,
      publicly display, publicly perform, sublicense, and distribute the
      Work and such Derivative Works in Source or Object form.

   3. Grant of Patent License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      (except as stated in this section) patent license to make, have made,
      use, offer to sell, sell, import, and otherwise transfer the Work,
      where such license applies only to those patent claims licensable
      by such Contributor that are necessarily infringed by their
      Contribution(s) alone or by combination of their Contribution(s)
      with the Work to which such Contribution(s) was submitted. If You
      institute patent litigation against any entity (including a
      cross-claim or counterclaim in a lawsuit) alleging that the Work
      or a Contribution incorporated within the Work constitutes direct
      or contributory patent infringement, then any patent licenses
      granted to You under this License for that Work shall terminate
      as of the date such litigation is filed.

   4. Redistribution. You may reproduce and distribute copies of the
      Work or Derivative Works thereof in any medium, with or without
      modifications, and in Source or Object form, provided that You
      meet the following conditions:

      (a) You must give any other recipients of the Work or
          Derivative Works a copy of this License; and

      (b) You must cause any modified files to carry prominent notices
          stating that You changed the files; and

      (c) You must retain, in the Source form of any Derivative Works
          that You distribute, all copyright, patent, trademark, and
          attribution notices from the Source form of the Work,
          excluding those notices that do not pertain to any part of
          the Derivative Works; and

      (d) If the Work includes a "NOTICE" text file as part of its
          distribution, then any Derivative Works that You distribute must
          include a readable copy of the attribution notices contained
          within such NOTICE file, excluding those notices that do not
          pertain to any part of the Derivative Works, in at least one
          of the following places: within a NOTICE text file distributed
          as part of the Derivative Works; within the Source form or
          documentation, if provided along with the Derivative Works; or,
          within a display generated by the Derivative Works, if and
          wherever such third-party notices normally appear. The contents
          of the NOTICE file are for informational purposes only and
          do not modify the License. You may add Your own attribution
          notices within Derivative Works that You distribute, alongside
          or as an addendum to the NOTICE text from the Work, provided
          that such additional attribution notices cannot be construed
          as modifying the License.

      You may add Your own copyright statement to Your modifications and
      may provide additional or different license terms and conditions
      for use, reproduction, or distribution of Your modifications, or
      for any such Derivative Works as a whole, provided Your use,
      reproduction, and distribution of the Work otherwise complies with
      the conditions stated in this License.

   5. Submission of Contributions. Unless You explicitly state otherwise,
      any Contribution intentionally submitted for inclusion in the Work
      by You to the Licensor shall be under the terms and conditions of
      this License, without any additional terms or conditions.
      Notwithstanding the above, nothing herein shall supersede or modify
      the terms of any separate license agreement you may have executed
      with Licensor regarding such Contributions.

   6. Trademarks. This License does not grant permission to use the trade
      names, trademarks, service marks, or product names of the Licensor,
      except as required for reasonable and customary use in describing the
      origin of the Work and reproducing the content of the NOTICE file.

   7. Disclaimer of Warranty. Unless required by applicable law or
      agreed to in writing, Licensor provides the Work (and each
      Contributor provides its Contributions) on an "AS IS" BASIS,
      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
      implied, including, without limitation, any warranties or conditions
      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
      PARTICULAR PURPOSE. You are solely responsible for determining the
      appropriateness of using or redistributing the Work and assume any
      risks associated with Your exercise of permissions under this License.

   8. Limitation of Liability. In no event and under no legal theory,
      whether in tort (including negligence), contract, or otherwise,
      unless required by applicable law (such as deliberate and grossly
      negligent acts) or agreed to in writing, shall any Contributor be
      liable to You for damages, including any direct, indirect, special,
      incidental, or consequential damages of any character arising as a
      result of this License or out of the use or inability to use the
      Work (including but not limited to damages for loss of goodwill,
      work stoppage, computer failure or malfunction, or any and all
      other commercial damages or losses), even if such Contributor
      has been advised of the possibility of such damages.

   9. Accepting Warranty or Additional Liability. While redistributing
      the Work or Derivative Works thereof, You may choose to offer,
      and charge a fee for, acceptance of support, warranty, indemnity,
      or other liability obligations and/or rights consistent with this
      License. However, in accepting such obligations, You may act only
      on Your own behalf and on Your sole responsibility, not on behalf
      of any other Contributor, and only if You agree to indemnify,
      defend, and hold each Contributor harmless for any liability
      incurred by, or claims asserted against, such Contributor by reason
      of your accepting any such warranty or additional liability.

   END OF TERMS AND CONDITIONS

   APPENDIX: How to apply the Apache License to your work.

      To apply the Apache License to your work, attach the following
      boilerplate notice, with the fields enclosed by brackets "{}"
      replaced with your own identifying information. (Don't include
      the brackets!)  The text should be enclosed in the appropriate
      comment syntax for the file format. We also recommend that a
      file or class name and description of purpose be included on the
      same "printed page" as the copyright notice for easier
      identification within third-party archives.

   Copyright {yyyy} {name of copyright owner}

   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   You may obtain a copy of the License at

       https://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.

================================================
FILE: README.adoc
================================================
= Spring Boot image:https://github.com/spring-projects/spring-boot/actions/workflows/build-and-deploy-snapshot.yml/badge.svg?branch=main["Build Status", link="https://github.com/spring-projects/spring-boot/actions/workflows/build-and-deploy-snapshot.yml?query=branch%3Amain"] image:https://img.shields.io/badge/Revved%20up%20by-Develocity-06A0CE?logo=Gradle&labelColor=02303A["Revved up by Develocity", link="https://ge.spring.io/scans?&search.rootProjectNames=Spring%20Boot%20Build&search.rootProjectNames=spring-boot-build"]

:docs: https://docs.spring.io/spring-boot
:github: https://github.com/spring-projects/spring-boot

Spring Boot helps you to create Spring-powered, production-grade applications and services with absolute minimum fuss.
It takes an opinionated view of the Spring platform so that new and existing users can quickly get to the bits they need.

You can use Spring Boot to create stand-alone Java applications that can be started using `java -jar` or more traditional WAR deployments.
We also provide a command-line tool that runs Spring scripts.

Our primary goals are:

* Provide a radically faster and widely accessible getting started experience for all Spring development.
* Be opinionated, but get out of the way quickly as requirements start to diverge from the defaults.
* Provide a range of non-functional features common to large classes of projects (for example, embedded servers, security, metrics, health checks, externalized configuration).
* Absolutely no code generation and no requirement for XML configuration.



== Installation and Getting Started

The {docs}[reference documentation] includes detailed {docs}/installing.html[installation instructions] as well as a comprehensive {docs}/tutorial/first-application/index.html[``getting started``] guide.

Here is a quick teaser of a complete Spring Boot application in Java:

[source,java]
----
import org.springframework.boot.*;
import org.springframework.boot.autoconfigure.*;
import org.springframework.web.bind.annotation.*;

@RestController
@SpringBootApplication
public class Example {

	@RequestMapping("/")
	String home() {
		return "Hello World!";
	}

	public static void main(String[] args) {
		SpringApplication.run(Example.class, args);
	}

}
----



== Getting Help

Are you having trouble with Spring Boot? We want to help!

* Check the {docs}/[reference documentation], especially the {docs}/how-to/index.html[How-to's] -- they provide solutions to the most common questions.
* Learn the Spring basics -- Spring Boot builds on many other Spring projects; check the https://spring.io[spring.io] website for a wealth of reference documentation.
  If you are new to Spring, try one of the https://spring.io/guides[guides].
* If you are upgrading, read the {github}/wiki[release notes] for upgrade instructions and "new and noteworthy" features.
* Ask a question -- we monitor https://stackoverflow.com[stackoverflow.com] for questions tagged with https://stackoverflow.com/tags/spring-boot[`spring-boot`].
* Report bugs with Spring Boot at {github}/issues[github.com/spring-projects/spring-boot/issues].



== Contributing

We welcome contributions of all kinds!
Please read our link:CONTRIBUTING.adoc[contribution guidelines] before submitting a pull request.



== Reporting Issues

Spring Boot uses GitHub's integrated issue tracking system to record bugs and feature requests.
If you want to raise an issue, please follow the recommendations below:

* Before you log a bug, please search the {github}/issues[issue tracker] to see if someone has already reported the problem.
* If the issue doesn't already exist, {github}/issues/new[create a new issue].
* Please provide as much information as possible with the issue report.
We like to know the Spring Boot version, operating system, and JVM version you're using.
* If you need to paste code or include a stack trace, use Markdown.
+++```+++ escapes before and after your text.
* If possible, try to create a test case or project that replicates the problem and attach it to the issue.



== Building from Source

You don't need to build from source to use Spring Boot.
If you want to try out the latest and greatest, Spring Boot can be built and published to your local Maven cache using the https://docs.gradle.org/current/userguide/gradle_wrapper.html[Gradle wrapper].
You also need JDK 25.

[source,shell]
----
$ ./gradlew publishToMavenLocal
----

This command builds all modules and publishes them to your local Maven cache.
It won't run any of the tests.
If you want to build everything, use the `build` task:

[source,shell]
----
$ ./gradlew build
----



== Guides

The https://spring.io/[spring.io] site contains several guides that show how to use Spring Boot step-by-step:

* https://spring.io/guides/gs/spring-boot/[Building an Application with Spring Boot] is an introductory guide that shows you how to create an application, run it, and add some management services.
* https://spring.io/guides/gs/actuator-service/[Building a RESTful Web Service with Spring Boot Actuator] is a guide to creating a REST web service and also shows how the server can be configured.



== License

Spring Boot is Open Source software released under the https://www.apache.org/licenses/LICENSE-2.0.html[Apache 2.0 license].


================================================
FILE: SUPPORT.adoc
================================================
= Getting support for Spring Boot



== GitHub issues

We choose not to use GitHub issues for general usage questions and support, preferring to
use issues solely for the tracking of bugs and enhancements. If you have a general
usage question please do not open a GitHub issue, but use one of the other channels
described below.

If you are reporting a bug, please help to speed up problem diagnosis by providing as
much information as possible. Ideally, that would include a small sample project that
reproduces the problem.



== Stack Overflow

The Spring Boot community monitors the
https://stackoverflow.com/tags/spring-boot[`spring-boot`] tag on Stack Overflow. Before
asking a question, please familiarize yourself with Stack Overflow's
https://stackoverflow.com/help/how-to-ask[advice on how to ask a good question].



== VMware Tanzu Enterprise Support

If you are interested in more dedicated support, VMware Tanzu provides https://enterprise.spring.io/[enterprise support] for Spring Boot.


================================================
FILE: antora/package.json
================================================
{
  "scripts": {
    "antora": "node npm/antora.js"
  },
  "dependencies": {
    "@antora/cli": "3.2.0-alpha.11",
    "@antora/site-generator": "3.2.0-alpha.11",
    "@antora/atlas-extension": "1.0.0-alpha.5",
    "@springio/antora-extensions": "1.14.10",
    "@springio/antora-xref-extension": "1.0.0-alpha.5",
    "@springio/antora-zip-contents-collector-extension": "1.0.0-alpha.10",
    "@asciidoctor/tabs": "1.0.0-beta.6",
    "@springio/asciidoctor-extensions": "1.0.0-alpha.18"
  },
  "config": {
    "ui-bundle-url": "https://github.com/spring-io/antora-ui-spring/releases/download/v0.4.26/ui-bundle.zip"
  }
}


================================================
FILE: build-plugin/spring-boot-antlib/build.gradle
================================================
/*
 * Copyright 2012-present the original author or authors.
 *
 * Licensed under the Apache License, Version 2.0 (the License);
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      https://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

plugins {
	id "java-library"
	id "org.springframework.boot.deployed"
}

description = "Spring Boot Antlib"

ext {
	antVersion = "1.10.7"
}

configurations {
	antUnit
	antIvy
}

dependencies {
	antUnit "org.apache.ant:ant-antunit:1.3"

	antIvy "org.apache.ivy:ivy:2.5.0"

	compileOnly(project(":loader:spring-boot-loader"))
	compileOnly("org.apache.ant:ant:${antVersion}")

	implementation(project(":loader:spring-boot-loader-tools"))
	implementation("org.springframework:spring-core")
}

tasks.register("syncIntegrationTestSources", Sync) {
	destinationDir = file(layout.buildDirectory.dir("it"))
	from file("src/it")
	filter(springRepositoryTransformers.ant())
}

processResources {
	def version = project.version
	eachFile {
		filter { it.replace('${spring-boot.version}', version) }
	}
	inputs.property "version", version
}

tasks.register("integrationTest") {
	dependsOn syncIntegrationTestSources, jar
	def resultsDir = file(layout.buildDirectory.dir("test-results/integrationTest"))
	inputs.dir(file("src/it")).withPathSensitivity(PathSensitivity.RELATIVE).withPropertyName("source")
	inputs.files(sourceSets.main.runtimeClasspath).withNormalizer(ClasspathNormalizer).withPropertyName("classpath")
	outputs.dirs resultsDir
	doLast {
		ant.with {
			taskdef(resource: "org/apache/ant/antunit/antlib.xml",
					classpath: configurations.antUnit.asPath)
			taskdef(resource: "org/apache/ivy/ant/antlib.xml",
					classpath: configurations.antIvy.asPath)
			taskdef(resource: "org/springframework/boot/ant/antlib.xml",
					classpath: sourceSets.main.runtimeClasspath.asPath,
					uri: "antlib:org.springframework.boot.ant")
			ant.property(name: "ivy.class.path", value: configurations.antIvy.asPath)
			ant.property(name: "antunit.class.path", value: configurations.antUnit.asPath)
			antunit {
				propertyset {
					ant.propertyref(name: "build.compiler")
					ant.propertyref(name: "antunit.class.path")
					ant.propertyref(name: "ivy.class.path")
				}
				plainlistener()
				xmllistener(toDir: resultsDir)
				fileset(dir: layout.buildDirectory.dir("it").get().asFile.toString(), includes: "**/build.xml")
			}
		}
	}
}

check {
	dependsOn integrationTest
}


================================================
FILE: build-plugin/spring-boot-antlib/src/it/sample/build.xml
================================================
<?xml version="1.0"?>
<project name="spring-boot-antlib-test" default="antunit" xmlns:au="antlib:org.apache.ant.antunit" xmlns:spring-boot="antlib:org.springframework.boot.ant" xmlns:ivy="antlib:org.apache.ivy.ant">

	<property name="src.dir" location="src/main/java" />
	<property name="resource.dir" location="src/main/resources" />
	<property name="target.dir" location="target" />
	<property name="classes.dir" location="${target.dir}/classes" />

	<taskdef resource="org/apache/ivy/ant/antlib.xml"
			uri="antlib:org.apache.ivy.ant" classpath="${ivy.class.path}"/>
	<taskdef resource="org/apache/ant/antunit/antlib.xml"
			uri="antlib:org.apache.ant.antunit" classpath="${antunit.class.path}"/>

	<target name="setUp">
		<ivy:cachepath inline="true" pathid="compile.classpath" organisation="joda-time" module="joda-time" type="jar" revision="2.8.1" />
		<mkdir dir="${classes.dir}" />
		<javac srcdir="${src.dir}" destdir="${classes.dir}" classpathref="compile.classpath" />
		<au:logcapturer/>
	</target>

	<target name="tearDown">
		<delete dir="${classes.dir}" />
	</target>

	<target name="test-findmainclass-set-property" depends="setUp">
		<spring-boot:findmainclass classesroot="${classes.dir}" property="main-class" />
		<au:assertEquals expected="org.test.SampleApplication" actual="${main-class}" />
	</target>

	<target name="test-findmainclass-log-message" depends="setUp">
		<spring-boot:findmainclass classesroot="${classes.dir}" />
		<au:assertLogContains text="org.test.SampleApplication" />
	</target>

	<target name="test-findmainclass-override" depends="setUp">
		<spring-boot:findmainclass mainclass="OVERRIDDEN" property="main-class" />
		<au:assertEquals expected="OVERRIDDEN" actual="${main-class}" />
	</target>

	<macrodef name="check-exejar">
		<attribute name="jar" />
		<sequential>
			<echo>Checking @{jar}</echo>
			<au:assertFileExists file="@{jar}" />

			<javaresource id="foo" name="foo">
				<classpath>
					<pathelement location="@{jar}" />
				</classpath>
			</javaresource>
			<au:assertRefResourceExists refid="foo" />
			<au:assertRefResourceContains refid="foo" value="FOO" />

			<java jar="@{jar}" fork="true" />
			<au:assertLogContains text="LocalDate" />
		</sequential>
	</macrodef>

	<target name="test-exejar-explicit-start-class" depends="setUp">
		<local name="jar" />
		<property name="jar" location="${target.dir}/explicit.jar" />
		<spring-boot:exejar destfile="${jar}" classes="${classes.dir}" start-class="org.test.SampleApplication">
			<resources>
				<fileset dir="${resource.dir}" />
			</resources>
			<lib>
				<path refid="compile.classpath" />
			</lib>
		</spring-boot:exejar>
		<check-exejar jar="${jar}" />
	</target>

	<target name="test-exejar-find-start-class" depends="setUp">
		<local name="jar" />
		<property name="jar" location="${target.dir}/found.jar" />
		<spring-boot:exejar destfile="${jar}" classes="${classes.dir}">
			<resources>
				<fileset dir="${resource.dir}" />
			</resources>
			<lib>
				<path refid="compile.classpath" />
			</lib>
		</spring-boot:exejar>
		<check-exejar jar="${jar}" />
	</target>

	<target name="antunit">
		<au:antunit>
			<au:plainlistener />
			<file file="${ant.file}" />
		</au:antunit>
	</target>

	<target name="clean">
		<delete dir="${target.dir}" />
	</target>

</project>


================================================
FILE: build-plugin/spring-boot-antlib/src/it/sample/ivysettings.xml
================================================
<ivysettings>
	<settings defaultResolver="chain" />
	<resolvers>
		<chain name="chain">
			<filesystem name="local" local="true" m2compatible="true">
				<artifact pattern="${user.home}/.m2/[organisation]/[module]/[revision]/[module]-[revision].[ext]" />
				<ivy pattern="${user.home}/.m2/[organisation]/[module]/[revision]/[module]-[revision].pom" />
			</filesystem>
			<ibiblio name="ibiblio" m2compatible="true" />
			<!-- {spring.mavenRepositories} -->
		</chain>
	</resolvers>
	<!-- {spring.mavenCredentials} -->
</ivysettings>


================================================
FILE: build-plugin/spring-boot-antlib/src/it/sample/src/main/java/org/test/SampleApplication.java
================================================
/*
 * Copyright 2012-present the original author or authors.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      https://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.test;

import org.joda.time.LocalDate;

public class SampleApplication {

	public static void main(String[] args) {
		System.out.println(LocalDate.class.getSimpleName());
	}

}



================================================
FILE: build-plugin/spring-boot-antlib/src/it/sample/src/main/resources/foo
================================================
FOO


================================================
FILE: build-plugin/spring-boot-antlib/src/main/java/org/springframework/boot/ant/FindMainClass.java
================================================
/*
 * Copyright 2012-present the original author or authors.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      https://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.springframework.boot.ant;

import java.io.File;
import java.io.IOException;
import java.util.jar.JarFile;

import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.Project;
import org.apache.tools.ant.Task;
import org.jspecify.annotations.Nullable;

import org.springframework.boot.loader.tools.MainClassFinder;
import org.springframework.util.StringUtils;

/**
 * Ant task to find a main class.
 *
 * @author Matt Benson
 * @since 1.3.0
 */
public class FindMainClass extends Task {

	private static final String SPRING_BOOT_APPLICATION_CLASS_NAME = "org.springframework.boot.autoconfigure.SpringBootApplication";

	private @Nullable String mainClass;

	private @Nullable File classesRoot;

	private @Nullable String property;

	public FindMainClass(Project project) {
		setProject(project);
	}

	@Override
	public void execute() throws BuildException {
		String mainClass = this.mainClass;
		if (!StringUtils.hasText(mainClass)) {
			mainClass = findMainClass();
			if (!StringUtils.hasText(mainClass)) {
				throw new BuildException("Could not determine main class given @classesRoot " + this.classesRoot);
			}
		}
		handle(mainClass);
	}

	private @Nullable String findMainClass() {
		if (this.classesRoot == null) {
			throw new BuildException("one of @mainClass or @classesRoot must be specified");
		}
		if (!this.classesRoot.exists()) {
			throw new BuildException("@classesRoot " + this.classesRoot + " does not exist");
		}
		try {
			if (this.classesRoot.isDirectory()) {
				return MainClassFinder.findSingleMainClass(this.classesRoot, SPRING_BOOT_APPLICATION_CLASS_NAME);
			}
			return MainClassFinder.findSingleMainClass(new JarFile(this.classesRoot), "/",
					SPRING_BOOT_APPLICATION_CLASS_NAME);
		}
		catch (IOException ex) {
			throw new BuildException(ex);
		}
	}

	private void handle(String mainClass) {
		if (StringUtils.hasText(this.property)) {
			getProject().setProperty(this.property, mainClass);
		}
		else {
			log("Found main class " + mainClass);
		}
	}

	/**
	 * Set the main class, which will cause the search to be bypassed.
	 * @param mainClass the main class name
	 */
	public void setMainClass(String mainClass) {
		this.mainClass = mainClass;
	}

	/**
	 * Set the root location of classes to be searched.
	 * @param classesRoot the root location
	 */
	public void setClassesRoot(File classesRoot) {
		this.classesRoot = classesRoot;
	}

	/**
	 * Set the ANT property to set (if left unset, result will be printed to the log).
	 * @param property the ANT property to set
	 */
	public void setProperty(String property) {
		this.property = property;
	}

}


================================================
FILE: build-plugin/spring-boot-antlib/src/main/java/org/springframework/boot/ant/ShareAntlibLoader.java
================================================
/*
 * Copyright 2012-present the original author or authors.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      https://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.springframework.boot.ant;

import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.Project;
import org.apache.tools.ant.Task;
import org.jspecify.annotations.Nullable;

import org.springframework.util.StringUtils;

/**
 * Quiet task that establishes a reference to its loader.
 *
 * @author Matt Benson
 * @since 1.3.0
 */
public class ShareAntlibLoader extends Task {

	private @Nullable String refid;

	public ShareAntlibLoader(Project project) {
		setProject(project);
	}

	@Override
	public void execute() throws BuildException {
		if (!StringUtils.hasText(this.refid)) {
			throw new BuildException("@refid has no text");
		}
		getProject().addReference(this.refid, getClass().getClassLoader());
	}

	public void setRefid(@Nullable String refid) {
		this.refid = refid;
	}

}


================================================
FILE: build-plugin/spring-boot-antlib/src/main/java/org/springframework/boot/ant/package-info.java
================================================
/*
 * Copyright 2012-present the original author or authors.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      https://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

/**
 * Support for building Spring Boot applications using Ant.
 */
@NullMarked
package org.springframework.boot.ant;

import org.jspecify.annotations.NullMarked;


================================================
FILE: build-plugin/spring-boot-antlib/src/main/resources/org/springframework/boot/ant/antlib.xml
================================================
<?xml version="1.0"?>
<antlib>

	<taskdef name="findmainclass" classname="org.springframework.boot.ant.FindMainClass" />

	<!-- unadvertised taskdef to help pull antlib resources from within the antlib.xml file -->
	<taskdef name="spring-boot-antlib-share-antlib-loader" classname="org.springframework.boot.ant.ShareAntlibLoader" />

	<macrodef name="exejar" description="Create a spring-boot executable jar">
		<attribute name="destfile" />
		<attribute name="classes" />
		<attribute name="start-class" default="" />

		<element name="resources" optional="true"
			description="includes resource collections specifying additional Java resources" />

		<element name="lib" optional="true"
			description="includes resource collections containing (jar) dependencies" />

		<sequential>
			<local name="start-class" />

			<findmainclass
				xmlns="antlib:org.springframework.boot.ant"
				property="start-class"
				mainclass="@{start-class}"
				classesroot="@{classes}" />

			<echo>Using start class ${start-class}</echo>

			<spring-boot-antlib-share-antlib-loader
				xmlns="antlib:org.springframework.boot.ant"
				refid="spring.boot.antlib.loader" />

			<local name="spring-boot.version" />

			<local name="destdir" />
			<dirname file="@{destfile}" property="destdir" />

			<echo>Using destination directory ${destdir}</echo>
			<mkdir dir="${destdir}/dependency" />

			<echo>Extracting spring-boot-loader to ${destdir}/dependency</echo>
			<copy todir="${destdir}/dependency">
				<javaresource name="META-INF/loader/spring-boot-loader.jar"
					loaderref="spring.boot.antlib.loader" />
				<flattenmapper />
			</copy>

			<echo>Embedding spring-boot-loader v${spring-boot.version}...</echo>
			<jar destfile="@{destfile}" compress="false">
				<mappedresources>
					<fileset dir="@{classes}"/>
					<globmapper from="*" to="BOOT-INF/classes/*" />
				</mappedresources>
				<resources />
				<mappedresources>
					<lib />
					<globmapper from="*" to="BOOT-INF/lib/*" />
				</mappedresources>
				<zipfileset src="${destdir}/dependency/spring-boot-loader.jar" />
				<manifest>
					<attribute name="Main-Class"
						value="org.springframework.boot.loader.launch.JarLauncher" />
					<attribute name="Start-Class" value="${start-class}" />
					<attribute name="Spring-Boot-Classes" value="BOOT-INF/classes/" />
					<attribute name="Spring-Boot-Lib" value="BOOT-INF/lib/" />
				</manifest>
			</jar>
		</sequential>
	</macrodef>
</antlib>


================================================
FILE: build-plugin/spring-boot-gradle-plugin/.gitignore
================================================
/bin/
/build/
/out/


================================================
FILE: build-plugin/spring-boot-gradle-plugin/build.gradle
================================================
/*
 * Copyright 2012-present the original author or authors.
 *
 * Licensed under the Apache License, Version 2.0 (the License);
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      https://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

import org.gradle.plugins.ide.eclipse.model.Classpath
import org.gradle.plugins.ide.eclipse.model.Library

plugins {
	id "java-gradle-plugin"
	id "maven-publish"
	id "org.springframework.boot.antora-contributor"
	id "org.springframework.boot.docker-test"
	id "org.springframework.boot.maven-repository"
	id "org.springframework.boot.optional-dependencies"
}

description = "Spring Boot Gradle Plugins"

configurations {
	"testCompileClasspath" {
		// Downgrade SLF4J is required for tests to run in Eclipse
		resolutionStrategy.force("org.slf4j:slf4j-api:1.7.36")
	}
}

dependencies {
	dockerTestImplementation(project(":test-support:spring-boot-gradle-test-support"))
	dockerTestImplementation(project(":test-support:spring-boot-docker-test-support"))
	dockerTestImplementation(gradleTestKit())
	dockerTestImplementation("org.assertj:assertj-core")
	dockerTestImplementation("org.junit.jupiter:junit-jupiter")
	dockerTestImplementation("org.testcontainers:testcontainers-junit-jupiter")

	implementation(project(":buildpack:spring-boot-buildpack-platform"))
	implementation(project(":loader:spring-boot-loader-tools"))
	implementation("io.spring.gradle:dependency-management-plugin")
	implementation("org.apache.commons:commons-compress")
	implementation("org.springframework:spring-core")

	optional("com.google.protobuf:protobuf-gradle-plugin")
	optional("org.graalvm.buildtools:native-gradle-plugin")
	optional("org.cyclonedx:cyclonedx-gradle-plugin") {
		exclude(group: "javax.annotation", module: "javax.annotation-api")
		exclude(group: "javax.inject", module: "javax.inject")
	}
	optional("org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion")

	testImplementation(project(":test-support:spring-boot-gradle-test-support"))
	testImplementation(project(":test-support:spring-boot-test-support"))
	testImplementation("com.tngtech.archunit:archunit-junit5:1.4.0")
	testImplementation("net.java.dev.jna:jna-platform")
	testImplementation("org.apache.commons:commons-compress")
	testImplementation("org.apache.httpcomponents.client5:httpclient5")
	testImplementation("org.graalvm.buildtools:native-gradle-plugin")
	testImplementation("org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion")
	testImplementation("org.jetbrains.kotlin:kotlin-compiler-runner:$kotlinVersion")
	testImplementation("org.jetbrains.kotlin:kotlin-daemon-client:$kotlinVersion")
	testImplementation("org.tomlj:tomlj:1.0.0")
	testImplementation("tools.jackson.core:jackson-databind")
}

repositories {
	gradlePluginPortal() {
		content {
			includeGroup("org.cyclonedx")
		}
	}
}

gradlePlugin {
	plugins {
		springBootPlugin {
			id = "org.springframework.boot"
			displayName = "Spring Boot Gradle Plugin"
			description = "Spring Boot Gradle Plugin"
			implementationClass = "org.springframework.boot.gradle.plugin.SpringBootPlugin"
		}
		springBootAotPlugin {
			id = "org.springframework.boot.aot"
			displayName = "Spring Boot AOT Gradle Plugin"
			description = "Spring Boot AOT Gradle Plugin"
			implementationClass = "org.springframework.boot.gradle.plugin.SpringBootAotPlugin"
		}
	}
}

tasks.register("preparePluginValidationClasses", Copy) {
	destinationDir = layout.buildDirectory.dir("classes/java/pluginValidation").get().asFile
	from(sourceSets.main.output.classesDirs) {
		exclude "**/CreateBootStartScripts.class"
	}
}

validatePlugins {
	classes.setFrom preparePluginValidationClasses
	enableStricterValidation = true
}

tasks.named('test') {
	inputs.dir('src/docs/antora/modules/gradle-plugin/examples').withPathSensitivity(PathSensitivity.RELATIVE).withPropertyName('buildScripts')
}

javadoc {
	options {
		author = true
		docTitle = "Spring Boot Gradle Plugin ${project.version} API"
		encoding = "UTF-8"
		memberLevel = "protected"
		outputLevel = "quiet"
		splitIndex = true
		use = true
		windowTitle = "Spring Boot Gradle Plugin ${project.version} API"
		links "https://docs.gradle.org/$gradle.gradleVersion/javadoc"
		links "https://docs.oracle.com/en/java/javase/17/docs/api"
	}
}

antoraContributions {
	'gradle-plugin' {
		catalogContent {
			from(javadoc) {
				into("api/java")
			}
		}
		localAggregateContent {
			from(tasks.named("generateAntoraYml")) {
				into "modules"
			}
		}
		source()
	}
}

tasks.named("generateAntoraPlaybook") {
	antoraExtensions.xref.stubs = ["appendix:.*", "api:.*", "reference:.*"]
	asciidocExtensions.excludeJavadocExtension = true
}

plugins.withType(EclipsePlugin) {
	eclipse {
		classpath.file { merger ->
			merger.whenMerged { content ->
				if (content instanceof Classpath) {
					content.entries.each { entry ->
						if (entry instanceof Library && (entry.path.contains("gradle-api-") || entry.path.contains("groovy-"))) {
							entry.entryAttributes.remove("test")
						}
					}
				}
			}
		}
	}
}

tasks.named("compileTestJava") {
	options.nullability.checking = "tests"
}

tasks.named("compileDockerTestJava") {
	options.nullability.checking = "tests"
}


================================================
FILE: build-plugin/spring-boot-gradle-plugin/src/dockerTest/java/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests.java
================================================
/*
 * Copyright 2012-present the original author or authors.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      https://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.springframework.boot.gradle.tasks.bundling;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.attribute.FileAttribute;
import java.nio.file.attribute.PosixFilePermission;
import java.nio.file.attribute.PosixFilePermissions;
import java.time.OffsetDateTime;
import java.util.Random;
import java.util.Set;

import org.apache.commons.compress.archivers.tar.TarArchiveEntry;
import org.apache.commons.compress.archivers.tar.TarArchiveOutputStream;
import org.apache.commons.compress.compressors.gzip.GzipCompressorOutputStream;
import org.gradle.testkit.runner.BuildResult;
import org.gradle.testkit.runner.BuildTask;
import org.gradle.testkit.runner.TaskOutcome;
import org.junit.jupiter.api.TestTemplate;
import org.junit.jupiter.api.condition.EnabledOnOs;
import org.junit.jupiter.api.condition.OS;

import org.springframework.boot.buildpack.platform.docker.DockerApi;
import org.springframework.boot.buildpack.platform.docker.DockerApi.ImageApi;
import org.springframework.boot.buildpack.platform.docker.DockerApi.VolumeApi;
import org.springframework.boot.buildpack.platform.docker.transport.DockerEngineException;
import org.springframework.boot.buildpack.platform.docker.type.Image;
import org.springframework.boot.buildpack.platform.docker.type.ImageReference;
import org.springframework.boot.buildpack.platform.docker.type.VolumeName;
import org.springframework.boot.buildpack.platform.io.FilePermissions;
import org.springframework.boot.gradle.junit.GradleCompatibility;
import org.springframework.boot.testsupport.container.DisabledIfDockerUnavailable;
import org.springframework.boot.testsupport.gradle.testkit.GradleBuild;
import org.springframework.boot.testsupport.junit.DisabledOnOs;
import org.springframework.util.FileSystemUtils;
import org.springframework.util.StreamUtils;

import static org.assertj.core.api.Assertions.assertThat;

/**
 * Integration tests for {@link BootBuildImage}.
 *
 * @author Andy Wilkinson
 * @author Scott Frederick
 * @author Rafael Ceccone
 */
@GradleCompatibility(configurationCache = true)
@DisabledIfDockerUnavailable
class BootBuildImageIntegrationTests {

	@SuppressWarnings("NullAway.Init")
	GradleBuild gradleBuild;

	@TestTemplate
	void buildsImageWithDefaultBuilder() throws IOException {
		writeMainClass();
		writeLongNameResource();
		BuildResult result = this.gradleBuild.build("bootBuildImage");
		String projectName = this.gradleBuild.getProjectDir().getName();
		BuildTask task = result.task(":bootBuildImage");
		assertThat(task).isNotNull();
		assertThat(task.getOutcome()).isEqualTo(TaskOutcome.SUCCESS);
		assertThat(result.getOutput()).contains("docker.io/library/" + projectName);
		assertThat(result.getOutput()).contains("Running detector");
		assertThat(result.getOutput()).contains("Running builder");
		assertThat(result.getOutput()).contains("---> Test Info buildpack building");
		assertThat(result.getOutput()).contains("Network status: HTTP/2 200");
		assertThat(result.getOutput()).contains("---> Test Info buildpack done");
		removeImages(projectName);
	}

	@TestTemplate
	void buildsImageWithTrustBuilder() throws IOException {
		writeMainClass();
		writeLongNameResource();
		BuildResult result = this.gradleBuild.build("bootBuildImage");
		String projectName = this.gradleBuild.getProjectDir().getName();
		BuildTask task = result.task(":bootBuildImage");
		assertThat(task).isNotNull();
		assertThat(task.getOutcome()).isEqualTo(TaskOutcome.SUCCESS);
		assertThat(result.getOutput()).contains("docker.io/library/" + projectName);
		assertThat(result.getOutput()).contains("Running creator");
		assertThat(result.getOutput()).contains("---> Test Info buildpack building");
		assertThat(result.getOutput()).contains("Network status: HTTP/2 200");
		assertThat(result.getOutput()).contains("---> Test Info buildpack done");
		removeImages(projectName);
	}

	@TestTemplate
	void buildsImageWithWarPackaging() throws IOException {
		writeMainClass();
		writeLongNameResource();
		BuildResult result = this.gradleBuild.build("bootBuildImage", "-PapplyWarPlugin");
		String projectName = this.gradleBuild.getProjectDir().getName();
		BuildTask task = result.task(":bootBuildImage");
		assertThat(task).isNotNull();
		assertThat(task.getOutcome()).isEqualTo(TaskOutcome.SUCCESS);
		assertThat(result.getOutput()).contains("docker.io/library/" + projectName);
		assertThat(result.getOutput()).contains("---> Test Info buildpack building");
		assertThat(result.getOutput()).contains("---> Test Info buildpack done");
		File buildLibs = new File(this.gradleBuild.getProjectDir(), "build/libs");
		assertThat(buildLibs.listFiles())
			.containsExactly(new File(buildLibs, this.gradleBuild.getProjectDir().getName() + ".war"));
		removeImages(projectName);
	}

	@TestTemplate
	void buildsImageWithWarPackagingAndJarConfiguration() throws IOException {
		writeMainClass();
		writeLongNameResource();
		BuildResult result = this.gradleBuild.build("bootBuildImage");
		String projectName = this.gradleBuild.getProjectDir().getName();
		BuildTask task = result.task(":bootBuildImage");
		assertThat(task).isNotNull();
		assertThat(task.getOutcome()).isEqualTo(TaskOutcome.SUCCESS);
		assertThat(result.getOutput()).contains("docker.io/library/" + projectName);
		assertThat(result.getOutput()).contains("---> Test Info buildpack building");
		assertThat(result.getOutput()).contains("---> Test Info buildpack done");
		File buildLibs = new File(this.gradleBuild.getProjectDir(), "build/libs");
		assertThat(buildLibs.listFiles())
			.containsExactly(new File(buildLibs, this.gradleBuild.getProjectDir().getName() + ".war"));
		removeImages(projectName);
	}

	@TestTemplate
	void buildsImageWithCustomName() throws IOException {
		writeMainClass();
		writeLongNameResource();
		BuildResult result = this.gradleBuild.build("bootBuildImage");
		BuildTask task = result.task(":bootBuildImage");
		assertThat(task).isNotNull();
		assertThat(task.getOutcome()).isEqualTo(TaskOutcome.SUCCESS);
		assertThat(result.getOutput()).contains("example/test-image-name");
		assertThat(result.getOutput()).contains("---> Test Info buildpack building");
		assertThat(result.getOutput()).contains("---> Test Info buildpack done");
		removeImages("example/test-image-name");
	}

	@TestTemplate
	void buildsImageWithCustomBuilderAndRunImage() throws IOException {
		writeMainClass();
		writeLongNameResource();
		BuildResult result = this.gradleBuild.build("bootBuildImage");
		BuildTask task = result.task(":bootBuildImage");
		assertThat(task).isNotNull();
		assertThat(task.getOutcome()).isEqualTo(TaskOutcome.SUCCESS);
		assertThat(result.getOutput()).contains("example/test-image-custom");
		assertThat(result.getOutput()).contains("---> Test Info buildpack building");
		assertThat(result.getOutput()).contains("---> Test Info buildpack done");
		removeImages("example/test-image-custom");
	}

	@TestTemplate
	void buildsImageWithCommandLineOptions() throws IOException {
		writeMainClass();
		writeLongNameResource();
		BuildResult result = this.gradleBuild.build("bootBuildImage", "--pullPolicy=IF_NOT_PRESENT",
				"--imageName=example/test-image-cmd", "--builder=ghcr.io/spring-io/spring-boot-cnb-test-builder:0.0.2",
				"--trustBuilder", "--runImage=paketobuildpacks/run-noble-tiny", "--createdDate=2020-07-01T12:34:56Z",
				"--applicationDirectory=/application");
		BuildTask task = result.task(":bootBuildImage");
		assertThat(task).isNotNull();
		assertThat(task.getOutcome()).isEqualTo(TaskOutcome.SUCCESS);
		assertThat(result.getOutput()).contains("example/test-image-cmd");
		assertThat(result.getOutput()).contains("Running creator");
		assertThat(result.getOutput()).contains("---> Test Info buildpack building");
		assertThat(result.getOutput()).contains("---> Test Info buildpack done");
		Image image = new DockerApi().image().inspect(ImageReference.of("example/test-image-cmd"));
		assertThat(image.getCreated()).isEqualTo("2020-07-01T12:34:56Z");
		removeImages("example/test-image-cmd");
	}

	@TestTemplate
	void buildsImageWithPullPolicy() throws IOException {
		writeMainClass();
		writeLongNameResource();
		String projectName = this.gradleBuild.getProjectDir().getName();
		BuildResult result = this.gradleBuild.build("bootBuildImage");
		BuildTask task = result.task(":bootBuildImage");
		assertThat(task).isNotNull();
		assertThat(task.getOutcome()).isEqualTo(TaskOutcome.SUCCESS);
		assertThat(result.getOutput()).contains("Pulled builder image").contains("Pulled run image");
		result = this.gradleBuild.build("bootBuildImage", "--pullPolicy=IF_NOT_PRESENT");
		task = result.task(":bootBuildImage");
		assertThat(task).isNotNull();
		assertThat(task.getOutcome()).isEqualTo(TaskOutcome.SUCCESS);
		assertThat(result.getOutput()).doesNotContain("Pulled builder image").doesNotContain("Pulled run image");
		removeImages(projectName);
	}

	@TestTemplate
	void buildsImageWithBuildpackFromBuilder() throws IOException {
		writeMainClass();
		writeLongNameResource();
		BuildResult result = this.gradleBuild.build("bootBuildImage");
		String projectName = this.gradleBuild.getProjectDir().getName();
		BuildTask task = result.task(":bootBuildImage");
		assertThat(task).isNotNull();
		assertThat(task.getOutcome()).isEqualTo(TaskOutcome.SUCCESS);
		assertThat(result.getOutput()).contains("docker.io/library/" + projectName);
		assertThat(result.getOutput()).contains("---> Test Info buildpack building")
			.contains("---> Test Info buildpack done");
		removeImages(projectName);
	}

	@TestTemplate
	@DisabledOnOs(OS.WINDOWS)
	void buildsImageWithBuildpackFromDirectory() throws IOException {
		writeMainClass();
		writeLongNameResource();
		writeBuildpackContent();
		BuildResult result = this.gradleBuild.build("bootBuildImage");
		String projectName = this.gradleBuild.getProjectDir().getName();
		BuildTask task = result.task(":bootBuildImage");
		assertThat(task).isNotNull();
		assertThat(task.getOutcome()).isEqualTo(TaskOutcome.SUCCESS);
		assertThat(result.getOutput()).contains("docker.io/library/" + projectName);
		assertThat(result.getOutput()).contains("---> Hello World buildpack");
		removeImages(projectName);
	}

	@TestTemplate
	@DisabledOnOs(OS.WINDOWS)
	void buildsImageWithBuildpackFromTarGzip() throws IOException {
		writeMainClass();
		writeLongNameResource();
		writeBuildpackContent();
		tarGzipBuildpackContent();
		BuildResult result = this.gradleBuild.build("bootBuildImage");
		String projectName = this.gradleBuild.getProjectDir().getName();
		BuildTask task = result.task(":bootBuildImage");
		assertThat(task).isNotNull();
		assertThat(task.getOutcome()).isEqualTo(TaskOutcome.SUCCESS);
		assertThat(result.getOutput()).contains("docker.io/library/" + projectName);
		assertThat(result.getOutput()).contains("---> Hello World buildpack");
		removeImages(projectName);
	}

	@TestTemplate
	void buildsImageWithBuildpacksFromImages() throws IOException {
		writeMainClass();
		writeLongNameResource();
		BuildResult result = this.gradleBuild.build("bootBuildImage");
		String projectName = this.gradleBuild.getProjectDir().getName();
		BuildTask task = result.task(":bootBuildImage");
		assertThat(task).isNotNull();
		assertThat(task.getOutcome()).isEqualTo(TaskOutcome.SUCCESS);
		assertThat(result.getOutput()).contains("docker.io/library/" + projectName);
		assertThat(result.getOutput()).contains("---> Test Info buildpack building")
			.contains("---> Test Info buildpack done");
		removeImages(projectName);
	}

	@TestTemplate
	void buildsImageWithBinding() throws IOException {
		writeMainClass();
		writeLongNameResource();
		writeCertificateBindingFiles();
		BuildResult result = this.gradleBuild.build("bootBuildImage");
		String projectName = this.gradleBuild.getProjectDir().getName();
		BuildTask task = result.task(":bootBuildImage");
		assertThat(task).isNotNull();
		assertThat(task.getOutcome()).isEqualTo(TaskOutcome.SUCCESS);
		assertThat(result.getOutput()).contains("docker.io/library/" + projectName);
		assertThat(result.getOutput()).contains("---> Test Info buildpack building");
		assertThat(result.getOutput()).contains("binding: certificates/type=ca-certificates");
		assertThat(result.getOutput()).contains("binding: certificates/test1.crt=---certificate one---");
		assertThat(result.getOutput()).contains("binding: certificates/test2.crt=---certificate two---");
		assertThat(result.getOutput()).contains("---> Test Info buildpack done");
		removeImages(projectName);
	}

	@TestTemplate
	void buildsImageWithTag() throws IOException {
		writeMainClass();
		writeLongNameResource();
		BuildResult result = this.gradleBuild.build("bootBuildImage");
		String projectName = this.gradleBuild.getProjectDir().getName();
		BuildTask task = result.task(":bootBuildImage");
		assertThat(task).isNotNull();
		assertThat(task.getOutcome()).isEqualTo(TaskOutcome.SUCCESS);
		assertThat(result.getOutput()).contains("docker.io/library/" + projectName);
		assertThat(result.getOutput()).contains("---> Test Info buildpack building");
		assertThat(result.getOutput()).contains("---> Test Info buildpack done");
		assertThat(result.getOutput()).contains("example.com/myapp:latest");
		removeImages(projectName, "example.com/myapp:latest");
	}

	@TestTemplate
	void buildsImageWithNetworkModeNone() throws IOException {
		writeMainClass();
		writeLongNameResource();
		BuildResult result = this.gradleBuild.build("bootBuildImage");
		String projectName = this.gradleBuild.getProjectDir().getName();
		BuildTask task = result.task(":bootBuildImage");
		assertThat(task).isNotNull();
		assertThat(task.getOutcome()).isEqualTo(TaskOutcome.SUCCESS);
		assertThat(result.getOutput()).contains("docker.io/library/" + projectName);
		assertThat(result.getOutput()).contains("---> Test Info buildpack building");
		assertThat(result.getOutput()).contains("Network status: curl failed");
		assertThat(result.getOutput()).contains("---> Test Info buildpack done");
		removeImages(projectName);
	}

	@TestTemplate
	void buildsImageWithVolumeCaches() throws IOException {
		writeMainClass();
		writeLongNameResource();
		BuildResult result = this.gradleBuild.build("bootBuildImage");
		String projectName = this.gradleBuild.getProjectDir().getName();
		BuildTask task = result.task(":bootBuildImage");
		assertThat(task).isNotNull();
		assertThat(task.getOutcome()).isEqualTo(TaskOutcome.SUCCESS);
		assertThat(result.getOutput()).contains("docker.io/library/" + projectName);
		assertThat(result.getOutput()).contains("---> Test Info buildpack building");
		assertThat(result.getOutput()).contains("---> Test Info buildpack done");
		removeImages(projectName);
		deleteVolumes("cache-" + projectName + ".build", "cache-" + projectName + ".launch");
	}

	@TestTemplate
	@EnabledOnOs(value = OS.LINUX, disabledReason = "Works with Docker Engine on Linux but is not reliable with "
			+ "Docker Desktop on other OSs")
	void buildsImageWithBindCaches() throws IOException {
		writeMainClass();
		writeLongNameResource();
		BuildResult result = this.gradleBuild.build("bootBuildImage");
		String projectName = this.gradleBuild.getProjectDir().getName();
		BuildTask task = result.task(":bootBuildImage");
		assertThat(task).isNotNull();
		assertThat(task.getOutcome()).isEqualTo(TaskOutcome.SUCCESS);
		assertThat(result.getOutput()).contains("docker.io/library/" + projectName);
		assertThat(result.getOutput()).contains("---> Test Info buildpack building");
		assertThat(result.getOutput()).contains("---> Test Info buildpack done");
		removeImages(projectName);
		String tempDir = System.getProperty("java.io.tmpdir");
		Path buildCachePath = Paths.get(tempDir, "junit-image-cache-" + projectName + "-build");
		Path launchCachePath = Paths.get(tempDir, "junit-image-cache-" + projectName + "-launch");
		assertThat(buildCachePath).exists().isDirectory();
		assertThat(launchCachePath).exists().isDirectory();
		cleanupCache(buildCachePath);
		cleanupCache(launchCachePath);
	}

	private static void cleanupCache(Path cachePath) {
		try {
			FileSystemUtils.deleteRecursively(cachePath);
		}
		catch (Exception ex) {
			// ignore
		}
	}

	@TestTemplate
	void buildsImageWithCreatedDate() throws IOException {
		writeMainClass();
		writeLongNameResource();
		BuildResult result = this.gradleBuild.build("bootBuildImage");
		String projectName = this.gradleBuild.getProjectDir().getName();
		BuildTask task = result.task(":bootBuildImage");
		assertThat(task).isNotNull();
		assertThat(task.getOutcome()).isEqualTo(TaskOutcome.SUCCESS);
		assertThat(result.getOutput()).contains("docker.io/library/" + projectName);
		assertThat(result.getOutput()).contains("---> Test Info buildpack building");
		assertThat(result.getOutput()).contains("---> Test Info buildpack done");
		Image image = new DockerApi().image().inspect(ImageReference.of("docker.io/library/" + projectName));
		assertThat(image.getCreated()).isEqualTo("2020-07-01T12:34:56Z");
		removeImages(projectName);
	}

	@TestTemplate
	void buildsImageWithCurrentCreatedDate() throws IOException {
		writeMainClass();
		writeLongNameResource();
		BuildResult result = this.gradleBuild.build("bootBuildImage");
		String projectName = this.gradleBuild.getProjectDir().getName();
		BuildTask task = result.task(":bootBuildImage");
		assertThat(task).isNotNull();
		assertThat(task.getOutcome()).isEqualTo(TaskOutcome.SUCCESS);
		assertThat(result.getOutput()).contains("docker.io/library/" + projectName);
		assertThat(result.getOutput()).contains("---> Test Info buildpack building");
		assertThat(result.getOutput()).contains("---> Test Info buildpack done");
		Image image = new DockerApi().image().inspect(ImageReference.of("docker.io/library/" + projectName));
		OffsetDateTime createdDateTime = OffsetDateTime.parse(image.getCreated());
		OffsetDateTime current = OffsetDateTime.now().withOffsetSameInstant(createdDateTime.getOffset());
		assertThat(createdDateTime.getYear()).isEqualTo(current.getYear());
		assertThat(createdDateTime.getMonth()).isEqualTo(current.getMonth());
		assertThat(createdDateTime.getDayOfMonth()).isEqualTo(current.getDayOfMonth());
		removeImages(projectName);
	}

	@TestTemplate
	void buildsImageWithApplicationDirectory() throws IOException {
		writeMainClass();
		writeLongNameResource();
		BuildResult result = this.gradleBuild.build("bootBuildImage");
		String projectName = this.gradleBuild.getProjectDir().getName();
		BuildTask task = result.task(":bootBuildImage");
		assertThat(task).isNotNull();
		assertThat(task.getOutcome()).isEqualTo(TaskOutcome.SUCCESS);
		assertThat(result.getOutput()).contains("docker.io/library/" + projectName);
		assertThat(result.getOutput()).contains("---> Test Info buildpack building");
		assertThat(result.getOutput()).contains("---> Test Info buildpack done");
		removeImages(projectName);
	}

	@TestTemplate
	void buildsImageWithEmptySecurityOptions() throws IOException {
		writeMainClass();
		writeLongNameResource();
		BuildResult result = this.gradleBuild.build("bootBuildImage");
		String projectName = this.gradleBuild.getProjectDir().getName();
		BuildTask task = result.task(":bootBuildImage");
		assertThat(task).isNotNull();
		assertThat(task.getOutcome()).isEqualTo(TaskOutcome.SUCCESS);
		assertThat(result.getOutput()).contains("docker.io/library/" + projectName);
		assertThat(result.getOutput()).contains("---> Test Info buildpack building");
		assertThat(result.getOutput()).contains("---> Test Info buildpack done");
		removeImages(projectName);
	}

	@TestTemplate
	@EnabledOnOs(value = { OS.LINUX, OS.MAC }, architectures = "aarch64",
			disabledReason = "Lifecycle will only run on ARM architecture")
	void buildsImageOnLinuxArmWithImagePlatformLinuxArm() throws IOException {
		writeMainClass();
		writeLongNameResource();
		String builderImage = "ghcr.io/spring-io/spring-boot-cnb-test-builder:0.0.2";
		String runImage = "docker.io/paketobuildpacks/run-noble-tiny:latest";
		String buildpackImage = "ghcr.io/spring-io/spring-boot-test-info:0.0.2";
		removeImages(builderImage, runImage, buildpackImage);
		BuildResult result = this.gradleBuild.build("bootBuildImage");
		String projectName = this.gradleBuild.getProjectDir().getName();
		BuildTask task = result.task(":bootBuildImage");
		assertThat(task).isNotNull();
		assertThat(task.getOutcome()).isEqualTo(TaskOutcome.SUCCESS);
		assertThat(result.getOutput()).contains("docker.io/library/" + projectName);
		assertThat(result.getOutput())
			.contains("Pulling builder image '" + builderImage + "' for platform 'linux/arm64'");
		assertThat(result.getOutput())
			.contains("Pulling builder image '" + builderImage + "' for platform 'linux/arm64'");
		assertThat(result.getOutput()).contains("Pulling run image '" + runImage + "' for platform 'linux/arm64'");
		assertThat(result.getOutput())
			.contains("Pulling buildpack image '" + buildpackImage + "' for platform 'linux/arm64'");
		assertThat(result.getOutput()).contains("Running detector");
		assertThat(result.getOutput()).contains("Running builder");
		assertThat(result.getOutput()).contains("---> Test Info buildpack building");
		assertThat(result.getOutput()).contains("---> Test Info buildpack done");
		removeImages(projectName, builderImage, runImage, buildpackImage);
	}

	@TestTemplate
	void buildsImageWithMultipleCommandLineEnvironments() throws IOException {
		writeMainClass();
		writeLongNameResource();
		BuildResult result = this.gradleBuild.build("bootBuildImage", "--environment", "BP_LIVE_RELOAD_ENABLED=true",
				"--environment", "MY_CUSTOM_VAR=hello_world");
		BuildTask task = result.task(":bootBuildImage");
		assertThat(task).isNotNull();
		assertThat(task.getOutcome()).isEqualTo(TaskOutcome.SUCCESS);
		assertThat(result.getOutput()).contains("BP_LIVE_RELOAD_ENABLED=true");
		assertThat(result.getOutput()).contains("MY_CUSTOM_VAR=hello_world");
		removeImages(this.gradleBuild.getProjectDir().getName());
	}

	@TestTemplate
	@EnabledOnOs(value = { OS.LINUX, OS.MAC }, architectures = "amd64",
			disabledReason = "The expected failure condition will not fail on ARM architectures")
	void failsWhenBuildingOnLinuxAmdWithImagePlatformLinuxArm() throws IOException {
		writeMainClass();
		writeLongNameResource();
		String builderImage = "ghcr.io/spring-io/spring-boot-cnb-test-builder:0.0.2";
		String runImage = "docker.io/paketobuildpacks/run-noble-tiny:latest";
		String buildpackImage = "ghcr.io/spring-io/spring-boot-test-info:0.0.2";
		removeImages(builderImage, runImage, buildpackImage);
		BuildResult result = this.gradleBuild.buildAndFail("bootBuildImage");
		String projectName = this.gradleBuild.getProjectDir().getName();
		BuildTask task = result.task(":bootBuildImage");
		assertThat(task).isNotNull();
		assertThat(task.getOutcome()).isEqualTo(TaskOutcome.FAILED);
		assertThat(result.getOutput()).contains("docker.io/library/" + projectName);
		assertThat(result.getOutput())
			.contains("Pulling builder image '" + builderImage + "' for platform 'linux/arm64'");
		assertThat(result.getOutput()).contains("Pulling run image '" + runImage + "' for platform 'linux/arm64'");
		assertThat(result.getOutput())
			.contains("Pulling buildpack image '" + buildpackImage + "' for platform 'linux/arm64'");
		assertThat(result.getOutput()).contains("exec format error");
		removeImages(builderImage, runImage, buildpackImage);
	}

	@TestTemplate
	void failsWithInvalidCreatedDate() throws IOException {
		writeMainClass();
		writeLongNameResource();
		BuildResult result = this.gradleBuild.buildAndFail("bootBuildImage");
		BuildTask task = result.task(":bootBuildImage");
		assertThat(task).isNotNull();
		assertThat(task.getOutcome()).isEqualTo(TaskOutcome.FAILED);
		assertThat(result.getOutput()).contains("Error parsing 'invalid date' as an image created date");
	}

	@TestTemplate
	void failsWithBuilderError() throws IOException {
		writeMainClass();
		writeLongNameResource();
		BuildResult result = this.gradleBuild.buildAndFail("bootBuildImage");
		BuildTask task = result.task(":bootBuildImage");
		assertThat(task).isNotNull();
		assertThat(task.getOutcome()).isEqualTo(TaskOutcome.FAILED);
		assertThat(result.getOutput()).contains("Forced builder failure");
		assertThat(result.getOutput()).containsPattern("Builder lifecycle '.*' failed with status code");
	}

	@TestTemplate
	void failsWithInvalidImageName() throws IOException {
		writeMainClass();
		writeLongNameResource();
		BuildResult result = this.gradleBuild.buildAndFail("bootBuildImage", "--imageName=example/Invalid-Image-Name");
		BuildTask task = result.task(":bootBuildImage");
		assertThat(task).isNotNull();
		assertThat(task.getOutcome()).isEqualTo(TaskOutcome.FAILED);
		assertThat(result.getOutput()).containsPattern("must be an image reference")
			.containsPattern("example/Invalid-Image-Name");
	}

	@TestTemplate
	void failsWithBuildpackNotInBuilder() throws IOException {
		writeMainClass();
		writeLongNameResource();
		BuildResult result = this.gradleBuild.buildAndFail("bootBuildImage");
		BuildTask task = result.task(":bootBuildImage");
		assertThat(task).isNotNull();
		assertThat(task.getOutcome()).isEqualTo(TaskOutcome.FAILED);
		assertThat(result.getOutput()).contains("'urn:cnb:builder:example/does-not-exist:0.0.1' not found in builder");
	}

	@TestTemplate
	void failsWithInvalidTag() throws IOException {
		writeMainClass();
		writeLongNameResource();
		BuildResult result = this.gradleBuild.buildAndFail("bootBuildImage");
		BuildTask task = result.task(":bootBuildImage");
		assertThat(task).isNotNull();
		assertThat(task.getOutcome()).isEqualTo(TaskOutcome.FAILED);
		assertThat(result.getOutput()).containsPattern("must be an image reference")
			.containsPattern("example/Invalid-Tag-Name");
	}

	@TestTemplate
	void failsWhenCachesAreConfiguredTwice() throws IOException {
		writeMainClass();
		writeLongNameResource();
		BuildResult result = this.gradleBuild.buildAndFail("bootBuildImage");
		assertThat(result.getOutput()).containsPattern("Each image building cache can be configured only once");
	}

	@TestTemplate
	void failsWithIncompatiblePlatform() throws IOException {
		writeMainClass();
		BuildResult result = this.gradleBuild.buildAndFail("bootBuildImage");
		assertThat(result.getOutput()).containsAnyOf(
				"Image platform mismatch detected. The configured platform 'linux/arm64' is not supported by the image 'ghcr.io/spring-io/spring-boot-cnb-test-builder:0.0.3-amd64'. Requested platform 'linux/arm64' but got 'linux/amd64'",
				"image with reference ghcr.io/spring-io/spring-boot-cnb-test-builder:0.0.3-amd64 was found but its platform (linux/amd64) does not match the specified platform (linux/arm64)");
	}

	private void writeMainClass() throws IOException {
		File examplePackage = new File(this.gradleBuild.getProjectDir(), "src/main/java/example");
		examplePackage.mkdirs();
		File main = new File(examplePackage, "Main.java");
		try (PrintWriter writer = new PrintWriter(new FileWriter(main))) {
			writer.println("package example;");
			writer.println();
			writer.println("import java.io.IOException;");
			writer.println();
			writer.println("public class Main {");
			writer.println();
			writer.println("    public static void main(String[] args) throws Exception {");
			writer.println("        System.out.println(\"Launched\");");
			writer.println("        synchronized(args) {");
			writer.println("            args.wait(); // Prevent exit");
			writer.println("        }");
			writer.println("    }");
			writer.println();
			writer.println("}");
		}
	}

	private void writeLongNameResource() throws IOException {
		StringBuilder name = new StringBuilder();
		new Random().ints('a', 'z' + 1).limit(128).forEach((i) -> name.append((char) i));
		Path path = this.gradleBuild.getProjectDir()
			.toPath()
			.resolve(Paths.get("src", "main", "resources", name.toString()));
		Files.createDirectories(path.getParent());
		Files.createFile(path);
	}

	private void writeBuildpackContent() throws IOException {
		FileAttribute<Set<PosixFilePermission>> dirAttribute = PosixFilePermissions
			.asFileAttribute(PosixFilePermissions.fromString("rwxr-xr-x"));
		FileAttribute<Set<PosixFilePermission>> execFileAttribute = PosixFilePermissions
			.asFileAttribute(PosixFilePermissions.fromString("rwxrwxrwx"));
		File buildpackDir = new File(this.gradleBuild.getProjectDir(), "buildpack/hello-world");
		Files.createDirectories(buildpackDir.toPath(), dirAttribute);
		File binDir = new File(buildpackDir, "bin");
		Files.createDirectories(binDir.toPath(), dirAttribute);
		File descriptor = new File(buildpackDir, "buildpack.toml");
		try (PrintWriter writer = new PrintWriter(new FileWriter(descriptor))) {
			writer.println("api = \"0.10\"");
			writer.println("[buildpack]");
			writer.println("id = \"example/hello-world\"");
			writer.println("version = \"0.0.1\"");
			writer.println("name = \"Hello World Buildpack\"");
			writer.println("homepage = \"https://github.com/buildpacks/samples/tree/main/buildpacks/hello-world\"");
			writer.println("[[stacks]]\n");
			writer.println("id = \"*\"");
		}
		File detect = Files.createFile(Paths.get(binDir.getAbsolutePath(), "detect"), execFileAttribute).toFile();
		try (PrintWriter writer = new PrintWriter(new FileWriter(detect))) {
			writer.println("#!/usr/bin/env bash");
			writer.println("set -eo pipefail");
			writer.println("exit 0");
		}
		File build = Files.createFile(Paths.get(binDir.getAbsolutePath(), "build"), execFileAttribute).toFile();
		try (PrintWriter writer = new PrintWriter(new FileWriter(build))) {
			writer.println("#!/usr/bin/env bash");
			writer.println("set -eo pipefail");
			writer.println("echo \"---> Hello World buildpack\"");
			writer.println("echo \"---> done\"");
			writer.println("exit 0");
		}
	}

	private void tarGzipBuildpackContent() throws IOException {
		Path tarGzipPath = Paths.get(this.gradleBuild.getProjectDir().getAbsolutePath(), "hello-world.tgz");
		try (TarArchiveOutputStream tar = new TarArchiveOutputStream(
				new GzipCompressorOutputStream(Files.newOutputStream(Files.createFile(tarGzipPath))))) {
			File buildpackDir = new File(this.gradleBuild.getProjectDir(), "buildpack/hello-world");
			writeDirectoryToTar(tar, buildpackDir, buildpackDir.getAbsolutePath());
		}
	}

	private void writeDirectoryToTar(TarArchiveOutputStream tar, File dir, String baseDirPath) throws IOException {
		for (File file : dir.listFiles()) {
			String name = file.getAbsolutePath().replace(baseDirPath, "");
			int mode = FilePermissions.umaskForPath(file.toPath());
			if (file.isDirectory()) {
				writeTarEntry(tar, name + "/", mode);
				writeDirectoryToTar(tar, file, baseDirPath);
			}
			else {
				writeTarEntry(tar, file, name, mode);
			}
		}
	}

	private void writeTarEntry(TarArchiveOutputStream tar, String name, int mode) throws IOException {
		TarArchiveEntry entry = new TarArchiveEntry(name);
		entry.setMode(mode);
		tar.putArchiveEntry(entry);
		tar.closeArchiveEntry();
	}

	private void writeTarEntry(TarArchiveOutputStream tar, File file, String name, int mode) throws IOException {
		TarArchiveEntry entry = new TarArchiveEntry(file, name);
		entry.setMode(mode);
		tar.putArchiveEntry(entry);
		StreamUtils.copy(Files.newInputStream(file.toPath()), tar);
		tar.closeArchiveEntry();
	}

	private void writeCertificateBindingFiles() throws IOException {
		File bindingDir = new File(this.gradleBuild.getProjectDir(), "bindings/ca-certificates");
		bindingDir.mkdirs();
		File type = new File(bindingDir, "type");
		try (PrintWriter writer = new PrintWriter(new FileWriter(type))) {
			writer.print("ca-certificates");
		}
		File cert1 = new File(bindingDir, "test1.crt");
		try (PrintWriter writer = new PrintWriter(new FileWriter(cert1))) {
			writer.println("---certificate one---");
		}
		File cert2 = new File(bindingDir, "test2.crt");
		try (PrintWriter writer = new PrintWriter(new FileWriter(cert2))) {
			writer.println("---certificate two---");
		}
	}

	private void removeImages(String... names) throws IOException {
		ImageApi imageApi = new DockerApi().image();
		for (String name : names) {
			try {
				imageApi.remove(ImageReference.of(name), false);
			}
			catch (DockerEngineException ex) {
				// ignore image remove failures
			}
		}
	}

	private void deleteVolumes(String... names) throws IOException {
		VolumeApi volumeApi = new DockerApi().volume();
		for (String name : names) {
			volumeApi.delete(VolumeName.of(name), false);
		}
	}

}


================================================
FILE: build-plugin/spring-boot-gradle-plugin/src/dockerTest/java/org/springframework/boot/gradle/tasks/bundling/BootBuildImageRegistryIntegrationTests.java
================================================
/*
 * Copyright 2012-present the original author or authors.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      https://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.springframework.boot.gradle.tasks.bundling;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;

import org.gradle.testkit.runner.BuildResult;
import org.gradle.testkit.runner.BuildTask;
import org.gradle.testkit.runner.TaskOutcome;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.TestTemplate;
import org.testcontainers.junit.jupiter.Container;
import org.testcontainers.junit.jupiter.Testcontainers;

import org.springframework.boot.buildpack.platform.docker.DockerApi;
import org.springframework.boot.buildpack.platform.docker.UpdateListener;
import org.springframework.boot.buildpack.platform.docker.type.Image;
import org.springframework.boot.buildpack.platform.docker.type.ImageReference;
import org.springframework.boot.gradle.junit.GradleCompatibility;
import org.springframework.boot.testsupport.container.RegistryContainer;
import org.springframework.boot.testsupport.container.TestImage;
import org.springframework.boot.testsupport.gradle.testkit.GradleBuild;

import static org.assertj.core.api.Assertions.assertThat;

/**
 * Integration tests for {@link BootBuildImage} tasks requiring a Docker image registry.
 *
 * @author Scott Frederick
 */
@GradleCompatibility
@Testcontainers(disabledWithoutDocker = true)
@Disabled("Disabled until differences between running locally and in CI can be diagnosed")
class BootBuildImageRegistryIntegrationTests {

	@Container
	static final RegistryContainer registry = TestImage.container(RegistryContainer.class);

	String registryAddress;

	@SuppressWarnings("NullAway.Init")
	GradleBuild gradleBuild;

	@BeforeEach
	void setUp() {
		assertThat(registry.isRunning()).isTrue();
		this.registryAddress = registry.getHost() + ":" + registry.getFirstMappedPort();
	}

	@TestTemplate
	void buildsImageAndPublishesToRegistry() throws IOException {
		writeMainClass();
		String repoName = "test-image";
		String imageName = this.registryAddress + "/" + repoName;
		BuildResult result = this.gradleBuild.build("bootBuildImage", "--imageName=" + imageName);
		BuildTask task = result.task(":bootBuildImage");
		assertThat(task).isNotNull();
		assertThat(task.getOutcome()).isEqualTo(TaskOutcome.SUCCESS);
		assertThat(result.getOutput()).contains("Building image")
			.contains("Successfully built image")
			.contains("Pushing image '" + imageName + ":latest" + "'")
			.contains("Pushed image '" + imageName + ":latest" + "'");
		ImageReference imageReference = ImageReference.of(imageName);
		Image pulledImage = new DockerApi().image().pull(imageReference, null, UpdateListener.none());
		assertThat(pulledImage).isNotNull();
		new DockerApi().image().remove(imageReference, false);
	}

	private void writeMainClass() {
		File examplePackage = new File(this.gradleBuild.getProjectDir(), "src/main/java/example");
		examplePackage.mkdirs();
		File main = new File(examplePackage, "Main.java");
		try (PrintWriter writer = new PrintWriter(new FileWriter(main))) {
			writer.println("package example;");
			writer.println();
			writer.println("import java.io.IOException;");
			writer.println();
			writer.println("public class Main {");
			writer.println();
			writer.println("    public static void main(String[] args) {");
			writer.println("    }");
			writer.println();
			writer.println("}");
		}
		catch (IOException ex) {
			throw new RuntimeException(ex);
		}
	}

}


================================================
FILE: build-plugin/spring-boot-gradle-plugin/src/dockerTest/resources/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests-buildsImageOnLinuxArmWithImagePlatformLinuxArm.gradle
================================================
/*
 * Copyright 2012-present the original author or authors.
 *
 * Licensed under the Apache License, Version 2.0 (the License);
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      https://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

plugins {
	id 'java'
	id 'org.springframework.boot' version '{version}'
}

bootBuildImage {
	builder = "ghcr.io/spring-io/spring-boot-cnb-test-builder:0.0.2"
	runImage = "paketobuildpacks/run-noble-tiny"
	buildpacks = ["ghcr.io/spring-io/spring-boot-test-info:0.0.2"]
	imagePlatform = "linux/arm64"
}


================================================
FILE: build-plugin/spring-boot-gradle-plugin/src/dockerTest/resources/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests-buildsImageWithApplicationDirectory.gradle
================================================
/*
 * Copyright 2012-present the original author or authors.
 *
 * Licensed under the Apache License, Version 2.0 (the License);
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      https://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

plugins {
	id 'java'
	id 'org.springframework.boot' version '{version}'
}

if (project.hasProperty('applyWarPlugin')) {
	apply plugin: 'war'
}

bootBuildImage {
	builder = "ghcr.io/spring-io/spring-boot-cnb-test-builder:0.0.2"
	pullPolicy = "IF_NOT_PRESENT"
	applicationDirectory = "/application"
}


================================================
FILE: build-plugin/spring-boot-gradle-plugin/src/dockerTest/resources/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests-buildsImageWithBindCaches.gradle
================================================
/*
 * Copyright 2012-present the original author or authors.
 *
 * Licensed under the Apache License, Version 2.0 (the License);
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      https://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

plugins {
	id 'java'
	id 'org.springframework.boot' version '{version}'
}

bootBuildImage {
	builder = "ghcr.io/spring-io/spring-boot-cnb-test-builder:0.0.2"
	pullPolicy = "IF_NOT_PRESENT"
	buildWorkspace {
		bind {
			source = System.getProperty('java.io.tmpdir') + "/junit-image-pack-${rootProject.name}-work"
		}
	}
	buildCache {
		bind {
			source = System.getProperty('java.io.tmpdir') + "/junit-image-cache-${rootProject.name}-build"
		}
	}
	launchCache {
		bind {
			source = System.getProperty('java.io.tmpdir') + "/junit-image-cache-${rootProject.name}-launch"
		}
	}
}


================================================
FILE: build-plugin/spring-boot-gradle-plugin/src/dockerTest/resources/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests-buildsImageWithBinding.gradle
================================================
/*
 * Copyright 2012-present the original author or authors.
 *
 * Licensed under the Apache License, Version 2.0 (the License);
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      https://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

plugins {
	id 'java'
	id 'org.springframework.boot' version '{version}'
}

bootBuildImage {
	builder = "ghcr.io/spring-io/spring-boot-cnb-test-builder:0.0.2"
	pullPolicy = "IF_NOT_PRESENT"
	bindings = [ "${projectDir}/bindings/ca-certificates:/platform/bindings/certificates" as String ]
}


================================================
FILE: build-plugin/spring-boot-gradle-plugin/src/dockerTest/resources/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests-buildsImageWithBuildpackFromBuilder.gradle
================================================
/*
 * Copyright 2012-present the original author or authors.
 *
 * Licensed under the Apache License, Version 2.0 (the License);
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      https://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

plugins {
	id 'java'
	id 'org.springframework.boot' version '{version}'
}

bootBuildImage {
	builder = "ghcr.io/spring-io/spring-boot-cnb-test-builder:0.0.2"
	pullPolicy = "IF_NOT_PRESENT"
	buildpacks = [ "spring-boot/spring-boot-test-info" ]
}


================================================
FILE: build-plugin/spring-boot-gradle-plugin/src/dockerTest/resources/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests-buildsImageWithBuildpackFromDirectory.gradle
================================================
/*
 * Copyright 2012-present the original author or authors.
 *
 * Licensed under the Apache License, Version 2.0 (the License);
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      https://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

plugins {
	id 'java'
	id 'org.springframework.boot' version '{version}'
}

bootBuildImage {
	builder = "ghcr.io/spring-io/spring-boot-cnb-test-builder:0.0.2"
	pullPolicy = "IF_NOT_PRESENT"
	buildpacks = [ "file://${projectDir}/buildpack/hello-world" as String ]
}


================================================
FILE: build-plugin/spring-boot-gradle-plugin/src/dockerTest/resources/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests-buildsImageWithBuildpackFromTarGzip.gradle
================================================
/*
 * Copyright 2012-present the original author or authors.
 *
 * Licensed under the Apache License, Version 2.0 (the License);
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      https://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

plugins {
	id 'java'
	id 'org.springframework.boot' version '{version}'
}

bootBuildImage {
	builder = "ghcr.io/spring-io/spring-boot-cnb-test-builder:0.0.2"
	pullPolicy = "IF_NOT_PRESENT"
	buildpacks = [ "file://${projectDir}/hello-world.tgz" as String ]
}


================================================
FILE: build-plugin/spring-boot-gradle-plugin/src/dockerTest/resources/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests-buildsImageWithBuildpacksFromImages.gradle
================================================
/*
 * Copyright 2012-present the original author or authors.
 *
 * Licensed under the Apache License, Version 2.0 (the License);
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      https://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

plugins {
	id 'java'
	id 'org.springframework.boot' version '{version}'
}

bootBuildImage {
	builder = "ghcr.io/spring-io/spring-boot-cnb-test-builder:0.0.2"
	pullPolicy = "IF_NOT_PRESENT"
	buildpacks = ["ghcr.io/spring-io/spring-boot-test-info:0.0.2"]
}


================================================
FILE: build-plugin/spring-boot-gradle-plugin/src/dockerTest/resources/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests-buildsImageWithCommandLineOptions.gradle
================================================
/*
 * Copyright 2012-present the original author or authors.
 *
 * Licensed under the Apache License, Version 2.0 (the License);
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      https://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

plugins {
	id 'java'
	id 'org.springframework.boot' version '{version}'
}


================================================
FILE: build-plugin/spring-boot-gradle-plugin/src/dockerTest/resources/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests-buildsImageWithCreatedDate.gradle
================================================
/*
 * Copyright 2012-present the original author or authors.
 *
 * Licensed under the Apache License, Version 2.0 (the License);
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      https://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

plugins {
	id 'java'
	id 'org.springframework.boot' version '{version}'
}

bootBuildImage {
	builder = "ghcr.io/spring-io/spring-boot-cnb-test-builder:0.0.2"
	pullPolicy = "IF_NOT_PRESENT"
	createdDate = "2020-07-01T12:34:56Z"
}


================================================
FILE: build-plugin/spring-boot-gradle-plugin/src/dockerTest/resources/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests-buildsImageWithCurrentCreatedDate.gradle
================================================
/*
 * Copyright 2012-present the original author or authors.
 *
 * Licensed under the Apache License, Version 2.0 (the License);
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      https://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

plugins {
	id 'java'
	id 'org.springframework.boot' version '{version}'
}

bootBuildImage {
	builder = "ghcr.io/spring-io/spring-boot-cnb-test-builder:0.0.2"
	pullPolicy = "IF_NOT_PRESENT"
	createdDate = "now"
}


================================================
FILE: build-plugin/spring-boot-gradle-plugin/src/dockerTest/resources/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests-buildsImageWithCustomBuilderAndRunImage.gradle
================================================
/*
 * Copyright 2012-present the original author or authors.
 *
 * Licensed under the Apache License, Version 2.0 (the License);
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      https://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

plugins {
	id 'java'
	id 'org.springframework.boot' version '{version}'
}

bootBuildImage {
	imageName = "example/test-image-custom"
	builder = "ghcr.io/spring-io/spring-boot-cnb-test-builder:0.0.2"
	runImage = "paketobuildpacks/run-noble-tiny"
	pullPolicy = "IF_NOT_PRESENT"
}


================================================
FILE: build-plugin/spring-boot-gradle-plugin/src/dockerTest/resources/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests-buildsImageWithCustomName.gradle
================================================
/*
 * Copyright 2012-present the original author or authors.
 *
 * Licensed under the Apache License, Version 2.0 (the License);
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      https://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

plugins {
	id 'java'
	id 'org.springframework.boot' version '{version}'
}

bootBuildImage {
	imageName = "example/test-image-name"
	builder = "ghcr.io/spring-io/spring-boot-cnb-test-builder:0.0.2"
	pullPolicy = "IF_NOT_PRESENT"
}


================================================
FILE: build-plugin/spring-boot-gradle-plugin/src/dockerTest/resources/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests-buildsImageWithEmptySecurityOptions.gradle
================================================
/*
 * Copyright 2012-present the original author or authors.
 *
 * Licensed under the Apache License, Version 2.0 (the License);
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      https://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

plugins {
	id 'java'
	id 'org.springframework.boot' version '{version}'
}

bootBuildImage {
	builder = "ghcr.io/spring-io/spring-boot-cnb-test-builder:0.0.2"
	pullPolicy = "IF_NOT_PRESENT"
	securityOptions = []
}


================================================
FILE: build-plugin/spring-boot-gradle-plugin/src/dockerTest/resources/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests-buildsImageWithNetworkModeNone.gradle
================================================
/*
 * Copyright 2012-present the original author or authors.
 *
 * Licensed under the Apache License, Version 2.0 (the License);
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      https://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

plugins {
	id 'java'
	id 'org.springframework.boot' version '{version}'
}

if (project.hasProperty('applyWarPlugin')) {
	apply plugin: 'war'
}

bootBuildImage {
	builder = "ghcr.io/spring-io/spring-boot-cnb-test-builder:0.0.2"
	pullPolicy = "IF_NOT_PRESENT"
	network = "none"
}


================================================
FILE: build-plugin/spring-boot-gradle-plugin/src/dockerTest/resources/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests-buildsImageWithPullPolicy.gradle
================================================
/*
 * Copyright 2012-present the original author or authors.
 *
 * Licensed under the Apache License, Version 2.0 (the License);
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      https://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

import org.springframework.boot.buildpack.platform.build.PullPolicy

plugins {
	id 'java'
	id 'org.springframework.boot' version '{version}'
}

if (project.hasProperty('applyWarPlugin')) {
	apply plugin: 'war'
}

bootBuildImage {
	builder = "ghcr.io/spring-io/spring-boot-cnb-test-builder:0.0.2"
	pullPolicy = PullPolicy.ALWAYS
}


================================================
FILE: build-plugin/spring-boot-gradle-plugin/src/dockerTest/resources/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests-buildsImageWithTag.gradle
================================================
/*
 * Copyright 2012-present the original author or authors.
 *
 * Licensed under the Apache License, Version 2.0 (the License);
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      https://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

plugins {
	id 'java'
	id 'org.springframework.boot' version '{version}'
}

bootBuildImage {
	builder = "ghcr.io/spring-io/spring-boot-cnb-test-builder:0.0.2"
	pullPolicy = "IF_NOT_PRESENT"
	tags = [ "example.com/myapp:latest" ]
}


================================================
FILE: build-plugin/spring-boot-gradle-plugin/src/dockerTest/resources/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests-buildsImageWithTrustBuilder.gradle
================================================
/*
 * Copyright 2012-present the original author or authors.
 *
 * Licensed under the Apache License, Version 2.0 (the License);
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      https://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

plugins {
	id 'java'
	id 'org.springframework.boot' version '{version}'
}

if (project.hasProperty('applyWarPlugin')) {
	apply plugin: 'war'
}

bootBuildImage {
	builder = "ghcr.io/spring-io/spring-boot-cnb-test-builder:0.0.2"
	trustBuilder = true
	pullPolicy = "IF_NOT_PRESENT"
}


================================================
FILE: build-plugin/spring-boot-gradle-plugin/src/dockerTest/resources/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests-buildsImageWithVolumeCaches.gradle
================================================
/*
 * Copyright 2012-present the original author or authors.
 *
 * Licensed under the Apache License, Version 2.0 (the License);
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      https://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

plugins {
	id 'java'
	id 'org.springframework.boot' version '{version}'
}

bootBuildImage {
	builder = "ghcr.io/spring-io/spring-boot-cnb-test-builder:0.0.2"
	pullPolicy = "IF_NOT_PRESENT"
	buildWorkspace {
		volume {
			name = "pack-${rootProject.name}.work"
		}
	}
	buildCache {
		volume {
			name = "cache-${rootProject.name}.build"
		}
	}
	launchCache {
		volume {
			name = "cache-${rootProject.name}.launch"
		}
	}
}


================================================
FILE: build-plugin/spring-boot-gradle-plugin/src/dockerTest/resources/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests-buildsImageWithWarPackagingAndJarConfiguration.gradle
================================================
/*
 * Copyright 2012-present the original author or authors.
 *
 * Licensed under the Apache License, Version 2.0 (the License);
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      https://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

plugins {
	id 'war'
	id 'org.springframework.boot' version '{version}'
}

bootBuildImage {
	builder = "ghcr.io/spring-io/spring-boot-cnb-test-builder:0.0.2"
	pullPolicy = "IF_NOT_PRESENT"
	archiveFile = bootWar.archiveFile
}


================================================
FILE: build-plugin/spring-boot-gradle-plugin/src/dockerTest/resources/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests-failsWhenBuildingOnLinuxAmdWithImagePlatformLinuxArm.gradle
================================================
/*
 * Copyright 2012-present the original author or authors.
 *
 * Licensed under the Apache License, Version 2.0 (the License);
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      https://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

plugins {
	id 'java'
	id 'org.springframework.boot' version '{version}'
}

bootBuildImage {
	builder = "ghcr.io/spring-io/spring-boot-cnb-test-builder:0.0.2"
	runImage = "paketobuildpacks/run-noble-tiny"
	buildpacks = ["ghcr.io/spring-io/spring-boot-test-info:0.0.2"]
	imagePlatform = "linux/arm64"
}


================================================
FILE: build-plugin/spring-boot-gradle-plugin/src/dockerTest/resources/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests-failsWhenCachesAreConfiguredTwice.gradle
================================================
/*
 * Copyright 2012-present the original author or authors.
 *
 * Licensed under the Apache License, Version 2.0 (the License);
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      https://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

plugins {
	id 'java'
	id 'org.springframework.boot' version '{version}'
}

bootBuildImage {
	builder = "ghcr.io/spring-io/spring-boot-cnb-test-builder:0.0.2"
	buildCache {
		volume {
			name = "build-cache-volume"
		}
		bind {
			name = "/tmp/build-cache-bind"
		}
	}
}


================================================
FILE: build-plugin/spring-boot-gradle-plugin/src/dockerTest/resources/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests-failsWithBuilderError.gradle
================================================
/*
 * Copyright 2012-present the original author or authors.
 *
 * Licensed under the Apache License, Version 2.0 (the License);
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      https://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

plugins {
	id 'java'
	id 'org.springframework.boot' version '{version}'
}

bootBuildImage {
	builder = "ghcr.io/spring-io/spring-boot-cnb-test-builder:0.0.2"
	pullPolicy = "IF_NOT_PRESENT"
	environment = ["FORCE_FAILURE": "true"]
}


================================================
FILE: build-plugin/spring-boot-gradle-plugin/src/dockerTest/resources/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests-failsWithBuildpackNotInBuilder.gradle
================================================
/*
 * Copyright 2012-present the original author or authors.
 *
 * Licensed under the Apache License, Version 2.0 (the License);
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      https://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

plugins {
	id 'java'
	id 'org.springframework.boot' version '{version}'
}

bootBuildImage {
	builder = "ghcr.io/spring-io/spring-boot-cnb-test-builder:0.0.2"
	pullPolicy = "IF_NOT_PRESENT"
	buildpacks = [ "urn:cnb:builder:example/does-not-exist:0.0.1" ]
}


================================================
FILE: build-plugin/spring-boot-gradle-plugin/src/dockerTest/resources/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests-failsWithIncompatiblePlatform.gradle
================================================
/*
 * Copyright 2012-present the original author or authors.
 *
 * Licensed under the Apache License, Version 2.0 (the License);
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      https://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

plugins {
	id 'java'
	id 'org.springframework.boot' version '{version}'
}

bootBuildImage {
	builder = "ghcr.io/spring-io/spring-boot-cnb-test-builder:0.0.3-amd64"
	imagePlatform = "linux/arm64"
}


================================================
FILE: build-plugin/spring-boot-gradle-plugin/src/dockerTest/resources/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests-failsWithInvalidCreatedDate.gradle
================================================
/*
 * Copyright 2012-present the original author or authors.
 *
 * Licensed under the Apache License, Version 2.0 (the License);
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      https://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

plugins {
	id 'java'
	id 'org.springframework.boot' version '{version}'
}

bootBuildImage {
	builder = "ghcr.io/spring-io/spring-boot-cnb-test-builder:0.0.2"
	pullPolicy = "IF_NOT_PRESENT"
	createdDate = "invalid date"
}


================================================
FILE: build-plugin/spring-boot-gradle-plugin/src/dockerTest/resources/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests-failsWithInvalidTag.gradle
================================================
/*
 * Copyright 2012-present the original author or authors.
 *
 * Licensed under the Apache License, Version 2.0 (the License);
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      https://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

plugins {
	id 'java'
	id 'org.springframework.boot' version '{version}'
}

bootBuildImage {
	builder = "ghcr.io/spring-io/spring-boot-cnb-test-builder:0.0.2"
	pullPolicy = "IF_NOT_PRESENT"
	tags = [ "example/Invalid-Tag-Name" ]
}


================================================
FILE: build-plugin/spring-boot-gradle-plugin/src/dockerTest/resources/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests.gradle
================================================
/*
 * Copyright 2012-present the original author or authors.
 *
 * Licensed under the Apache License, Version 2.0 (the License);
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      https://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

plugins {
	id 'java'
	id 'org.springframework.boot' version '{version}'
}

if (project.hasProperty('applyWarPlugin')) {
	apply plugin: 'war'
}

bootBuildImage {
	builder = "ghcr.io/spring-io/spring-boot-cnb-test-builder:0.0.2"
	pullPolicy = "IF_NOT_PRESENT"
}


================================================
FILE: build-plugin/spring-boot-gradle-plugin/src/dockerTest/resources/org/springframework/boot/gradle/tasks/bundling/BootBuildImageRegistryIntegrationTests.gradle
================================================
/*
 * Copyright 2012-present the original author or authors.
 *
 * Licensed under the Apache License, Version 2.0 (the License);
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      https://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

plugins {
	id 'java'
	id 'org.springframework.boot' version '{version}'
}

bootBuildImage {
	builder = "ghcr.io/spring-io/spring-boot-cnb-test-builder:0.0.2"
	publish = true
}


================================================
FILE: build-plugin/spring-boot-gradle-plugin/src/docs/antora/antora.yml
================================================
name: boot
version: true
ext:
  zip_contents_collector:
    include:
    - name: gradle-plugin
      classifier: catalog-content
      module: gradle-plugin
      destination: content-catalog


================================================
FILE: build-plugin/spring-boot-gradle-plugin/src/docs/antora/local-nav.adoc
================================================
include::gradle-plugin:partial$nav-gradle-plugin.adoc[]


================================================
FILE: build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/aot/apply-aot-plugin.gradle
================================================
plugins {
	id 'org.springframework.boot' version '{version-spring-boot}'
	id 'java'
}

apply plugin: 'org.springframework.boot.aot'


================================================
FILE: build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/aot/apply-aot-plugin.gradle.kts
================================================
plugins {
	id("org.springframework.boot") version "{version-spring-boot}"
	java
}

apply(plugin = "org.springframework.boot.aot")


================================================
FILE: build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/aot/apply-native-image-plugin.gradle
================================================
plugins {
	id 'org.springframework.boot' version '{version-spring-boot}'
	id 'org.graalvm.buildtools.native' version '{version-native-build-tools}'
	id 'java'
}

================================================
FILE: build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/aot/apply-native-image-plugin.gradle.kts
================================================
plugins {
	id("org.springframework.boot") version "{version-spring-boot}"
	id("org.graalvm.buildtools.native") version "{version-native-build-tools}"
	java
}


================================================
FILE: build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/getting-started/apply-plugin-commercial.gradle
================================================
plugins {
	id 'org.springframework.boot' version '{version-spring-boot}'
}


================================================
FILE: build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/getting-started/apply-plugin-commercial.gradle.kts
================================================
plugins {
	id("org.springframework.boot") version "{version-spring-boot}"
}


================================================
FILE: build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/getting-started/apply-plugin-release.gradle
================================================
plugins {
	id 'org.springframework.boot' version '{version-spring-boot}'
}


================================================
FILE: build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/getting-started/apply-plugin-release.gradle.kts
================================================
plugins {
	id("org.springframework.boot") version "{version-spring-boot}"
}


================================================
FILE: build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/getting-started/apply-plugin-snapshot.gradle
================================================
buildscript {
	repositories {
		maven {
			url = 'https://repo.spring.io/libs-snapshot'
		}
	}

	dependencies {
		classpath 'org.springframework.boot:spring-boot-gradle-plugin:{version-spring-boot}'
	}
}

apply plugin: 'org.springframework.boot'


================================================
FILE: build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/getting-started/milestone-settings.gradle
================================================
pluginManagement {
	repositories {
		maven {
			url = 'https://repo.spring.io/milestone'
		}
		gradlePluginPortal()
	}
}


================================================
FILE: build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/getting-started/milestone-settings.gradle.kts
================================================
pluginManagement {
	repositories {
		maven { url = uri("https://repo.spring.io/milestone") }
		gradlePluginPortal()
	}
}


================================================
FILE: build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/getting-started/snapshot-settings.gradle
================================================
pluginManagement {
	repositories {
		maven {
			url = 'https://repo.spring.io/milestone'
		}
		maven {
			url = 'https://repo.spring.io/snapshot'
		}
		gradlePluginPortal()
	}
}


================================================
FILE: build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/getting-started/snapshot-settings.gradle.kts
================================================
pluginManagement {
	repositories {
		maven { url = uri("https://repo.spring.io/milestone") }
		maven { url = uri("https://repo.spring.io/snapshot") }
		gradlePluginPortal()
	}
}


================================================
FILE: build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/getting-started/typical-plugins.gradle
================================================
// tag::apply[]
plugins {
	id 'java'
	id 'org.springframework.boot' version '{version-spring-boot}'
}

apply plugin: 'io.spring.dependency-management'
// end::apply[]

tasks.register("verify") {
	doLast {
		plugins.getPlugin(org.gradle.api.plugins.JavaPlugin.class)
		plugins.getPlugin(io.spring.gradle.dependencymanagement.DependencyManagementPlugin.class)
	}
}


================================================
FILE: build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/getting-started/typical-plugins.gradle.kts
================================================
// tag::apply[]
plugins {
	java
	id("org.springframework.boot") version "{version-spring-boot}"
}

apply(plugin = "io.spring.dependency-management")
// end::apply[]

tasks.register("verify") {
	val plugins = project.plugins
	doLast {
		plugins.getPlugin(JavaPlugin::class)
		plugins.getPlugin(io.spring.gradle.dependencymanagement.DependencyManagementPlugin::class)
	}
}


================================================
FILE: build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/integrating-with-actuator/build-info-additional.gradle
================================================
plugins {
	id 'java'
	id 'org.springframework.boot' version '{version-spring-boot}'
}

// tag::additional[]
springBoot {
	buildInfo {
		properties {
			additional = [
				'a': 'alpha',
				'b': 'bravo'
			]
		}
	}
}
// end::additional[]


================================================
FILE: build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/integrating-with-actuator/build-info-additional.gradle.kts
================================================
plugins {
	java
	id("org.springframework.boot") version "{version-spring-boot}"
}

// tag::additional[]
springBoot {
	buildInfo {
		properties {
			additional.set(mapOf(
				"a" to "alpha",
				"b" to "bravo"
			))
		}
	}
}
// end::additional[]



================================================
FILE: build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/integrating-with-actuator/build-info-basic.gradle
================================================
plugins {
	id 'java'
	id 'org.springframework.boot' version '{version-spring-boot}'
}

// tag::build-info[]
springBoot {
	buildInfo()
}
// end::build-info[]


================================================
FILE: build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/integrating-with-actuator/build-info-basic.gradle.kts
================================================
plugins {
	java
	id("org.springframework.boot") version "{version-spring-boot}"
}

// tag::build-info[]
springBoot {
	buildInfo()
}
// end::build-info[]


================================================
FILE: build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/integrating-with-actuator/build-info-custom-values.gradle
================================================
plugins {
	id 'java'
	id 'org.springframework.boot' version '{version-spring-boot}'
}

// tag::custom-values[]
springBoot {
	buildInfo {
		properties {
			artifact = 'example-app'
			version = '1.2.3'
			group = 'com.example'
			name = 'Example application'
		}
	}
}
// end::custom-values[]


================================================
FILE: build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/integrating-with-actuator/build-info-custom-values.gradle.kts
================================================
plugins {
	java
	id("org.springframework.boot") version "{version-spring-boot}"
}

// tag::custom-values[]
springBoot {
	buildInfo {
		properties {
			artifact.set("example-app")
			version.set("1.2.3")
			group.set("com.example")
			name.set("Example application")
		}
	}
}
// end::custom-values[]


================================================
FILE: build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/integrating-with-actuator/build-info-exclude-time.gradle
================================================
plugins {
	id 'java'
	id 'org.springframework.boot' version '{version-spring-boot}'
}

// tag::exclude-time[]
springBoot {
	buildInfo {
		excludes = ['time']
	}
}
// end::exclude-time[]


================================================
FILE: build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/integrating-with-actuator/build-info-exclude-time.gradle.kts
================================================
plugins {
	java
	id("org.springframework.boot") version "{version-spring-boot}"
}

// tag::exclude-time[]
springBoot {
	buildInfo {
		excludes.set(setOf("time"))
	}
}
// end::exclude-time[]


================================================
FILE: build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/managing-dependencies/configure-bom-with-plugins.gradle.kts
================================================
import io.spring.gradle.dependencymanagement.dsl.DependencyManagementExtension

// tag::configure-bom[]
plugins {
	java
	id("org.springframework.boot") version "{version-spring-boot}" apply false
	id("io.spring.dependency-management") version "{version-dependency-management-plugin}"
}

dependencyManagement {
	imports {
		mavenBom(org.springframework.boot.gradle.plugin.SpringBootPlugin.BOM_COORDINATES)
	}
}
// end::configure-bom[]

the<DependencyManagementExtension>().apply {
	resolutionStrategy {
		eachDependency {
			if (requested.group == "org.springframework.boot") {
				useVersion("TEST-SNAPSHOT")
			}
		}
	}
}

repositories {
	maven {
		url = uri("repository")
	}
}


================================================
FILE: build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/managing-dependencies/configure-bom.gradle
================================================
plugins {
	id 'java'
	id 'org.springframework.boot' version '{version-spring-boot}'
}

// tag::configure-bom[]
apply plugin: 'io.spring.dependency-management'

dependencyManagement {
	imports {
		mavenBom org.springframework.boot.gradle.plugin.SpringBootPlugin.BOM_COORDINATES
	}
}
// end::configure-bom[]

dependencyManagement {
	resolutionStrategy {
		eachDependency {
			if (it.requested.group == 'org.springframework.boot') {
				it.useVersion 'TEST-SNAPSHOT'
			}
		}
	}
}

repositories {
	maven {
		url = 'repository'
	}
}


================================================
FILE: build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/managing-dependencies/configure-bom.gradle.kts
================================================
import io.spring.gradle.dependencymanagement.dsl.DependencyManagementExtension

plugins {
	java
	id("org.springframework.boot") version "{version-spring-boot}"
}

// tag::configure-bom[]
apply(plugin = "io.spring.dependency-management")

the<DependencyManagementExtension>().apply {
	imports {
		mavenBom(org.springframework.boot.gradle.plugin.SpringBootPlugin.BOM_COORDINATES)
	}
}
// end::configure-bom[]

the<DependencyManagementExtension>().apply {
	resolutionStrategy {
		eachDependency {
			if (requested.group == "org.springframework.boot") {
				useVersion("TEST-SNAPSHOT")
			}
		}
	}
}

repositories {
	maven {
		url = uri("repository")
	}
}


================================================
FILE: build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/managing-dependencies/configure-platform.gradle
================================================
plugins {
	id 'java'
	id 'org.springframework.boot' version '{version-spring-boot}'
}

// tag::configure-platform[]
dependencies {
	implementation platform(org.springframework.boot.gradle.plugin.SpringBootPlugin.BOM_COORDINATES)
}
// end::configure-platform[]

dependencies {
	implementation "org.springframework.boot:spring-boot-starter"
}

repositories {
	maven {
		url = 'repository'
	}
}

configurations.all {
	resolutionStrategy {
		eachDependency {
			if (it.requested.group == 'org.springframework.boot') {
				it.useVersion 'TEST-SNAPSHOT'
			}
		}
	}
}


================================================
FILE: build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/managing-dependencies/configure-platform.gradle.kts
================================================
plugins {
	java
	id("org.springframework.boot") version "{version-spring-boot}"
}

// tag::configure-platform[]
dependencies {
	implementation(platform(org.springframework.boot.gradle.plugin.SpringBootPlugin.BOM_COORDINATES))
}
// end::configure-platform[]

dependencies {
	implementation("org.springframework.boot:spring-boot-starter")
}

repositories {
	maven {
		url = uri("repository")
	}
}

configurations.all {
	resolutionStrategy {
		eachDependency {
			if (requested.group == "org.springframework.boot") {
				useVersion("TEST-SNAPSHOT")
			}
		}
	}
}


================================================
FILE: build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/managing-dependencies/custom-version-with-platform.gradle
================================================
plugins {
	id 'java'
	id 'org.springframework.boot' version '{version-spring-boot}'
}

dependencies {
	implementation platform(org.springframework.boot.gradle.plugin.SpringBootPlugin.BOM_COORDINATES)
	implementation "org.slf4j:slf4j-api"
}

repositories {
	maven {
		url = 'repository'
	}
}

configurations.all {
	resolutionStrategy {
		eachDependency {
			if (it.requested.group == 'org.springframework.boot') {
				it.useVersion 'TEST-SNAPSHOT'
			}
		}
	}
}

// tag::custom-version[]
configurations.all {
	resolutionStrategy.eachDependency { DependencyResolveDetails details ->
		if (details.requested.group == 'org.slf4j') {
			details.useVersion '1.7.20'
		}
	}
}
// end::custom-version[]


================================================
FILE: build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/managing-dependencies/custom-version-with-platform.gradle.kts
================================================
plugins {
	java
	id("org.springframework.boot") version "{version-spring-boot}"
}

dependencies {
	implementation(platform(org.springframework.boot.gradle.plugin.SpringBootPlugin.BOM_COORDINATES))
	implementation("org.slf4j:slf4j-api")
}

repositories {
	maven {
		url = uri("repository")
	}
}

configurations.all {
	resolutionStrategy {
		eachDependency {
			if (requested.group == "org.springframework.boot") {
				useVersion("TEST-SNAPSHOT")
			}
		}
	}
}

// tag::custom-version[]
configurations.all {
    resolutionStrategy.eachDependency {
        if (requested.group == "org.slf4j") {
            useVersion("1.7.20")
        }
    }
}
// end::custom-version[]


================================================
FILE: build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/managing-dependencies/custom-version.gradle
================================================
plugins {
	id 'org.springframework.boot' version '{version-spring-boot}'
}

apply plugin: 'io.spring.dependency-management'

dependencyManagement {
	resolutionStrategy {
		eachDependency {
			if (it.requested.group == 'org.springframework.boot') {
				it.useVersion 'TEST-SNAPSHOT'
			}
		}
	}
}

// tag::custom-version[]
ext['slf4j.version'] = '1.7.20'
// end::custom-version[]

repositories {
	maven {
		url = 'repository'
	}
}

tasks.register("slf4jVersion") {
	doLast {
		println dependencyManagement.managedVersions['org.slf4j:slf4j-api']
	}
}


================================================
FILE: build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/managing-dependencies/custom-version.gradle.kts
================================================
import io.spring.gradle.dependencymanagement.dsl.DependencyManagementExtension

plugins {
	id("org.springframework.boot") version "{version-spring-boot}"
}

apply(plugin = "io.spring.dependency-management")

// tag::custom-version[]
extra["slf4j.version"] = "1.7.20"
// end::custom-version[]

repositories {
	maven {
		url = uri("repository")
	}
}

the<DependencyManagementExtension>().apply {
	resolutionStrategy {
		eachDependency {
			if (requested.group == "org.springframework.boot") {
				useVersion("TEST-SNAPSHOT")
			}
		}
	}
}

tasks.register("slf4jVersion") {
	val dependencyManagement = project.the<DependencyManagementExtension>()
	doLast {
		println(dependencyManagement.managedVersions["org.slf4j:slf4j-api"])
	}
}


================================================
FILE: build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/managing-dependencies/depend-on-plugin-commercial.gradle
================================================
plugins {
	id 'org.springframework.boot' version '{version-spring-boot}' apply false
}


================================================
FILE: build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/managing-dependencies/depend-on-plugin-commercial.gradle.kts
================================================
plugins {
	id("org.springframework.boot") version "{version-spring-boot}" apply false
}


================================================
FILE: build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/managing-dependencies/depend-on-plugin-milestone.gradle
================================================
buildscript {
	repositories {
		maven {
			url = 'https://repo.spring.io/libs-milestone'
		}
	}

	dependencies {
		classpath 'org.springframework.boot:spring-boot-gradle-plugin:{version-spring-boot}'
	}
}


================================================
FILE: build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/managing-dependencies/depend-on-plugin-release.gradle
================================================
plugins {
	id 'org.springframework.boot' version '{version-spring-boot}' apply false
}


================================================
FILE: build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/managing-dependencies/depend-on-plugin-release.gradle.kts
================================================
plugins {
	id("org.springframework.boot") version "{version-spring-boot}" apply false
}


================================================
FILE: build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/managing-dependencies/depend-on-plugin-snapshot.gradle
================================================
buildscript {
	repositories {
		maven {
			url = 'https://repo.spring.io/libs-snapshot'
		}
	}

	dependencies {
		classpath 'org.springframework.boot:spring-boot-gradle-plugin:{version-spring-boot}'
	}
}


================================================
FILE: build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/managing-dependencies/dependencies.gradle
================================================
plugins {
	id 'java'
	id 'org.springframework.boot' version '{version-spring-boot}'
}

apply plugin: 'io.spring.dependency-management'

// tag::dependencies[]
dependencies {
	implementation('org.springframework.boot:spring-boot-starter-web')
	implementation('org.springframework.boot:spring-boot-starter-data-jpa')
}
// end::dependencies[]


================================================
FILE: build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/managing-dependencies/dependencies.gradle.kts
================================================
plugins {
	java
	id("org.springframework.boot") version "{version-spring-boot}"
}

apply(plugin = "io.spring.dependency-management")

// tag::dependencies[]
dependencies {
	implementation("org.springframework.boot:spring-boot-starter-web")
	implementation("org.springframework.boot:spring-boot-starter-data-jpa")
}
// end::dependencies[]


================================================
FILE: build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/packaging/application-plugin-main-class.gradle
================================================
plugins {
	id 'java'
	id 'application'
	id 'org.springframework.boot' version '{version-spring-boot}'
}

// tag::main-class[]
application {
	mainClass = 'com.example.ExampleApplication'
}
// end::main-class[]


================================================
FILE: build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/packaging/application-plugin-main-class.gradle.kts
================================================
plugins {
	java
	application
	id("org.springframework.boot") version "{version-spring-boot}"
}

// tag::main-class[]
application {
	mainClass.set("com.example.ExampleApplication")
}
// end::main-class[]


================================================
FILE: build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/packaging/boot-build-image-bind-caches.gradle
================================================
plugins {
	id 'java'
	id 'org.springframework.boot' version '{version-spring-boot}'
}

tasks.named("bootJar") {
	mainClass = 'com.example.ExampleApplication'
}

// tag::caches[]
tasks.named("bootBuildImage") {
	buildWorkspace {
		bind {
			source = "/tmp/cache-${rootProject.name}.work"
		}
	}
	buildCache {
		bind {
			source = "/tmp/cache-${rootProject.name}.build"
		}
	}
	launchCache {
		bind {
			source = "/tmp/cache-${rootProject.name}.launch"
		}
	}
}
// end::caches[]

tasks.register("bootBuildImageCaches") {
	doFirst {
		bootBuildImage.buildWorkspace.asCache().with { print "buildWorkspace=$source" }
		bootBuildImage.buildCache.asCache().with { println "buildCache=$source" }
		bootBuildImage.launchCache.asCache().with { println "launchCache=$source" }
	}
}


================================================
FILE: build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/packaging/boot-build-image-bind-caches.gradle.kts
================================================
import org.springframework.boot.gradle.tasks.bundling.BootBuildImage

plugins {
	java
	id("org.springframework.boot") version "{version-spring-boot}"
}

// tag::caches[]
tasks.named<BootBuildImage>("bootBuildImage") {
	buildWorkspace {
		bind {
			source.set("/tmp/cache-${rootProject.name}.work")
		}
	}
	buildCache {
		bind {
			source.set("/tmp/cache-${rootProject.name}.build")
		}
	}
	launchCache {
		bind {
			source.set("/tmp/cache-${rootProject.name}.launch")
		}
	}
}
// end::caches[]

tasks.register("bootBuildImageCaches") {
	doFirst {
		println("buildWorkspace=" + tasks.getByName<BootBuildImage>("bootBuildImage").buildWorkspace.asCache()?.bind?.source)
		println("buildCache=" + tasks.getByName<BootBuildImage>("bootBuildImage").buildCache.asCache()?.bind?.source)
		println("launchCache=" + tasks.getByName<BootBuildImage>("bootBuildImage").launchCache.asCache()?.bind?.source)
	}
}


================================================
FILE: build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/packaging/boot-build-image-builder.gradle
=============================================
Download .txt
Showing preview only (1,500K chars total). Download the full file or copy to clipboard to get everything.
gitextract_5h52i2gm/

├── .editorconfig
├── .git-blame-ignore-revs
├── .github/
│   ├── ISSUE_TEMPLATE/
│   │   ├── config.yml
│   │   └── issue.md
│   ├── PULL_REQUEST_TEMPLATE.md
│   ├── actions/
│   │   ├── await-http-resource/
│   │   │   └── action.yml
│   │   ├── create-github-release/
│   │   │   ├── action.yml
│   │   │   ├── changelog-generator-commercial.yml
│   │   │   └── changelog-generator-oss.yml
│   │   ├── prepare-gradle-build/
│   │   │   └── action.yml
│   │   ├── print-jvm-thread-dumps/
│   │   │   └── action.yml
│   │   ├── publish-gradle-plugin/
│   │   │   ├── action.yml
│   │   │   ├── artifacts.spec
│   │   │   ├── build.gradle
│   │   │   └── settings.gradle
│   │   ├── publish-to-sdkman/
│   │   │   └── action.yml
│   │   ├── send-notification/
│   │   │   └── action.yml
│   │   ├── sync-to-maven-central/
│   │   │   ├── action.yml
│   │   │   └── artifacts.spec
│   │   └── update-homebrew-tap/
│   │       └── action.yml
│   ├── dco.yml
│   ├── dependabot.yml
│   ├── scripts/
│   │   └── reclaim-docker-diskspace.sh
│   └── workflows/
│       ├── build-and-deploy-snapshot.yml
│       ├── build-pull-request.yml
│       ├── ci.yml
│       ├── distribute.yml
│       ├── release-milestone.yml
│       ├── release.yml
│       ├── run-codeql-analysis.yml
│       ├── run-system-tests.yml
│       ├── trigger-docs-build.yml
│       └── verify.yml
├── .gitignore
├── .idea/
│   └── .gitignore
├── .sdkmanrc
├── CONTRIBUTING.adoc
├── LICENSE.txt
├── README.adoc
├── SUPPORT.adoc
├── antora/
│   └── package.json
├── build-plugin/
│   ├── spring-boot-antlib/
│   │   ├── build.gradle
│   │   └── src/
│   │       ├── it/
│   │       │   └── sample/
│   │       │       ├── build.xml
│   │       │       ├── ivysettings.xml
│   │       │       └── src/
│   │       │           └── main/
│   │       │               ├── java/
│   │       │               │   └── org/
│   │       │               │       └── test/
│   │       │               │           └── SampleApplication.java
│   │       │               └── resources/
│   │       │                   └── foo
│   │       └── main/
│   │           ├── java/
│   │           │   └── org/
│   │           │       └── springframework/
│   │           │           └── boot/
│   │           │               └── ant/
│   │           │                   ├── FindMainClass.java
│   │           │                   ├── ShareAntlibLoader.java
│   │           │                   └── package-info.java
│   │           └── resources/
│   │               └── org/
│   │                   └── springframework/
│   │                       └── boot/
│   │                           └── ant/
│   │                               └── antlib.xml
│   ├── spring-boot-gradle-plugin/
│   │   ├── .gitignore
│   │   ├── build.gradle
│   │   └── src/
│   │       ├── dockerTest/
│   │       │   ├── java/
│   │       │   │   └── org/
│   │       │   │       └── springframework/
│   │       │   │           └── boot/
│   │       │   │               └── gradle/
│   │       │   │                   └── tasks/
│   │       │   │                       └── bundling/
│   │       │   │                           ├── BootBuildImageIntegrationTests.java
│   │       │   │                           └── BootBuildImageRegistryIntegrationTests.java
│   │       │   └── resources/
│   │       │       └── org/
│   │       │           └── springframework/
│   │       │               └── boot/
│   │       │                   └── gradle/
│   │       │                       └── tasks/
│   │       │                           └── bundling/
│   │       │                               ├── BootBuildImageIntegrationTests-buildsImageOnLinuxArmWithImagePlatformLinuxArm.gradle
│   │       │                               ├── BootBuildImageIntegrationTests-buildsImageWithApplicationDirectory.gradle
│   │       │                               ├── BootBuildImageIntegrationTests-buildsImageWithBindCaches.gradle
│   │       │                               ├── BootBuildImageIntegrationTests-buildsImageWithBinding.gradle
│   │       │                               ├── BootBuildImageIntegrationTests-buildsImageWithBuildpackFromBuilder.gradle
│   │       │                               ├── BootBuildImageIntegrationTests-buildsImageWithBuildpackFromDirectory.gradle
│   │       │                               ├── BootBuildImageIntegrationTests-buildsImageWithBuildpackFromTarGzip.gradle
│   │       │                               ├── BootBuildImageIntegrationTests-buildsImageWithBuildpacksFromImages.gradle
│   │       │                               ├── BootBuildImageIntegrationTests-buildsImageWithCommandLineOptions.gradle
│   │       │                               ├── BootBuildImageIntegrationTests-buildsImageWithCreatedDate.gradle
│   │       │                               ├── BootBuildImageIntegrationTests-buildsImageWithCurrentCreatedDate.gradle
│   │       │                               ├── BootBuildImageIntegrationTests-buildsImageWithCustomBuilderAndRunImage.gradle
│   │       │                               ├── BootBuildImageIntegrationTests-buildsImageWithCustomName.gradle
│   │       │                               ├── BootBuildImageIntegrationTests-buildsImageWithEmptySecurityOptions.gradle
│   │       │                               ├── BootBuildImageIntegrationTests-buildsImageWithNetworkModeNone.gradle
│   │       │                               ├── BootBuildImageIntegrationTests-buildsImageWithPullPolicy.gradle
│   │       │                               ├── BootBuildImageIntegrationTests-buildsImageWithTag.gradle
│   │       │                               ├── BootBuildImageIntegrationTests-buildsImageWithTrustBuilder.gradle
│   │       │                               ├── BootBuildImageIntegrationTests-buildsImageWithVolumeCaches.gradle
│   │       │                               ├── BootBuildImageIntegrationTests-buildsImageWithWarPackagingAndJarConfiguration.gradle
│   │       │                               ├── BootBuildImageIntegrationTests-failsWhenBuildingOnLinuxAmdWithImagePlatformLinuxArm.gradle
│   │       │                               ├── BootBuildImageIntegrationTests-failsWhenCachesAreConfiguredTwice.gradle
│   │       │                               ├── BootBuildImageIntegrationTests-failsWithBuilderError.gradle
│   │       │                               ├── BootBuildImageIntegrationTests-failsWithBuildpackNotInBuilder.gradle
│   │       │                               ├── BootBuildImageIntegrationTests-failsWithIncompatiblePlatform.gradle
│   │       │                               ├── BootBuildImageIntegrationTests-failsWithInvalidCreatedDate.gradle
│   │       │                               ├── BootBuildImageIntegrationTests-failsWithInvalidTag.gradle
│   │       │                               ├── BootBuildImageIntegrationTests.gradle
│   │       │                               └── BootBuildImageRegistryIntegrationTests.gradle
│   │       ├── docs/
│   │       │   └── antora/
│   │       │       ├── antora.yml
│   │       │       ├── local-nav.adoc
│   │       │       └── modules/
│   │       │           └── gradle-plugin/
│   │       │               ├── examples/
│   │       │               │   ├── aot/
│   │       │               │   │   ├── apply-aot-plugin.gradle
│   │       │               │   │   ├── apply-aot-plugin.gradle.kts
│   │       │               │   │   ├── apply-native-image-plugin.gradle
│   │       │               │   │   └── apply-native-image-plugin.gradle.kts
│   │       │               │   ├── getting-started/
│   │       │               │   │   ├── apply-plugin-commercial.gradle
│   │       │               │   │   ├── apply-plugin-commercial.gradle.kts
│   │       │               │   │   ├── apply-plugin-release.gradle
│   │       │               │   │   ├── apply-plugin-release.gradle.kts
│   │       │               │   │   ├── apply-plugin-snapshot.gradle
│   │       │               │   │   ├── milestone-settings.gradle
│   │       │               │   │   ├── milestone-settings.gradle.kts
│   │       │               │   │   ├── snapshot-settings.gradle
│   │       │               │   │   ├── snapshot-settings.gradle.kts
│   │       │               │   │   ├── typical-plugins.gradle
│   │       │               │   │   └── typical-plugins.gradle.kts
│   │       │               │   ├── integrating-with-actuator/
│   │       │               │   │   ├── build-info-additional.gradle
│   │       │               │   │   ├── build-info-additional.gradle.kts
│   │       │               │   │   ├── build-info-basic.gradle
│   │       │               │   │   ├── build-info-basic.gradle.kts
│   │       │               │   │   ├── build-info-custom-values.gradle
│   │       │               │   │   ├── build-info-custom-values.gradle.kts
│   │       │               │   │   ├── build-info-exclude-time.gradle
│   │       │               │   │   └── build-info-exclude-time.gradle.kts
│   │       │               │   ├── managing-dependencies/
│   │       │               │   │   ├── configure-bom-with-plugins.gradle.kts
│   │       │               │   │   ├── configure-bom.gradle
│   │       │               │   │   ├── configure-bom.gradle.kts
│   │       │               │   │   ├── configure-platform.gradle
│   │       │               │   │   ├── configure-platform.gradle.kts
│   │       │               │   │   ├── custom-version-with-platform.gradle
│   │       │               │   │   ├── custom-version-with-platform.gradle.kts
│   │       │               │   │   ├── custom-version.gradle
│   │       │               │   │   ├── custom-version.gradle.kts
│   │       │               │   │   ├── depend-on-plugin-commercial.gradle
│   │       │               │   │   ├── depend-on-plugin-commercial.gradle.kts
│   │       │               │   │   ├── depend-on-plugin-milestone.gradle
│   │       │               │   │   ├── depend-on-plugin-release.gradle
│   │       │               │   │   ├── depend-on-plugin-release.gradle.kts
│   │       │               │   │   ├── depend-on-plugin-snapshot.gradle
│   │       │               │   │   ├── dependencies.gradle
│   │       │               │   │   └── dependencies.gradle.kts
│   │       │               │   ├── packaging/
│   │       │               │   │   ├── application-plugin-main-class.gradle
│   │       │               │   │   ├── application-plugin-main-class.gradle.kts
│   │       │               │   │   ├── boot-build-image-bind-caches.gradle
│   │       │               │   │   ├── boot-build-image-bind-caches.gradle.kts
│   │       │               │   │   ├── boot-build-image-builder.gradle
│   │       │               │   │   ├── boot-build-image-builder.gradle.kts
│   │       │               │   │   ├── boot-build-image-buildpacks.gradle
│   │       │               │   │   ├── boot-build-image-buildpacks.gradle.kts
│   │       │               │   │   ├── boot-build-image-caches.gradle
│   │       │               │   │   ├── boot-build-image-caches.gradle.kts
│   │       │               │   │   ├── boot-build-image-docker-auth-token.gradle
│   │       │               │   │   ├── boot-build-image-docker-auth-token.gradle.kts
│   │       │               │   │   ├── boot-build-image-docker-auth-user.gradle
│   │       │               │   │   ├── boot-build-image-docker-auth-user.gradle.kts
│   │       │               │   │   ├── boot-build-image-docker-host-colima.gradle
│   │       │               │   │   ├── boot-build-image-docker-host-colima.gradle.kts
│   │       │               │   │   ├── boot-build-image-docker-host-podman.gradle
│   │       │               │   │   ├── boot-build-image-docker-host-podman.gradle.kts
│   │       │               │   │   ├── boot-build-image-docker-host.gradle
│   │       │               │   │   ├── boot-build-image-docker-host.gradle.kts
│   │       │               │   │   ├── boot-build-image-env-proxy.gradle
│   │       │               │   │   ├── boot-build-image-env-proxy.gradle.kts
│   │       │               │   │   ├── boot-build-image-env-runtime.gradle
│   │       │               │   │   ├── boot-build-image-env-runtime.gradle.kts
│   │       │               │   │   ├── boot-build-image-env.gradle
│   │       │               │   │   ├── boot-build-image-env.gradle.kts
│   │       │               │   │   ├── boot-build-image-name.gradle
│   │       │               │   │   ├── boot-build-image-name.gradle.kts
│   │       │               │   │   ├── boot-build-image-publish.gradle
│   │       │               │   │   ├── boot-build-image-publish.gradle.kts
│   │       │               │   │   ├── boot-jar-and-jar-classifiers.gradle
│   │       │               │   │   ├── boot-jar-and-jar-classifiers.gradle.kts
│   │       │               │   │   ├── boot-jar-layered-custom.gradle
│   │       │               │   │   ├── boot-jar-layered-custom.gradle.kts
│   │       │               │   │   ├── boot-jar-layered-disabled.gradle
│   │       │               │   │   ├── boot-jar-layered-disabled.gradle.kts
│   │       │               │   │   ├── boot-jar-layered-exclude-tools.gradle
│   │       │               │   │   ├── boot-jar-layered-exclude-tools.gradle.kts
│   │       │               │   │   ├── boot-jar-main-class.gradle
│   │       │               │   │   ├── boot-jar-main-class.gradle.kts
│   │       │               │   │   ├── boot-jar-manifest-main-class.gradle
│   │       │               │   │   ├── boot-jar-manifest-main-class.gradle.kts
│   │       │               │   │   ├── boot-jar-requires-unpack.gradle
│   │       │               │   │   ├── boot-jar-requires-unpack.gradle.kts
│   │       │               │   │   ├── boot-war-include-devtools.gradle
│   │       │               │   │   ├── boot-war-include-devtools.gradle.kts
│   │       │               │   │   ├── boot-war-properties-launcher.gradle
│   │       │               │   │   ├── boot-war-properties-launcher.gradle.kts
│   │       │               │   │   ├── only-boot-jar.gradle
│   │       │               │   │   ├── only-boot-jar.gradle.kts
│   │       │               │   │   ├── spring-boot-dsl-main-class.gradle
│   │       │               │   │   ├── spring-boot-dsl-main-class.gradle.kts
│   │       │               │   │   ├── war-container-dependency.gradle
│   │       │               │   │   └── war-container-dependency.gradle.kts
│   │       │               │   ├── publishing/
│   │       │               │   │   ├── maven-publish.gradle
│   │       │               │   │   └── maven-publish.gradle.kts
│   │       │               │   └── running/
│   │       │               │       ├── application-plugin-main-class-name.gradle
│   │       │               │       ├── application-plugin-main-class-name.gradle.kts
│   │       │               │       ├── boot-run-disable-optimized-launch.gradle
│   │       │               │       ├── boot-run-disable-optimized-launch.gradle.kts
│   │       │               │       ├── boot-run-main.gradle
│   │       │               │       ├── boot-run-main.gradle.kts
│   │       │               │       ├── boot-run-source-resources.gradle
│   │       │               │       ├── boot-run-source-resources.gradle.kts
│   │       │               │       ├── boot-run-system-property.gradle
│   │       │               │       ├── boot-run-system-property.gradle.kts
│   │       │               │       ├── spring-boot-dsl-main-class-name.gradle
│   │       │               │       └── spring-boot-dsl-main-class-name.gradle.kts
│   │       │               ├── pages/
│   │       │               │   ├── aot.adoc
│   │       │               │   ├── getting-started.adoc
│   │       │               │   ├── index.adoc
│   │       │               │   ├── integrating-with-actuator.adoc
│   │       │               │   ├── introduction.adoc
│   │       │               │   ├── managing-dependencies.adoc
│   │       │               │   ├── packaging-oci-image.adoc
│   │       │               │   ├── packaging.adoc
│   │       │               │   ├── publishing.adoc
│   │       │               │   ├── reacting.adoc
│   │       │               │   └── running.adoc
│   │       │               └── partials/
│   │       │                   └── nav-gradle-plugin.adoc
│   │       ├── main/
│   │       │   ├── java/
│   │       │   │   └── org/
│   │       │   │       └── springframework/
│   │       │   │           └── boot/
│   │       │   │               └── gradle/
│   │       │   │                   ├── dsl/
│   │       │   │                   │   ├── SpringBootExtension.java
│   │       │   │                   │   └── package-info.java
│   │       │   │                   ├── plugin/
│   │       │   │                   │   ├── ApplicationPluginAction.java
│   │       │   │                   │   ├── CyclonedxPluginAction.java
│   │       │   │                   │   ├── DependencyManagementPluginAction.java
│   │       │   │                   │   ├── JarTypeFileSpec.java
│   │       │   │                   │   ├── JavaPluginAction.java
│   │       │   │                   │   ├── KotlinPluginAction.java
│   │       │   │                   │   ├── NativeImagePluginAction.java
│   │       │   │                   │   ├── PluginApplicationAction.java
│   │       │   │                   │   ├── ProtobufPluginAction.java
│   │       │   │                   │   ├── ResolveMainClassName.java
│   │       │   │                   │   ├── SinglePublishedArtifact.java
│   │       │   │                   │   ├── SpringBootAotPlugin.java
│   │       │   │                   │   ├── SpringBootPlugin.java
│   │       │   │                   │   ├── WarPluginAction.java
│   │       │   │                   │   └── package-info.java
│   │       │   │                   ├── tasks/
│   │       │   │                   │   ├── aot/
│   │       │   │                   │   │   ├── AbstractAot.java
│   │       │   │                   │   │   ├── ProcessAot.java
│   │       │   │                   │   │   ├── ProcessTestAot.java
│   │       │   │                   │   │   └── package-info.java
│   │       │   │                   │   ├── buildinfo/
│   │       │   │                   │   │   ├── BuildInfo.java
│   │       │   │                   │   │   ├── BuildInfoProperties.java
│   │       │   │                   │   │   └── package-info.java
│   │       │   │                   │   ├── bundling/
│   │       │   │                   │   │   ├── BootArchive.java
│   │       │   │                   │   │   ├── BootArchiveSupport.java
│   │       │   │                   │   │   ├── BootBuildImage.java
│   │       │   │                   │   │   ├── BootJar.java
│   │       │   │                   │   │   ├── BootWar.java
│   │       │   │                   │   │   ├── BootZipCopyAction.java
│   │       │   │                   │   │   ├── CacheSpec.java
│   │       │   │                   │   │   ├── DefaultTimeZoneOffset.java
│   │       │   │                   │   │   ├── DockerSpec.java
│   │       │   │                   │   │   ├── LayerResolver.java
│   │       │   │                   │   │   ├── LayeredSpec.java
│   │       │   │                   │   │   ├── LoaderZipEntries.java
│   │       │   │                   │   │   ├── ResolvedDependencies.java
│   │       │   │                   │   │   ├── ZipCompression.java
│   │       │   │                   │   │   └── package-info.java
│   │       │   │                   │   └── run/
│   │       │   │                   │       ├── BootRun.java
│   │       │   │                   │       └── package-info.java
│   │       │   │                   └── util/
│   │       │   │                       ├── VersionExtractor.java
│   │       │   │                       └── package-info.java
│   │       │   └── resources/
│   │       │       ├── unixStartScript.txt
│   │       │       └── windowsStartScript.txt
│   │       └── test/
│   │           ├── java/
│   │           │   └── org/
│   │           │       └── springframework/
│   │           │           └── boot/
│   │           │               └── gradle/
│   │           │                   ├── TaskConfigurationAvoidanceTests.java
│   │           │                   ├── docs/
│   │           │                   │   ├── AotDocumentationTests.java
│   │           │                   │   ├── Examples.java
│   │           │                   │   ├── GettingStartedDocumentationTests.java
│   │           │                   │   ├── IntegratingWithActuatorDocumentationTests.java
│   │           │                   │   ├── ManagingDependenciesDocumentationTests.java
│   │           │                   │   ├── PackagingDocumentationTests.java
│   │           │                   │   ├── PublishingDocumentationTests.java
│   │           │                   │   ├── RunningDocumentationTests.java
│   │           │                   │   └── package-info.java
│   │           │                   ├── dsl/
│   │           │                   │   └── BuildInfoDslIntegrationTests.java
│   │           │                   ├── junit/
│   │           │                   │   ├── GradleBuildFieldSetter.java
│   │           │                   │   ├── GradleCompatibility.java
│   │           │                   │   ├── GradleCompatibilityExtension.java
│   │           │                   │   ├── GradleMultiDslExtension.java
│   │           │                   │   ├── GradleProjectBuilder.java
│   │           │                   │   └── package-info.java
│   │           │                   ├── package-info.java
│   │           │                   ├── plugin/
│   │           │                   │   ├── ApplicationPluginActionIntegrationTests.java
│   │           │                   │   ├── CyclonedxPluginActionIntegrationTests.java
│   │           │                   │   ├── DependencyManagementPluginActionIntegrationTests.java
│   │           │                   │   ├── JavaPluginActionIntegrationTests.java
│   │           │                   │   ├── KotlinPluginActionIntegrationTests.java
│   │           │                   │   ├── NativeImagePluginActionIntegrationTests.java
│   │           │                   │   ├── OnlyDependencyManagementIntegrationTests.java
│   │           │                   │   ├── ProtobufPluginActionIntegrationTests.java
│   │           │                   │   ├── SpringBootAotPluginIntegrationTests.java
│   │           │                   │   ├── SpringBootPluginIntegrationTests.java
│   │           │                   │   ├── SpringBootPluginTests.java
│   │           │                   │   └── WarPluginActionIntegrationTests.java
│   │           │                   ├── tasks/
│   │           │                   │   ├── buildinfo/
│   │           │                   │   │   ├── BuildInfoIntegrationTests.java
│   │           │                   │   │   └── BuildInfoTests.java
│   │           │                   │   ├── bundling/
│   │           │                   │   │   ├── AbstractBootArchiveIntegrationTests.java
│   │           │                   │   │   ├── AbstractBootArchiveTests.java
│   │           │                   │   │   ├── BootBuildImageTests.java
│   │           │                   │   │   ├── BootJarIntegrationTests.java
│   │           │                   │   │   ├── BootJarTests.java
│   │           │                   │   │   ├── BootWarIntegrationTests.java
│   │           │                   │   │   ├── BootWarTests.java
│   │           │                   │   │   ├── DefaultTimeZoneOffsetTests.java
│   │           │                   │   │   ├── DockerSpecTests.java
│   │           │                   │   │   ├── MavenPublishingIntegrationTests.java
│   │           │                   │   │   └── PomCondition.java
│   │           │                   │   └── run/
│   │           │                   │       ├── BootRunIntegrationTests.java
│   │           │                   │       └── BootTestRunIntegrationTests.java
│   │           │                   └── testkit/
│   │           │                       ├── PluginClasspathGradleBuild.java
│   │           │                       └── package-info.java
│   │           └── resources/
│   │               ├── com/
│   │               │   └── example/
│   │               │       ├── bootjar/
│   │               │       │   ├── classpath/
│   │               │       │   │   └── BootJarClasspathApplication.java
│   │               │       │   └── main/
│   │               │       │       └── CustomMainClass.java
│   │               │       ├── bootrun/
│   │               │       │   ├── classpath/
│   │               │       │   │   └── BootRunClasspathApplication.java
│   │               │       │   ├── jvmargs/
│   │               │       │   │   └── BootRunJvmArgsApplication.java
│   │               │       │   └── main/
│   │               │       │       └── CustomMainClass.java
│   │               │       ├── boottestrun/
│   │               │       │   ├── classpath/
│   │               │       │   │   └── BootTestRunClasspathApplication.java
│   │               │       │   ├── jvmargs/
│   │               │       │   │   └── BootTestRunJvmArgsApplication.java
│   │               │       │   └── nomain/
│   │               │       │       └── BootTestRunNoMain.java
│   │               │       └── bootwar/
│   │               │           └── main/
│   │               │               └── CustomMainClass.java
│   │               ├── org/
│   │               │   └── springframework/
│   │               │       └── boot/
│   │               │           └── gradle/
│   │               │               ├── dsl/
│   │               │               │   ├── BuildInfoDslIntegrationTests-additionalProperties.gradle
│   │               │               │   ├── BuildInfoDslIntegrationTests-basicJar.gradle
│   │               │               │   ├── BuildInfoDslIntegrationTests-basicWar.gradle
│   │               │               │   ├── BuildInfoDslIntegrationTests-classesDependency.gradle
│   │               │               │   ├── BuildInfoDslIntegrationTests-jarWithCustomName.gradle
│   │               │               │   └── BuildInfoDslIntegrationTests-warWithCustomName.gradle
│   │               │               ├── plugin/
│   │               │               │   ├── ApplicationPluginActionIntegrationTests-applicationNameCanBeUsedToCustomizeDistributionName.gradle
│   │               │               │   ├── ApplicationPluginActionIntegrationTests-scriptsHaveCorrectPermissions.gradle
│   │               │               │   ├── ApplicationPluginActionIntegrationTests-tarDistributionForJarCanBeBuilt.gradle
│   │               │               │   ├── ApplicationPluginActionIntegrationTests-tarDistributionForWarCanBeBuilt.gradle
│   │               │               │   ├── ApplicationPluginActionIntegrationTests-taskConfigurationIsAvoided.gradle
│   │               │               │   ├── ApplicationPluginActionIntegrationTests-zipDistributionForJarCanBeBuilt.gradle
│   │               │               │   ├── ApplicationPluginActionIntegrationTests-zipDistributionForWarCanBeBuilt.gradle
│   │               │               │   ├── ApplicationPluginActionIntegrationTests.gradle
│   │               │               │   ├── CyclonedxPluginActionIntegrationTests-sbomIsIncludedInUberJar.gradle
│   │               │               │   ├── CyclonedxPluginActionIntegrationTests-sbomIsIncludedInUberWar.gradle
│   │               │               │   ├── DependencyManagementPluginActionIntegrationTests-helpfulErrorWhenVersionlessDependencyFailsToResolve.gradle
│   │               │               │   ├── DependencyManagementPluginActionIntegrationTests.gradle
│   │               │               │   ├── JavaPluginActionIntegrationTests-additionalMetadataLocationsConfiguredWhenProcessorIsPresent.gradle
│   │               │               │   ├── JavaPluginActionIntegrationTests-additionalMetadataLocationsNotConfiguredWhenProcessorIsAbsent.gradle
│   │               │               │   ├── JavaPluginActionIntegrationTests-applyingJavaPluginCreatesBootJarTask.gradle
│   │               │               │   ├── JavaPluginActionIntegrationTests-applyingJavaPluginCreatesBootRunTask.gradle
│   │               │               │   ├── JavaPluginActionIntegrationTests-applyingJavaPluginCreatesBootTestRunTask.gradle
│   │               │               │   ├── JavaPluginActionIntegrationTests-applyingJavaPluginCreatesDevelopmentOnlyConfiguration.gradle
│   │               │               │   ├── JavaPluginActionIntegrationTests-applyingJavaPluginCreatesTestAndDevelopmentOnlyConfiguration.gradle
│   │               │               │   ├── JavaPluginActionIntegrationTests-assembleRunsBootJarAndJar.gradle
│   │               │               │   ├── JavaPluginActionIntegrationTests-compileClasspathDoesNotIncludeDevelopmentOnlyDependencies.gradle
│   │               │               │   ├── JavaPluginActionIntegrationTests-compileClasspathDoesNotIncludeTestAndDevelopmentOnlyDependencies.gradle
│   │               │               │   ├── JavaPluginActionIntegrationTests-errorMessageIsHelpfulWhenMainClassCannotBeResolved.gradle
│   │               │               │   ├── JavaPluginActionIntegrationTests-javaCompileTasksCanOverrideDefaultParametersCompilerFlag.gradle
│   │               │               │   ├── JavaPluginActionIntegrationTests-javaCompileTasksUseParametersAndAdditionalCompilerFlags.gradle
│   │               │               │   ├── JavaPluginActionIntegrationTests-javaCompileTasksUseParametersCompilerFlagByDefault.gradle
│   │               │               │   ├── JavaPluginActionIntegrationTests-javaCompileTasksUseUtf8Encoding.gradle
│   │               │               │   ├── JavaPluginActionIntegrationTests-noBootJarTaskWithoutJavaPluginApplied.gradle
│   │               │               │   ├── JavaPluginActionIntegrationTests-noBootRunTaskWithoutJavaPluginApplied.gradle
│   │               │               │   ├── JavaPluginActionIntegrationTests-noBootTestRunTaskWithoutJavaPluginApplied.gradle
│   │               │               │   ├── JavaPluginActionIntegrationTests-productionRuntimeClasspathIsConfiguredWithAttributesThatMatchRuntimeClasspath.gradle
│   │               │               │   ├── JavaPluginActionIntegrationTests-productionRuntimeClasspathIsConfiguredWithResolvabilityAndConsumabilityThatMatchesRuntimeClasspath.gradle
│   │               │               │   ├── JavaPluginActionIntegrationTests-runtimeClasspathIncludesDevelopmentOnlyDependencies.gradle
│   │               │               │   ├── JavaPluginActionIntegrationTests-runtimeClasspathIncludesTestAndDevelopmentOnlyDependencies.gradle
│   │               │               │   ├── JavaPluginActionIntegrationTests-taskConfigurationIsAvoided.gradle
│   │               │               │   ├── JavaPluginActionIntegrationTests-testCompileClasspathDoesNotIncludeDevelopmentOnlyDependencies.gradle
│   │               │               │   ├── JavaPluginActionIntegrationTests-testCompileClasspathIncludesTestAndDevelopmentOnlyDependencies.gradle
│   │               │               │   ├── JavaPluginActionIntegrationTests-testRuntimeClasspathDoesNotIncludeDevelopmentOnlyDependencies.gradle
│   │               │               │   ├── JavaPluginActionIntegrationTests-testRuntimeClasspathIncludesTestAndDevelopmentOnlyDependencies.gradle
│   │               │               │   ├── KotlinPluginActionIntegrationTests-compileAotJavaHasTransitiveRuntimeDependenciesOnItsClasspathWhenUsingKotlin.gradle
│   │               │               │   ├── KotlinPluginActionIntegrationTests-compileAotTestJavaHasTransitiveRuntimeDependenciesOnItsClasspathWhenUsingKotlin.gradle
│   │               │               │   ├── KotlinPluginActionIntegrationTests-kotlinCompileTasksCanOverrideDefaultJavaParametersFlag.gradle
│   │               │               │   ├── KotlinPluginActionIntegrationTests-kotlinCompileTasksUseJavaParametersFlagByDefault.gradle
│   │               │               │   ├── KotlinPluginActionIntegrationTests-kotlinVersionPropertyIsSet.gradle
│   │               │               │   ├── KotlinPluginActionIntegrationTests-noKotlinVersionPropertyWithoutKotlinPlugin.gradle
│   │               │               │   ├── KotlinPluginActionIntegrationTests-taskConfigurationIsAvoided.gradle
│   │               │               │   ├── MavenPluginActionIntegrationTests.gradle
│   │               │               │   ├── NativeImagePluginActionIntegrationTests-applyingNativeImagePluginAppliesAotPlugin.gradle
│   │               │               │   ├── NativeImagePluginActionIntegrationTests-classesGeneratedDuringAotProcessingAreOnTheNativeImageClasspath.gradle
│   │               │               │   ├── NativeImagePluginActionIntegrationTests-classesGeneratedDuringAotTestProcessingAreOnTheTestNativeImageClasspath.gradle
│   │               │               │   ├── NativeImagePluginActionIntegrationTests-developmentOnlyDependenciesDoNotAppearInNativeImageClasspath.gradle
│   │               │               │   ├── NativeImagePluginActionIntegrationTests-nativeEntryIsAddedToManifest.gradle
│   │               │               │   ├── NativeImagePluginActionIntegrationTests-reachabilityMetadataConfigurationFilesAreCopiedToJar.gradle
│   │               │               │   ├── NativeImagePluginActionIntegrationTests-reachabilityMetadataConfigurationFilesFromFileRepositoryAreCopiedToJar.gradle
│   │               │               │   ├── NativeImagePluginActionIntegrationTests-testAndDevelopmentOnlyDependenciesDoNotAppearInNativeImageClasspath.gradle
│   │               │               │   ├── OnlyDependencyManagementIntegrationTests.gradle
│   │               │               │   ├── ProtobufPluginActionIntegrationTests-usesVersionOfGrpcPluginDependencyWhenSpecified.gradle
│   │               │               │   ├── ProtobufPluginActionIntegrationTests-usesVersionOfProtocDependencyWhenSpecified.gradle
│   │               │               │   ├── ProtobufPluginActionIntegrationTests.gradle
│   │               │               │   ├── SpringBootAotPluginIntegrationTests-applyingAotPluginCreatesProcessAotTask.gradle
│   │               │               │   ├── SpringBootAotPluginIntegrationTests-applyingAotPluginCreatesProcessTestAotTask.gradle
│   │               │               │   ├── SpringBootAotPluginIntegrationTests-applyingAotPluginDoesNotPreventConfigurationOfJavaToolchainLanguageVersion.gradle
│   │               │               │   ├── SpringBootAotPluginIntegrationTests-noProcessAotTaskWithoutAotPluginApplied.gradle
│   │               │               │   ├── SpringBootAotPluginIntegrationTests-noProcessTestAotTaskWithoutAotPluginApplied.gradle
│   │               │               │   ├── SpringBootAotPluginIntegrationTests-processAotDoesNotHaveDevelopmentOnlyDependenciesOnItsClasspath.gradle
│   │               │               │   ├── SpringBootAotPluginIntegrationTests-processAotDoesNotHaveTestAndDevelopmentOnlyDependenciesOnItsClasspath.gradle
│   │               │               │   ├── SpringBootAotPluginIntegrationTests-processAotHasLibraryResourcesOnItsClasspath.gradle
│   │               │               │   ├── SpringBootAotPluginIntegrationTests-processAotHasTransitiveRuntimeDependenciesOnItsClasspath.gradle
│   │               │               │   ├── SpringBootAotPluginIntegrationTests-processAotIsSkippedWhenProjectHasNoMainSource.gradle
│   │               │               │   ├── SpringBootAotPluginIntegrationTests-processAotRunsWhenProjectHasMainSource.gradle
│   │               │               │   ├── SpringBootAotPluginIntegrationTests-processTestAotDoesNotHaveDevelopmentOnlyDependenciesOnItsClasspath.gradle
│   │               │               │   ├── SpringBootAotPluginIntegrationTests-processTestAotHasLibraryResourcesOnItsClasspath.gradle
│   │               │               │   ├── SpringBootAotPluginIntegrationTests-processTestAotHasTestAndDevelopmentOnlyDependenciesOnItsClasspath.gradle
│   │               │               │   ├── SpringBootAotPluginIntegrationTests-processTestAotHasTransitiveRuntimeDependenciesOnItsClasspath.gradle
│   │               │               │   ├── SpringBootAotPluginIntegrationTests-processTestAotIsSkippedWhenProjectHasNoTestSource.gradle
│   │               │               │   ├── SpringBootPluginIntegrationTests-unresolvedDependenciesAreAnalyzedWhenDependencyResolutionFails.gradle
│   │               │               │   ├── SpringBootPluginIntegrationTests.gradle
│   │               │               │   ├── WarPluginActionIntegrationTests-assembleRunsBootWarAndWar.gradle
│   │               │               │   ├── WarPluginActionIntegrationTests-taskConfigurationIsAvoided.gradle
│   │               │               │   └── WarPluginActionIntegrationTests.gradle
│   │               │               └── tasks/
│   │               │                   ├── buildinfo/
│   │               │                   │   ├── BuildInfoIntegrationTests-basicExecution.gradle
│   │               │                   │   ├── BuildInfoIntegrationTests-defaultValues.gradle
│   │               │                   │   ├── BuildInfoIntegrationTests-excludeProperties.gradle
│   │               │                   │   ├── BuildInfoIntegrationTests-notUpToDateWhenExecutedTwiceAsTimeChanges.gradle
│   │               │                   │   ├── BuildInfoIntegrationTests-notUpToDateWhenExecutedTwiceWithFixedTimeAndChangedGradlePropertiesProjectVersion.gradle
│   │               │                   │   ├── BuildInfoIntegrationTests-notUpToDateWhenExecutedTwiceWithFixedTimeAndChangedProjectVersion.gradle
│   │               │                   │   ├── BuildInfoIntegrationTests-reproducibleOutputWithFixedTime.gradle
│   │               │                   │   └── BuildInfoIntegrationTests-upToDateWhenExecutedTwiceWithFixedTime.gradle
│   │               │                   ├── bundling/
│   │               │                   │   ├── BootJarIntegrationTests-applicationPluginMainClassNameIsUsed.gradle
│   │               │                   │   ├── BootJarIntegrationTests-classesFromASecondarySourceSetCanBeIncludedInTheArchive.gradle
│   │               │                   │   ├── BootJarIntegrationTests-customLayers.gradle
│   │               │                   │   ├── BootJarIntegrationTests-developmentOnlyDependenciesAreNotIncludedInTheArchive.gradle
│   │               │                   │   ├── BootJarIntegrationTests-developmentOnlyDependenciesAreNotIncludedInTheArchiveByDefault.gradle
│   │               │                   │   ├── BootJarIntegrationTests-developmentOnlyDependenciesCanBeIncludedInTheArchive.gradle
│   │               │                   │   ├── BootJarIntegrationTests-dirModeAndFileModeAreApplied.gradle
│   │               │                   │   ├── BootJarIntegrationTests-duplicatesAreHandledGracefully.gradle
│   │               │                   │   ├── BootJarIntegrationTests-explodedApplicationClasspath.gradle
│   │               │                   │   ├── BootJarIntegrationTests-implicitLayers.gradle
│   │               │                   │   ├── BootJarIntegrationTests-jarTypeFilteringIsApplied.gradle
│   │               │                   │   ├── BootJarIntegrationTests-layersWithCustomSourceSet.gradle
│   │               │                   │   ├── BootJarIntegrationTests-multiModuleCustomLayers.gradle
│   │               │                   │   ├── BootJarIntegrationTests-multiModuleImplicitLayers.gradle
│   │               │                   │   ├── BootJarIntegrationTests-notUpToDateWhenBuiltWithToolsAndThenWithoutTools.gradle
│   │               │                   │   ├── BootJarIntegrationTests-notUpToDateWhenBuiltWithoutLayersAndThenWithLayers.gradle
│   │               │                   │   ├── BootJarIntegrationTests-packagedApplicationClasspath.gradle
│   │               │                   │   ├── BootJarIntegrationTests-reproducibleArchive.gradle
│   │               │                   │   ├── BootJarIntegrationTests-signed.gradle
│   │               │                   │   ├── BootJarIntegrationTests-springBootExtensionMainClassNameIsUsed.gradle
│   │               │                   │   ├── BootJarIntegrationTests-startClassIsSetByResolvingTheMainClass.gradle
│   │               │                   │   ├── BootJarIntegrationTests-testAndDevelopmentOnlyDependenciesAreNotIncludedInTheArchiveByDefault.gradle
│   │               │                   │   ├── BootJarIntegrationTests-testAndDevelopmentOnlyDependenciesCanBeIncludedInTheArchive.gradle
│   │               │                   │   ├── BootJarIntegrationTests-upToDateWhenBuiltTwice.gradle
│   │               │                   │   ├── BootJarIntegrationTests-upToDateWhenBuiltWithDefaultLayeredAndThenWithExplicitLayered.gradle
│   │               │                   │   ├── BootJarIntegrationTests-versionMismatchBetweenTransitiveDevelopmentOnlyImplementationDependenciesDoesNotRemoveDependencyFromTheArchive.gradle
│   │               │                   │   ├── BootJarIntegrationTests-whenAResolvableCopyOfAnUnresolvableConfigurationIsResolvedThenResolutionSucceeds.gradle
│   │               │                   │   ├── BootJarIntegrationTests.gradle
│   │               │                   │   ├── BootWarIntegrationTests-applicationPluginMainClassNameIsUsed.gradle
│   │               │                   │   ├── BootWarIntegrationTests-classesFromASecondarySourceSetCanBeIncludedInTheArchive.gradle
│   │               │                   │   ├── BootWarIntegrationTests-customLayers.gradle
│   │               │                   │   ├── BootWarIntegrationTests-developmentOnlyDependenciesAreNotIncludedInTheArchiveByDefault.gradle
│   │               │                   │   ├── BootWarIntegrationTests-developmentOnlyDependenciesCanBeIncludedInTheArchive.gradle
│   │               │                   │   ├── BootWarIntegrationTests-dirModeAndFileModeAreApplied.gradle
│   │               │                   │   ├── BootWarIntegrationTests-duplicatesAreHandledGracefully.gradle
│   │               │                   │   ├── BootWarIntegrationTests-implicitLayers.gradle
│   │               │                   │   ├── BootWarIntegrationTests-jarTypeFilteringIsApplied.gradle
│   │               │                   │   ├── BootWarIntegrationTests-layersWithCustomSourceSet.gradle
│   │               │                   │   ├── BootWarIntegrationTests-multiModuleCustomLayers.gradle
│   │               │                   │   ├── BootWarIntegrationTests-multiModuleImplicitLayers.gradle
│   │               │                   │   ├── BootWarIntegrationTests-notUpToDateWhenBuiltWithToolsAndThenWithoutTools.gradle
│   │               │                   │   ├── BootWarIntegrationTests-notUpToDateWhenBuiltWithoutLayersAndThenWithLayers.gradle
│   │               │                   │   ├── BootWarIntegrationTests-reproducibleArchive.gradle
│   │               │                   │   ├── BootWarIntegrationTests-signed.gradle
│   │               │                   │   ├── BootWarIntegrationTests-springBootExtensionMainClassNameIsUsed.gradle
│   │               │                   │   ├── BootWarIntegrationTests-startClassIsSetByResolvingTheMainClass.gradle
│   │               │                   │   ├── BootWarIntegrationTests-testAndDevelopmentOnlyDependenciesAreNotIncludedInTheArchiveByDefault.gradle
│   │               │                   │   ├── BootWarIntegrationTests-testAndDevelopmentOnlyDependenciesCanBeIncludedInTheArchive.gradle
│   │               │                   │   ├── BootWarIntegrationTests-upToDateWhenBuiltTwice.gradle
│   │               │                   │   ├── BootWarIntegrationTests-upToDateWhenBuiltWithDefaultLayeredAndThenWithExplicitLayered.gradle
│   │               │                   │   ├── BootWarIntegrationTests-versionMismatchBetweenTransitiveDevelopmentOnlyImplementationDependenciesDoesNotRemoveDependencyFromTheArchive.gradle
│   │               │                   │   ├── BootWarIntegrationTests.gradle
│   │               │                   │   ├── MavenIntegrationTests-bootJarCanBeUploaded.gradle
│   │               │                   │   ├── MavenIntegrationTests-bootWarCanBeUploaded.gradle
│   │               │                   │   ├── MavenPublishingIntegrationTests-bootJarCanBePublished.gradle
│   │               │                   │   └── MavenPublishingIntegrationTests-bootWarCanBePublished.gradle
│   │               │                   └── run/
│   │               │                       ├── BootRunIntegrationTests-applicationPluginJvmArgumentsAreUsed.gradle
│   │               │                       ├── BootRunIntegrationTests-applicationPluginMainClassNameIsNotUsedWhenItIsNull.gradle
│   │               │                       ├── BootRunIntegrationTests-applicationPluginMainClassNameIsUsed.gradle
│   │               │                       ├── BootRunIntegrationTests-basicExecution.gradle
│   │               │                       ├── BootRunIntegrationTests-classesFromASecondarySourceSetCanBeOnTheClasspath.gradle
│   │               │                       ├── BootRunIntegrationTests-defaultJvmArgs.gradle
│   │               │                       ├── BootRunIntegrationTests-developmentOnlyDependenciesAreOnTheClasspath.gradle
│   │               │                       ├── BootRunIntegrationTests-jarTypeFilteringIsAppliedToTheClasspath.gradle
│   │               │                       ├── BootRunIntegrationTests-optimizedLaunchDisabledJvmArgs.gradle
│   │               │                       ├── BootRunIntegrationTests-sourceResourcesCanBeUsed.gradle
│   │               │                       ├── BootRunIntegrationTests-springBootExtensionMainClassNameIsUsed.gradle
│   │               │                       ├── BootRunIntegrationTests-testAndDevelopmentOnlyDependenciesAreOnTheClasspath.gradle
│   │               │                       ├── BootTestRunIntegrationTests-applicationPluginJvmArgumentsAreUsed.gradle
│   │               │                       ├── BootTestRunIntegrationTests-basicExecution.gradle
│   │               │                       ├── BootTestRunIntegrationTests-defaultJvmArgs.gradle
│   │               │                       ├── BootTestRunIntegrationTests-developmentOnlyDependenciesAreNotOnTheClasspath.gradle
│   │               │                       ├── BootTestRunIntegrationTests-failsGracefullyWhenNoTestMainMethodIsFound.gradle
│   │               │                       ├── BootTestRunIntegrationTests-jarTypeFilteringIsAppliedToTheClasspath.gradle
│   │               │                       ├── BootTestRunIntegrationTests-optimizedLaunchDisabledJvmArgs.gradle
│   │               │                       └── BootTestRunIntegrationTests-testAndDevelopmentOnlyDependenciesAreOnTheClasspath.gradle
│   │               ├── reachability-metadata-repository/
│   │               │   ├── ch.qos.logback/
│   │               │   │   └── logback-classic/
│   │               │   │       ├── 1.2.11/
│   │               │   │       │   ├── index.json
│   │               │   │       │   └── reflect-config.json
│   │               │   │       └── index.json
│   │               │   ├── index.json
│   │               │   ├── org.jline/
│   │               │   │   └── jline/
│   │               │   │       ├── 3.21.0/
│   │               │   │       │   ├── index.json
│   │               │   │       │   ├── jni-config.json
│   │               │   │       │   ├── proxy-config.json
│   │               │   │       │   ├── reflect-config.json
│   │               │   │       │   └── resource-config.json
│   │               │   │       └── index.json
│   │               │   └── schemas/
│   │               │       ├── library-and-framework-list-schema-v1.0.0.json
│   │               │       ├── metadata-library-index-schema-v1.0.0.json
│   │               │       └── metadata-root-index-schema-v1.0.0.json
│   │               └── repository/
│   │                   ├── com/
│   │                   │   └── example/
│   │                   │       └── library/
│   │                   │           └── 1.0-SNAPSHOT/
│   │                   │               └── library-1.0-SNAPSHOT.pom
│   │                   ├── commons-io-consumer/
│   │                   │   ├── one/
│   │                   │   │   └── 1.0/
│   │                   │   │       └── one-1.0.pom
│   │                   │   └── two/
│   │                   │       └── 1.0/
│   │                   │           └── two-1.0.pom
│   │                   └── org/
│   │                       └── springframework/
│   │                           └── boot/
│   │                               └── spring-boot-dependencies/
│   │                                   └── TEST-SNAPSHOT/
│   │                                       └── spring-boot-dependencies-TEST-SNAPSHOT.pom
│   └── spring-boot-maven-plugin/
│       ├── build.gradle
│       └── src/
│           ├── dockerTest/
│           │   ├── java/
│           │   │   └── org/
│           │   │       └── springframework/
│           │   │           └── boot/
│           │   │               └── maven/
│           │   │                   ├── BuildImageRegistryIntegrationTests.java
│           │   │                   └── BuildImageTests.java
│           │   └── projects/
│           │       ├── build-image/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── build-image-app-dir/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── build-image-bad-buildpack/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── build-image-bind-caches/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── build-image-bindings/
│           │       │   ├── bindings/
│           │       │   │   └── ca-certificates/
│           │       │   │       ├── test.crt
│           │       │   │       └── type
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── build-image-builder-error/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── build-image-caches-multiple/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── build-image-classifier/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── build-image-classifier-source/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── build-image-classifier-source-with-repackage/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── build-image-classifier-with-repackage/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── build-image-cmd-line/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── build-image-created-date/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── build-image-current-created-date/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── build-image-custom-builder/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── build-image-custom-buildpacks/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── build-image-custom-name/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── build-image-empty-env-entry/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── build-image-final-name/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── build-image-fork-classifier/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── build-image-multi-module/
│           │       │   ├── app/
│           │       │   │   ├── pom.xml
│           │       │   │   └── src/
│           │       │   │       └── main/
│           │       │   │           └── java/
│           │       │   │               └── org/
│           │       │   │                   └── test/
│           │       │   │                       └── SampleApplication.java
│           │       │   ├── library/
│           │       │   │   ├── pom.xml
│           │       │   │   └── src/
│           │       │   │       └── main/
│           │       │   │           └── java/
│           │       │   │               └── org/
│           │       │   │                   └── test/
│           │       │   │                       └── SampleLibrary.java
│           │       │   └── pom.xml
│           │       ├── build-image-network/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── build-image-platform-linux-arm/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── build-image-publish/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── build-image-security-opts/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── build-image-tags/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── build-image-trust-builder/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── build-image-volume-caches/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── build-image-war-packaging/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── build-image-with-repackage/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       └── build-image-zip-packaging/
│           │           ├── pom.xml
│           │           └── src/
│           │               └── main/
│           │                   └── java/
│           │                       └── org/
│           │                           └── test/
│           │                               └── SampleApplication.java
│           ├── docs/
│           │   └── antora/
│           │       ├── antora.yml
│           │       ├── local-nav.adoc
│           │       └── modules/
│           │           └── maven-plugin/
│           │               ├── examples/
│           │               │   ├── aot/
│           │               │   │   └── pom.xml
│           │               │   ├── aot-native/
│           │               │   │   └── pom.xml
│           │               │   ├── aot-native-profile-buildpacks/
│           │               │   │   └── pom.xml
│           │               │   ├── aot-native-profile-nbt/
│           │               │   │   └── pom.xml
│           │               │   ├── build-info/
│           │               │   │   └── pom.xml
│           │               │   ├── getting-started/
│           │               │   │   ├── plugin-repositories-pom.xml
│           │               │   │   └── pom.xml
│           │               │   ├── integration-tests/
│           │               │   │   ├── customize-jmx-port-pom.xml
│           │               │   │   ├── failsafe-pom.xml
│           │               │   │   ├── pom.xml
│           │               │   │   ├── random-port-pom.xml
│           │               │   │   └── skip-integration-tests-pom.xml
│           │               │   ├── packaging/
│           │               │   │   ├── classified-artifact-pom.xml
│           │               │   │   ├── custom-layers-classpath-pom.xml
│           │               │   │   ├── custom-layers-pom.xml
│           │               │   │   ├── custom-layout-pom.xml
│           │               │   │   ├── custom-name-pom.xml
│           │               │   │   ├── different-classifier-pom.xml
│           │               │   │   ├── disable-layers-pom.xml
│           │               │   │   ├── exclude-artifact-group-pom.xml
│           │               │   │   ├── exclude-artifact-pom.xml
│           │               │   │   ├── exclude-dependency-pom.xml
│           │               │   │   ├── jar-plugin-first-pom.xml
│           │               │   │   ├── layers-configuration.xml
│           │               │   │   ├── layers.xml
│           │               │   │   ├── local-repackaged-artifact-pom.xml
│           │               │   │   ├── non-default-pom.xml
│           │               │   │   ├── repackage-configuration-pom.xml
│           │               │   │   └── repackage-pom.xml
│           │               │   ├── packaging-oci-image/
│           │               │   │   ├── bind-caches-pom.xml
│           │               │   │   ├── build-image-example-builder-configuration-pom.xml
│           │               │   │   ├── buildpacks-pom.xml
│           │               │   │   ├── caches-pom.xml
│           │               │   │   ├── custom-image-builder-pom.xml
│           │               │   │   ├── custom-image-name-pom.xml
│           │               │   │   ├── docker-colima-pom.xml
│           │               │   │   ├── docker-minikube-pom.xml
│           │               │   │   ├── docker-podman-pom.xml
│           │               │   │   ├── docker-pom-authentication-command-line.xml
│           │               │   │   ├── docker-pom.xml
│           │               │   │   ├── docker-registry-authentication-pom.xml
│           │               │   │   ├── docker-token-authentication-pom.xml
│           │               │   │   ├── paketo-pom.xml
│           │               │   │   ├── pom.xml
│           │               │   │   └── runtime-jvm-configuration-pom.xml
│           │               │   ├── running/
│           │               │   │   ├── active-profiles-pom.xml
│           │               │   │   ├── application-arguments-pom.xml
│           │               │   │   ├── debug-pom.xml
│           │               │   │   ├── devtools-pom.xml
│           │               │   │   ├── environment-variables-pom.xml
│           │               │   │   ├── hot-refresh-pom.xml
│           │               │   │   └── system-properties-pom.xml
│           │               │   └── using/
│           │               │       ├── default-and-override-pom.xml
│           │               │       ├── different-versions-pom.xml
│           │               │       ├── no-starter-parent-override-dependencies-pom.xml
│           │               │       └── no-starter-parent-pom.xml
│           │               ├── pages/
│           │               │   ├── aot.adoc
│           │               │   ├── build-image.adoc
│           │               │   ├── build-info.adoc
│           │               │   ├── getting-started.adoc
│           │               │   ├── goals.adoc
│           │               │   ├── help.adoc
│           │               │   ├── index.adoc
│           │               │   ├── integration-tests.adoc
│           │               │   ├── packaging.adoc
│           │               │   ├── run.adoc
│           │               │   └── using.adoc
│           │               └── partials/
│           │                   └── nav-maven-plugin.adoc
│           ├── intTest/
│           │   ├── java/
│           │   │   └── org/
│           │   │       └── springframework/
│           │   │           └── boot/
│           │   │               └── maven/
│           │   │                   ├── AbstractArchiveIntegrationTests.java
│           │   │                   ├── AotTests.java
│           │   │                   ├── BuildInfoIntegrationTests.java
│           │   │                   ├── EclipseM2eIntegrationTests.java
│           │   │                   ├── JarIntegrationTests.java
│           │   │                   ├── MavenBuild.java
│           │   │                   ├── MavenBuildExtension.java
│           │   │                   ├── RunIntegrationTests.java
│           │   │                   ├── StartStopIntegrationTests.java
│           │   │                   ├── TestRunIntegrationTests.java
│           │   │                   ├── Versions.java
│           │   │                   └── WarIntegrationTests.java
│           │   └── projects/
│           │       ├── aot/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── aot-arguments/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       ├── SampleApplication.java
│           │       │                       └── TestProfileConfiguration.java
│           │       ├── aot-class-proxy/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       ├── SampleApplication.java
│           │       │                       └── SampleRunner.java
│           │       ├── aot-compiler-arguments/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── aot-exclude-devtools/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── aot-jdk-proxy/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── aot-jvm-arguments/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       ├── SampleApplication.java
│           │       │                       └── TestProfileConfiguration.java
│           │       ├── aot-module-info/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               ├── module-info.java
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── aot-profile/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       ├── SampleApplication.java
│           │       │                       └── TestProfileConfiguration.java
│           │       ├── aot-release/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── aot-resource-generation/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           ├── java/
│           │       │           │   └── org/
│           │       │           │       └── test/
│           │       │           │           ├── ResourceRegisteringAotProcessor.java
│           │       │           │           └── SampleApplication.java
│           │       │           └── resources/
│           │       │               └── META-INF/
│           │       │                   └── spring/
│           │       │                       └── aot.factories
│           │       ├── aot-system-properties/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       ├── SampleApplication.java
│           │       │                       └── TestProfileConfiguration.java
│           │       ├── aot-test/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       ├── main/
│           │       │       │   └── java/
│           │       │       │       └── org/
│           │       │       │           └── test/
│           │       │       │               └── SampleApplication.java
│           │       │       └── test/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplicationTests.java
│           │       ├── aot-test-exclude-devtools/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       ├── main/
│           │       │       │   └── java/
│           │       │       │       └── org/
│           │       │       │           └── test/
│           │       │       │               └── SampleApplication.java
│           │       │       └── test/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplicationTests.java
│           │       ├── aot-test-skip/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       ├── main/
│           │       │       │   └── java/
│           │       │       │       └── org/
│           │       │       │           └── test/
│           │       │       │               └── SampleApplication.java
│           │       │       └── test/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplicationTests.java
│           │       ├── build-info/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── build-info-additional-properties/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── build-info-custom-build-time/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── build-info-custom-file/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── build-info-disable-build-time/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── build-info-exclude-build-properties/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── build-info-exclude-build-time/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── build-info-reproducible/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── build-info-reproducible-epoch-seconds/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── jar/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── jar-attach-disabled/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── jar-classifier-main/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── jar-classifier-main-attach-disabled/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── jar-classifier-source/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── jar-classifier-source-attach-disabled/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── jar-create-dir/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── jar-custom-dir/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── jar-custom-layout/
│           │       │   ├── custom/
│           │       │   │   ├── pom.xml
│           │       │   │   └── src/
│           │       │   │       └── main/
│           │       │   │           └── java/
│           │       │   │               └── org/
│           │       │   │                   └── test/
│           │       │   │                       └── SampleApplication.java
│           │       │   ├── default/
│           │       │   │   ├── pom.xml
│           │       │   │   └── src/
│           │       │   │       └── main/
│           │       │   │           └── java/
│           │       │   │               └── org/
│           │       │   │                   └── test/
│           │       │   │                       └── SampleApplication.java
│           │       │   ├── layout/
│           │       │   │   ├── pom.xml
│           │       │   │   └── src/
│           │       │   │       └── main/
│           │       │   │           ├── java/
│           │       │   │           │   └── smoketest/
│           │       │   │           │       └── layout/
│           │       │   │           │           ├── SampleLayout.java
│           │       │   │           │           └── SampleLayoutFactory.java
│           │       │   │           └── resources/
│           │       │   │               └── META-INF/
│           │       │   │                   └── spring.factories
│           │       │   └── pom.xml
│           │       ├── jar-exclude-entry/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── jar-exclude-group/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── jar-include-entry/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── jar-layered/
│           │       │   ├── jar/
│           │       │   │   ├── pom.xml
│           │       │   │   └── src/
│           │       │   │       └── main/
│           │       │   │           └── java/
│           │       │   │               └── org/
│           │       │   │                   └── test/
│           │       │   │                       └── SampleApplication.java
│           │       │   ├── jar-release/
│           │       │   │   └── pom.xml
│           │       │   ├── jar-snapshot/
│           │       │   │   └── pom.xml
│           │       │   └── pom.xml
│           │       ├── jar-layered-custom/
│           │       │   ├── jar/
│           │       │   │   ├── pom.xml
│           │       │   │   └── src/
│           │       │   │       ├── layers.xml
│           │       │   │       └── main/
│           │       │   │           ├── java/
│           │       │   │           │   └── org/
│           │       │   │           │       └── test/
│           │       │   │           │           └── SampleApplication.java
│           │       │   │           └── resources/
│           │       │   │               └── application.yml
│           │       │   ├── jar-classifier/
│           │       │   │   └── pom.xml
│           │       │   ├── jar-release/
│           │       │   │   └── pom.xml
│           │       │   ├── jar-snapshot/
│           │       │   │   └── pom.xml
│           │       │   └── pom.xml
│           │       ├── jar-layered-custom-name/
│           │       │   ├── jar/
│           │       │   │   ├── pom.xml
│           │       │   │   └── src/
│           │       │   │       └── main/
│           │       │   │           ├── java/
│           │       │   │           │   └── org/
│           │       │   │           │       └── test/
│           │       │   │           │           └── SampleApplication.java
│           │       │   │           └── resources/
│           │       │   │               └── application.yml
│           │       │   ├── jar-classifier/
│           │       │   │   └── pom.xml
│           │       │   ├── jar-layers-configuration/
│           │       │   │   ├── pom.xml
│           │       │   │   └── src/
│           │       │   │       └── main/
│           │       │   │           └── resources/
│           │       │   │               └── META-INF/
│           │       │   │                   └── spring/
│           │       │   │                       └── layers/
│           │       │   │                           └── custom.xml
│           │       │   ├── jar-release/
│           │       │   │   └── pom.xml
│           │       │   ├── jar-snapshot/
│           │       │   │   └── pom.xml
│           │       │   └── pom.xml
│           │       ├── jar-layered-disabled/
│           │       │   ├── jar/
│           │       │   │   ├── pom.xml
│           │       │   │   └── src/
│           │       │   │       └── main/
│           │       │   │           └── java/
│           │       │   │               └── org/
│           │       │   │                   └── test/
│           │       │   │                       └── SampleApplication.java
│           │       │   ├── jar-release/
│           │       │   │   └── pom.xml
│           │       │   ├── jar-snapshot/
│           │       │   │   └── pom.xml
│           │       │   └── pom.xml
│           │       ├── jar-lib-name-conflict/
│           │       │   ├── acme-lib/
│           │       │   │   └── pom.xml
│           │       │   ├── another-acme-lib/
│           │       │   │   └── pom.xml
│           │       │   ├── pom.xml
│           │       │   └── test-project/
│           │       │       ├── pom.xml
│           │       │       └── src/
│           │       │           └── main/
│           │       │               └── java/
│           │       │                   └── org/
│           │       │                       └── test/
│           │       │                           └── SampleApplication.java
│           │       ├── jar-no-tools/
│           │       │   ├── jar/
│           │       │   │   ├── pom.xml
│           │       │   │   └── src/
│           │       │   │       └── main/
│           │       │   │           └── java/
│           │       │   │               └── org/
│           │       │   │                   └── test/
│           │       │   │                       └── SampleApplication.java
│           │       │   ├── jar-release/
│           │       │   │   └── pom.xml
│           │       │   ├── jar-snapshot/
│           │       │   │   └── pom.xml
│           │       │   └── pom.xml
│           │       ├── jar-optional-default/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── jar-optional-exclude/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── jar-optional-include/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── jar-output-timestamp/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── jar-pom/
│           │       │   └── pom.xml
│           │       ├── jar-signed/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── jar-skip/
│           │       │   └── pom.xml
│           │       ├── jar-system-scope/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── jar-system-scope-default/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── jar-test-scope/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── jar-with-kotlin-module/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── kotlin/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.kt
│           │       ├── jar-with-layout-property/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── jar-with-unpack/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── jar-with-zip-layout/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── run/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── run-additional-classpath-directory/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           ├── additional-elements/
│           │       │           │   ├── another/
│           │       │           │   │   └── two.txt
│           │       │           │   └── one.txt
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── run-additional-classpath-jar/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── run-arguments/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── run-arguments-commandline/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── run-envargs/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── run-exclude/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── run-fork/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── run-jvm-system-props/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── run-jvmargs/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── run-jvmargs-commandline/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── run-profiles/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── run-toolchains/
│           │       │   ├── jdkHome/
│           │       │   │   └── bin/
│           │       │   │       └── java
│           │       │   ├── pom.xml
│           │       │   ├── src/
│           │       │   │   └── main/
│           │       │   │       └── java/
│           │       │   │           └── org/
│           │       │   │               └── test/
│           │       │   │                   └── SampleApplication.java
│           │       │   └── toolchains.xml
│           │       ├── run-use-test-classpath/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── run-working-directory/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── settings.xml
│           │       ├── start-stop/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── start-stop-skip/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── test-run/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       ├── main/
│           │       │       │   └── java/
│           │       │       │       └── org/
│           │       │       │           └── test/
│           │       │       │               └── SampleApplication.java
│           │       │       └── test/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── TestSampleApplication.java
│           │       ├── war/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           ├── java/
│           │       │           │   └── org/
│           │       │           │       └── test/
│           │       │           │           └── SampleApplication.java
│           │       │           └── webapp/
│           │       │               └── index.html
│           │       ├── war-exclude-entry/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           ├── java/
│           │       │           │   └── org/
│           │       │           │       └── test/
│           │       │           │           └── SampleApplication.java
│           │       │           └── webapp/
│           │       │               └── index.html
│           │       ├── war-layered/
│           │       │   ├── jar-release/
│           │       │   │   └── pom.xml
│           │       │   ├── jar-snapshot/
│           │       │   │   └── pom.xml
│           │       │   ├── pom.xml
│           │       │   └── war/
│           │       │       ├── pom.xml
│           │       │       └── src/
│           │       │           └── main/
│           │       │               ├── java/
│           │       │               │   └── org/
│           │       │               │       └── test/
│           │       │               │           └── SampleApplication.java
│           │       │               └── webapp/
│           │       │                   └── index.html
│           │       ├── war-layered-custom/
│           │       │   ├── jar-classifier/
│           │       │   │   └── pom.xml
│           │       │   ├── jar-release/
│           │       │   │   └── pom.xml
│           │       │   ├── jar-snapshot/
│           │       │   │   └── pom.xml
│           │       │   ├── pom.xml
│           │       │   └── war/
│           │       │       ├── pom.xml
│           │       │       └── src/
│           │       │           ├── layers.xml
│           │       │           └── main/
│           │       │               ├── java/
│           │       │               │   └── org/
│           │       │               │       └── test/
│           │       │               │           └── SampleApplication.java
│           │       │               └── webapp/
│           │       │                   └── index.html
│           │       ├── war-layered-disabled/
│           │       │   ├── jar-release/
│           │       │   │   └── pom.xml
│           │       │   ├── jar-snapshot/
│           │       │   │   └── pom.xml
│           │       │   ├── pom.xml
│           │       │   └── war/
│           │       │       ├── pom.xml
│           │       │       └── src/
│           │       │           └── main/
│           │       │               ├── java/
│           │       │               │   └── org/
│           │       │               │       └── test/
│           │       │               │           └── SampleApplication.java
│           │       │               └── webapp/
│           │       │                   └── index.html
│           │       ├── war-no-tools/
│           │       │   ├── jar-release/
│           │       │   │   └── pom.xml
│           │       │   ├── jar-snapshot/
│           │       │   │   └── pom.xml
│           │       │   ├── pom.xml
│           │       │   └── war/
│           │       │       ├── pom.xml
│           │       │       └── src/
│           │       │           └── main/
│           │       │               ├── java/
│           │       │               │   └── org/
│           │       │               │       └── test/
│           │       │               │           └── SampleApplication.java
│           │       │               └── webapp/
│           │       │                   └── index.html
│           │       ├── war-output-timestamp/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           ├── java/
│           │       │           │   └── org/
│           │       │           │       └── test/
│           │       │           │           └── SampleApplication.java
│           │       │           └── webapp/
│           │       │               └── index.html
│           │       ├── war-reactor/
│           │       │   ├── jar/
│           │       │   │   └── pom.xml
│           │       │   ├── pom.xml
│           │       │   └── war/
│           │       │       ├── pom.xml
│           │       │       └── src/
│           │       │           └── main/
│           │       │               ├── java/
│           │       │               │   └── com/
│           │       │               │       └── example/
│           │       │               │           └── SampleApplication.java
│           │       │               └── webapp/
│           │       │                   └── index.html
│           │       ├── war-signed/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           └── java/
│           │       │               └── org/
│           │       │                   └── test/
│           │       │                       └── SampleApplication.java
│           │       ├── war-system-scope/
│           │       │   ├── pom.xml
│           │       │   └── src/
│           │       │       └── main/
│           │       │           ├── java/
│           │       │           │   └── org/
│           │       │           │       └── test/
│           │       │           │           └── SampleApplication.java
│           │       │           └── webapp/
│           │       │               └── index.html
│           │       └── war-with-unpack/
│           │           ├── pom.xml
│           │           └── src/
│           │               └── main/
│           │                   ├── java/
│           │                   │   └── org/
│           │                   │       └── test/
│           │                   │           └── SampleApplication.java
│           │                   └── webapp/
│           │                       └── index.html
│           ├── main/
│           │   ├── java/
│           │   │   └── org/
│           │   │       └── springframework/
│           │   │           └── boot/
│           │   │               └── maven/
│           │   │                   ├── AbstractAotMojo.java
│           │   │                   ├── AbstractDependencyFilterMojo.java
│           │   │                   ├── AbstractPackagerMojo.java
│           │   │                   ├── AbstractRunMojo.java
│           │   │                   ├── ArtifactsLibraries.java
│           │   │                   ├── BuildImageForkMojo.java
│           │   │                   ├── BuildImageMojo.java
│           │   │                   ├── BuildImageNoForkMojo.java
│           │   │                   ├── BuildInfoMojo.java
│           │   │                   ├── CacheInfo.java
│           │   │                   ├── ClassPath.java
│           │   │                   ├── CommandLineBuilder.java
│           │   │                   ├── CustomLayersProvider.java
│           │   │                   ├── DependencyFilter.java
│           │   │                   ├── Docker.java
│           │   │                   ├── EnvVariables.java
│           │   │                   ├── Exclude.java
│           │   │                   ├── ExcludeFilter.java
│           │   │                   ├── FilterableDependency.java
│           │   │                   ├── Image.java
│           │   │                   ├── Include.java
│           │   │                   ├── IncludeFilter.java
│           │   │                   ├── JarTypeFilter.java
│           │   │                   ├── JavaCompilerPluginConfiguration.java
│           │   │                   ├── JavaProcessExecutor.java
│           │   │                   ├── Layers.java
│           │   │                   ├── LoggingMainClassTimeoutWarningListener.java
│           │   │                   ├── MatchingGroupIdFilter.java
│           │   │                   ├── MavenBuildOutputTimestamp.java
│           │   │                   ├── ProcessAotMojo.java
│           │   │                   ├── ProcessTestAotMojo.java
│           │   │                   ├── PropertiesMergingResourceTransformer.java
│           │   │                   ├── RepackageMojo.java
│           │   │                   ├── RunArguments.java
│           │   │                   ├── RunMojo.java
│           │   │                   ├── SpringApplicationAdminClient.java
│           │   │                   ├── SpringBootApplicationClassFinder.java
│           │   │                   ├── StartMojo.java
│           │   │                   ├── StopMojo.java
│           │   │                   ├── SystemPropertyFormatter.java
│           │   │                   ├── TestRunMojo.java
│           │   │                   ├── VersionExtractor.java
│           │   │                   └── package-info.java
│           │   ├── resources/
│           │   │   └── META-INF/
│           │   │       ├── m2e/
│           │   │       │   └── lifecycle-mapping-metadata.xml
│           │   │       └── spring/
│           │   │           └── layers/
│           │   │               └── default.xml
│           │   └── xsd/
│           │       ├── layers-2.3.xsd
│           │       ├── layers-2.4.xsd
│           │       ├── layers-2.5.xsd
│           │       ├── layers-2.6.xsd
│           │       ├── layers-2.7.xsd
│           │       ├── layers-3.0.xsd
│           │       ├── layers-3.1.xsd
│           │       ├── layers-3.2.xsd
│           │       ├── layers-3.3.xsd
│           │       ├── layers-3.4.xsd
│           │       ├── layers-3.5.xsd
│           │       ├── layers-4.0.xsd
│           │       └── layers-4.1.xsd
│           ├── maven/
│           │   └── resources/
│           │       └── pom.xml
│           └── test/
│               ├── java/
│               │   └── org/
│               │       └── springframework/
│               │           └── boot/
│               │               └── maven/
│               │                   ├── ArtifactsLibrariesTests.java
│               │                   ├── ClassPathTests.java
│               │                   ├── CommandLineBuilderTests.java
│               │                   ├── CustomLayersProviderTests.java
│               │                   ├── DependencyFilterMojoTests.java
│               │                   ├── DependencyFilterTests.java
│               │                   ├── DockerTests.java
│               │                   ├── EnvVariablesTests.java
│               │                   ├── ExcludeFilterTests.java
│               │                   ├── ImageTests.java
│               │                   ├── IncludeFilterTests.java
│               │                   ├── JarTypeFilterTests.java
│               │                   ├── JavaCompilerPluginConfigurationTests.java
│               │                   ├── MavenBuildOutputTimestampTests.java
│               │                   ├── PropertiesMergingResourceTransformerTests.java
│               │                   ├── RunArgumentsTests.java
│               │                   ├── SystemPropertyFormatterTests.java
│               │                   └── sample/
│               │                       ├── ClassWithMainMethod.java
│               │                       ├── ClassWithoutMainMethod.java
│               │                       └── package-info.java
│               └── resources/
│                   ├── application-layer-no-filter.xml
│                   ├── dependencies-layer-no-filter.xml
│                   ├── layers.xml
│                   └── resource-layer-no-filter.xml
├── build.gradle
├── buildSrc/
│   ├── SpringRepositorySupport.groovy
│   ├── build.gradle
│   ├── config/
│   │   └── checkstyle/
│   │       └── checkstyle.xml
│   ├── settings.gradle
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── org/
│       │   │       └── springframework/
│       │   │           └── boot/
│       │   │               └── build/
│       │   │                   ├── AntoraConventions.java
│       │   │                   ├── ConventionsPlugin.java
│       │   │                   ├── DeployedPlugin.java
│       │   │                   ├── EclipseConventions.java
│       │   │                   ├── EclipseSynchronizeJdtSettings.java
│       │   │                   ├── EclipseSynchronizeResourceSettings.java
│       │   │                   ├── EmptyPropertiesPersistableConfigurationObject.java
│       │   │                   ├── ExtractResources.java
│       │   │                   ├── JavaConventions.java
│       │   │                   ├── KotlinConventions.java
│       │   │                   ├── MavenPublishingConventions.java
│       │   │                   ├── MavenRepositoryPlugin.java
│       │   │                   ├── NoHttpConventions.java
│       │   │                   ├── RepositoryTransformersExtension.java
│       │   │                   ├── SyncAppSource.java
│       │   │                   ├── SystemRequirementsExtension.java
│       │   │                   ├── TestFixturesConventions.java
│       │   │                   ├── WarConventions.java
│       │   │                   ├── aggregation/
│       │   │                   │   ├── Aggregate.java
│       │   │                   │   └── AggregatorPlugin.java
│       │   │                   ├── antora/
│       │   │                   │   ├── AggregateContentContribution.java
│       │   │                   │   ├── AntoraAsciidocAttributes.java
│       │   │                   │   ├── AntoraContributorPlugin.java
│       │   │                   │   ├── AntoraDependenciesPlugin.java
│       │   │                   │   ├── CatalogContentContribution.java
│       │   │                   │   ├── CheckJavadocMacros.java
│       │   │                   │   ├── ConsumableContentContribution.java
│       │   │                   │   ├── ContentContribution.java
│       │   │                   │   ├── Contribution.java
│       │   │                   │   ├── CopyAntoraContent.java
│       │   │                   │   ├── Extensions.java
│       │   │                   │   ├── GenerateAntoraPlaybook.java
│       │   │                   │   ├── LocalAggregateContentContribution.java
│       │   │                   │   ├── SourceContribution.java
│       │   │                   │   └── SyncAntoraSource.java
│       │   │                   ├── architecture/
│       │   │                   │   ├── ArchitectureCheck.java
│       │   │                   │   ├── ArchitectureCheckAnnotation.java
│       │   │                   │   ├── ArchitecturePlugin.java
│       │   │                   │   ├── ArchitectureRules.java
│       │   │                   │   └── AutoConfigurationChecker.java
│       │   │                   ├── artifacts/
│       │   │                   │   └── ArtifactRelease.java
│       │   │                   ├── autoconfigure/
│       │   │                   │   ├── AutoConfigurationClass.java
│       │   │                   │   ├── AutoConfigurationImportsTask.java
│       │   │                   │   ├── AutoConfigurationMetadata.java
│       │   │                   │   ├── AutoConfigurationPlugin.java
│       │   │                   │   ├── CheckAutoConfigurationClasses.java
│       │   │                   │   ├── CheckAutoConfigurationImports.java
│       │   │                   │   └── DocumentAutoConfigurationClasses.java
│       │   │                   ├── bom/
│       │   │                   │   ├── BomExtension.java
│       │   │                   │   ├── BomPlugin.java
│       │   │                   │   ├── BomResolver.java
│       │   │                   │   ├── CheckBom.java
│       │   │                   │   ├── CheckLinks.java
│       │   │                   │   ├── CreateResolvedBom.java
│       │   │                   │   ├── Library.java
│       │   │                   │   ├── ResolvedBom.java
│       │   │                   │   ├── UpgradePolicy.java
│       │   │                   │   └── bomr/
│       │   │                   │       ├── InteractiveUpgradeResolver.java
│       │   │                   │       ├── LibraryUpdateResolver.java
│       │   │                   │       ├── LibraryWithVersionOptions.java
│       │   │                   │       ├── MavenMetadataVersionResolver.java
│       │   │                   │       ├── MoveToSnapshots.java
│       │   │                   │       ├── MultithreadedLibraryUpdateResolver.java
│       │   │                   │       ├── ReleaseSchedule.java
│       │   │                   │       ├── StandardLibraryUpdateResolver.java
│       │   │                   │       ├── Upgrade.java
│       │   │                   │       ├── UpgradeApplicator.java
│       │   │                   │       ├── UpgradeBom.java
│       │   │                   │       ├── UpgradeDependencies.java
│       │   │                   │       ├── UpgradeResolver.java
│       │   │                   │       ├── VersionOption.java
│       │   │                   │       ├── VersionResolver.java
│       │   │                   │       ├── github/
│       │   │                   │       │   ├── GitHub.java
│       │   │                   │       │   ├── GitHubRepository.java
│       │   │                   │       │   ├── Issue.java
│       │   │                   │       │   ├── Milestone.java
│       │   │                   │       │   ├── StandardGitHub.java
│       │   │                   │       │   └── StandardGitHubRepository.java
│       │   │                   │       └── version/
│       │   │                   │           ├── AbstractDependencyVersion.java
│       │   │                   │           ├── ArtifactVersionDependencyVersion.java
│       │   │                   │           ├── CalendarVersionDependencyVersion.java
│       │   │                   │           ├── CombinedPatchAndQualifierDependencyVersion.java
│       │   │                   │           ├── DependencyVersion.java
│       │   │                   │           ├── LeadingZeroesDependencyVersion.java
│       │   │                   │           ├── MultipleComponentsDependencyVersion.java
│       │   │                   │           ├── ReleaseTrainDependencyVersion.java
│       │   │                   │           └── UnstructuredDependencyVersion.java
│       │   │                   ├── classpath/
│       │   │                   │   ├── CheckClasspathForConflicts.java
│       │   │                   │   ├── CheckClasspathForProhibitedDependencies.java
│       │   │                   │   ├── CheckClasspathForUnconstrainedDirectDependencies.java
│       │   │                   │   └── CheckClasspathForUnnecessaryExclusions.java
│       │   │                   ├── cli/
│       │   │                   │   └── HomebrewFormula.java
│       │   │                   ├── context/
│       │   │                   │   └── properties/
│       │   │                   │       ├── Asciidoc.java
│       │   │                   │       ├── CheckAdditionalSpringConfigurationMetadata.java
│       │   │                   │       ├── CheckAggregatedSpringConfigurationMetadata.java
│       │   │                   │       ├── CheckManualSpringConfigurationMetadata.java
│       │   │                   │       ├── CheckSpringConfigurationMetadata.java
│       │   │                   │       ├── CompoundRow.java
│       │   │                   │       ├── ConfigurationMetadataPlugin.java
│       │   │                   │       ├── ConfigurationProperties.java
│       │   │                   │       ├── ConfigurationPropertiesAnalyzer.java
│       │   │                   │       ├── ConfigurationPropertiesPlugin.java
│       │   │                   │       ├── ConfigurationProperty.java
│       │   │                   │       ├── DocumentConfigurationProperties.java
│       │   │                   │       ├── Row.java
│       │   │                   │       ├── SingleRow.java
│       │   │                   │       ├── Snippet.java
│       │   │                   │       ├── Snippets.java
│       │   │                   │       └── Table.java
│       │   │                   ├── devtools/
│       │   │                   │   └── DocumentDevtoolsPropertyDefaults.java
│       │   │                   ├── docs/
│       │   │                   │   ├── ApplicationRunner.java
│       │   │                   │   ├── ConfigureJavadocLinks.java
│       │   │                   │   ├── DocumentManagedDependencies.java
│       │   │                   │   └── DocumentVersionProperties.java
│       │   │                   ├── mavenplugin/
│       │   │                   │   ├── DocumentPluginGoals.java
│       │   │                   │   ├── MavenExec.java
│       │   │                   │   ├── MavenPluginPlugin.java
│       │   │                   │   ├── PluginXmlParser.java
│       │   │                   │   └── PrepareMavenBinaries.java
│       │   │                   ├── optional/
│       │   │                   │   └── OptionalDependenciesPlugin.java
│       │   │                   ├── processors/
│       │   │                   │   └── AnnotationProcessorPlugin.java
│       │   │                   ├── properties/
│       │   │                   │   ├── BuildProperties.java
│       │   │                   │   └── BuildType.java
│       │   │                   ├── springframework/
│       │   │                   │   ├── CheckAotFactories.java
│       │   │                   │   ├── CheckFactoriesFile.java
│       │   │                   │   └── CheckSpringFactories.java
│       │   │                   ├── starters/
│       │   │                   │   ├── DocumentStarters.java
│       │   │                   │   ├── StarterMetadata.java
│       │   │                   │   └── StarterPlugin.java
│       │   │                   ├── test/
│       │   │                   │   ├── DockerTestBuildService.java
│       │   │                   │   ├── DockerTestPlugin.java
│       │   │                   │   ├── IntegrationTestPlugin.java
│       │   │                   │   ├── SystemTestPlugin.java
│       │   │                   │   └── autoconfigure/
│       │   │                   │       ├── CheckAutoConfigureImports.java
│       │   │                   │       ├── DocumentTestSlices.java
│       │   │                   │       ├── GenerateTestSliceMetadata.java
│       │   │                   │       ├── TestAutoConfigurationPlugin.java
│       │   │                   │       ├── TestSliceMetadata.java
│       │   │                   │       └── TestSlicePlugin.java
│       │   │                   ├── testing/
│       │   │                   │   ├── TestFailuresPlugin.java
│       │   │                   │   └── TestResultsOverview.java
│       │   │                   └── toolchain/
│       │   │                       ├── ToolchainExtension.java
│       │   │                       └── ToolchainPlugin.java
│       │   └── resources/
│       │       └── org/
│       │           └── springframework/
│       │               └── boot/
│       │                   └── build/
│       │                       ├── antora/
│       │                       │   ├── antora-asciidoc-attributes.properties
│       │                       │   └── antora-playbook-template.yml
│       │                       └── legal/
│       │                           ├── LICENSE.txt
│       │                           └── NOTICE.txt
│       └── test/
│           ├── java/
│           │   └── org/
│           │       └── springframework/
│           │           └── boot/
│           │               └── build/
│           │                   ├── ConventionsPluginTests.java
│           │                   ├── antora/
│           │                   │   ├── AntoraAsciidocAttributesTests.java
│           │                   │   └── GenerateAntoraPlaybookTests.java
│           │                   ├── architecture/
│           │                   │   ├── ArchitectureCheckTests.java
│           │                   │   ├── annotations/
│           │                   │   │   ├── TestConditionalOnClass.java
│           │                   │   │   ├── TestConditionalOnMissingBean.java
│           │                   │   │   ├── TestConfigurationProperties.java
│           │                   │   │   ├── TestConfigurationPropertiesBinding.java
│           │                   │   │   └── TestDeprecatedConfigurationProperty.java
│           │                   │   ├── assertj/
│           │                   │   │   ├── checkReturnValue/
│           │                   │   │   │   └── WithCheckReturnValue.java
│           │                   │   │   └── noCheckReturnValue/
│           │                   │   │       └── NoCheckReturnValue.java
│           │                   │   ├── beans/
│           │                   │   │   ├── privatebean/
│           │                   │   │   │   └── PrivateBean.java
│           │                   │   │   └── regular/
│           │                   │   │       └── RegularBean.java
│           │                   │   ├── bfpp/
│           │                   │   │   ├── nonstatic/
│           │                   │   │   │   └── NonStaticBeanFactoryPostProcessorConfiguration.java
│           │                   │   │   ├── noparameters/
│           │                   │   │   │   └── NoParametersBeanFactoryPostProcessorConfiguration.java
│           │                   │   │   └── parameters/
│           │                   │   │       └── ParametersBeanFactoryPostProcessorConfiguration.java
│           │                   │   ├── bpp/
│           │                   │   │   ├── nonstatic/
│           │                   │   │   │   └── NonStaticBeanPostProcessorConfiguration.java
│           │                   │   │   ├── noparameters/
│           │                   │   │   │   └── NoParametersBeanPostProcessorConfiguration.java
│           │                   │   │   ├── safeparameters/
│           │                   │   │   │   └── SafeParametersBeanPostProcessorConfiguration.java
│           │                   │   │   └── unsafeparameters/
│           │                   │   │       └── UnsafeParametersBeanPostProcessorConfiguration.java
│           │                   │   ├── collectors/
│           │                   │   │   └── toList/
│           │                   │   │       └── CollectorsToList.java
│           │                   │   ├── conditionalonclass/
│           │                   │   │   └── OnBeanMethod.java
│           │                   │   ├── conditionalonmissingbean/
│           │                   │   │   ├── valueonly/
│           │                   │   │   │   └── TypeSameAsMethodReturnType.java
│           │                   │   │   ├── withname/
│           │                   │   │   │   └── WithNameAttribute.java
│           │                   │   │   └── withtype/
│           │                   │   │       └── WithTypeAttribute.java
│           │                   │   ├── configurationproperties/
│           │                   │   │   ├── bindingnonstatic/
│           │                   │   │   │   └── BindingMethodNonStatic.java
│           │                   │   │   ├── classprefixandignore/
│           │                   │   │   │   └── ConfigurationPropertiesWithPrefixAndIgnore.java
│           │                   │   │   ├── classprefixonly/
│           │                   │   │   │   └── ConfigurationPropertiesWithPrefixOnly.java
│           │                   │   │   ├── classvalueonly/
│           │                   │   │   │   └── ConfigurationPropertiesWithValueOnly.java
│           │                   │   │   ├── deprecatedsince/
│           │                   │   │   │   └── DeprecatedConfigurationPropertySince.java
│           │                   │   │   ├── methodprefixandignore/
│           │                   │   │   │   └── ConfigurationPropertiesWithPrefixAndIgnore.java
│           │                   │   │   ├── methodprefixonly/
│           │                   │   │   │   └── ConfigurationPropertiesWithPrefixOnly.java
│           │                   │   │   └── methodvalueonly/
│           │                   │   │       └── ConfigurationPropertiesWithValueOnly.java
│           │                   │   ├── junit/
│           │                   │   │   └── enumsource/
│           │                   │   │       ├── inferredfromparametertype/
│           │                   │   │       │   └── EnumSourceInferredFromParameterType.java
│           │                   │   │       ├── sameasparametertype/
│           │                   │   │       │   └── EnumSourceSameAsParameterType.java
│           │                   │   │       └── valuenecessary/
│           │                   │   │           └── EnumSourceValueNecessary.java
│           │                   │   ├── nullmarked/
│           │                   │   │   └── notannotated/
│           │                   │   │       └── TestClass.java
│           │                   │   ├── objects/
│           │                   │   │   ├── noRequireNonNull/
│           │                   │   │   │   └── NoRequireNonNull.java
│           │                   │   │   ├── requireNonNullWithString/
│           │                   │   │   │   └── RequireNonNullWithString.java
│           │                   │   │   └── requireNonNullWithSupplier/
│           │                   │   │       └── RequireNonNullWithSupplier.java
│           │                   │   ├── resources/
│           │                   │   │   ├── loads/
│           │                   │   │   │   └── ResourceUtilsResourceLoader.java
│           │                   │   │   └── noloads/
│           │                   │   │       └── ResourceUtilsWithoutLoading.java
│           │                   │   ├── string/
│           │                   │   │   ├── toLowerCase/
│           │                   │   │   │   └── ToLowerCase.java
│           │                   │   │   ├── toLowerCaseWithLocale/
│           │                   │   │   │   └── ToLowerCaseWithLocale.java
│           │                   │   │   ├── toUpperCase/
│           │                   │   │   │   └── ToUpperCase.java
│           │                   │   │   └── toUpperCaseWithLocale/
│           │                   │   │       └── ToUpperCaseWithLocale.java
│           │                   │   ├── tangled/
│           │                   │   │   ├── TangledOne.java
│           │                   │   │   └── sub/
│           │                   │   │       └── TangledTwo.java
│           │                   │   ├── untangled/
│           │                   │   │   ├── UntangledOne.java
│           │                   │   │   └── sub/
│           │                   │   │       └── UntangledTwo.java
│           │                   │   └── url/
│           │                   │       ├── decode/
│           │                   │       │   └── UrlDecodeWithStringEncoding.java
│           │                   │       └── encode/
│           │                   │           └── UrlEncodeWithStringEncoding.java
│           │                   ├── artifacts/
│           │                   │   └── ArtifactReleaseTests.java
│           │                   ├── assertj/
│           │                   │   └── NodeAssert.java
│           │                   ├── autoconfigure/
│           │                   │   └── DocumentAutoConfigurationClassesTests.java
│           │                   ├── bom/
│           │                   │   ├── BomPluginIntegrationTests.java
│           │                   │   ├── LibraryTests.java
│           │                   │   └── bomr/
│           │                   │       ├── InteractiveUpgradeResolverTests.java
│           │                   │       ├── ReleaseScheduleTests.java
│           │                   │       ├── UpgradeApplicatorTests.java
│           │                   │       ├── UpgradeTests.java
│           │                   │       └── version/
│           │                   │           ├── ArtifactVersionDependencyVersionTests.java
│           │                   │           ├── CalendarVersionDependencyVersionTests.java
│           │                   │           ├── DependencyVersionTests.java
│           │                   │           ├── DependencyVersionUpgradeTests.java
│           │                   │           ├── MultipleComponentsDependencyVersionTests.java
│           │                   │           └── ReleaseTrainDependencyVersionTests.java
│           │                   ├── context/
│           │                   │   └── properties/
│           │                   │       ├── CompoundRowTests.java
│           │                   │       ├── ConfigurationPropertiesAnalyzerTests.java
│           │                   │       ├── ConfigurationPropertiesTests.java
│           │                   │       ├── SingleRowTests.java
│           │                   │       └── TableTests.java
│           │                   ├── groovyscripts/
│           │                   │   └── SpringRepositoriesExtensionTests.java
│           │                   ├── mavenplugin/
│           │                   │   └── PluginXmlParserTests.java
│           │                   ├── optional/
│           │                   │   └── OptionalDependenciesPluginIntegrationTests.java
│           │                   ├── test/
│           │                   │   └── autoconfigure/
│           │                   │       └── TestSliceMetadataTests.java
│           │                   └── testing/
│           │                       └── TestFailuresPluginIntegrationTests.java
│           └── resources/
│               ├── bom.gradle
│               ├── gradle.properties
│               ├── org/
│               │   └── springframework/
│               │       └── boot/
│               │           └── build/
│               │               └── antora/
│               │                   └── expected-playbook.yml
│               ├── plugin.xml
│               ├── releases.json
│               └── spring-configuration-metadata.json
├── buildpack/
│   └── spring-boot-buildpack-platform/
│       ├── build.gradle
│       └── src/
│           ├── dockerTest/
│           │   └── java/
│           │       └── org/
│           │           └── springframework/
│           │               └── boot/
│           │                   └── buildpack/
│           │                       └── platform/
│           │                           └── docker/
│           │                               └── DockerApiIntegrationTests.java
│           ├── main/
│           │   └── java/
│           │       └── org/
│           │           └── springframework/
│           │               └── boot/
│           │                   └── buildpack/
│           │                       └── platform/
│           │                           ├── build/
│           │                           │   ├── AbstractBuildLog.java
│           │                           │   ├── ApiVersions.java
│           │                           │   ├── BuildLog.java
│           │                           │   ├── BuildOwner.java
│           │                           │   ├── BuildRequest.java
│           │                           │   ├── Builder.java
│           │                           │   ├── BuilderBuildpack.java
│           │                           │   ├── BuilderDockerConfiguration.java
│           │                           │   ├── BuilderException.java
│           │                           │   ├── BuilderMetadata.java
│           │                           │   ├── Buildpack.java
│           │                           │   ├── BuildpackCoordinates.java
│           │                           │   ├── BuildpackLayersMetadata.java
│           │                           │   ├── BuildpackMetadata.java
│           │                           │   ├── BuildpackReference.java
│           │                           │   ├── BuildpackResolver.java
│           │                           │   ├── BuildpackResolverContext.java
│           │                           │   ├── BuildpackResolvers.java
│           │                           │   ├── Buildpacks.java
│           │                           │   ├── Cache.java
│           │                           │   ├── Creator.java
│           │                           │   ├── DirectoryBuildpack.java
│           │                           │   ├── EphemeralBuilder.java
│           │                           │   ├── ImageBuildpack.java
│           │                           │   ├── ImageType.java
│           │                           │   ├── Lifecycle.java
│           │                           │   ├── LifecycleVersion.java
│           │                           │   ├── Phase.java
│           │                           │   ├── PrintStreamBuildLog.java
│           │                           │   ├── PullPolicy.java
│           │                           │   ├── StackId.java
│           │                           │   ├── TarGzipBuildpack.java
│           │                           │   └── package-info.java
│           │                           ├── docker/
│           │                           │   ├── ApiVersion.java
│           │                           │   ├── DockerApi.java
│           │                           │   ├── DockerLog.java
│           │                           │   ├── ExportedImageTar.java
│           │                           │   ├── ImagePlatform.java
│           │                           │   ├── ImageProgressUpdateEvent.java
│           │                           │   ├── LoadImageUpdateEvent.java
│           │                           │   ├── LogUpdateEvent.java
│           │                           │   ├── ProgressUpdateEvent.java
│           │                           │   ├── PullImageUpdateEvent.java
│           │                           │   ├── PushImageUpdateEvent.java
│           │                           │   ├── TotalProgressBar.java
│           │                           │   ├── TotalProgressEvent.java
│           │                           │   ├── TotalProgressListener.java
│           │                           │   ├── TotalProgressPullListener.java
│           │                           │   ├── TotalProgressPushListener.java
│           │                           │   ├── UpdateEvent.java
│           │                           │   ├── UpdateListener.java
│           │                           │   ├── configuration/
│           │                           │   │   ├── Credential.java
│           │                           │   │   ├── CredentialHelper.java
│           │                           │   │   ├── DockerConfigurationMetadata.java
│           │                           │   │   ├── DockerConnectionConfiguration.java
│           │                           │   │   ├── DockerHost.java
│           │                           │   │   ├── DockerRegistryAuthentication.java
│           │                           │   │   ├── DockerRegistryConfigAuthentication.java
│           │                           │   │   ├── DockerRegistryTokenAuthentication.java
│           │                           │   │   ├── DockerRegistryUserAuthentication.java
│           │                           │   │   ├── JsonEncodedDockerRegistryAuthentication.java
│           │                           │   │   ├── ResolvedDockerHost.java
│           │                           │   │   └── package-info.java
│           │                           │   ├── package-info.java
│           │                           │   ├── ssl/
│           │                           │   │   ├── KeyStoreFactory.java
│           │                           │   │   ├── PemCertificateParser.java
│           │                           │   │   ├── PemPrivateKeyParser.java
│           │                           │   │   ├── SslContextFactory.java
│           │                           │   │   └── package-info.java
│           │                           │   ├── transport/
│           │                           │   │   ├── DockerConnectionException.java
│           │                           │   │   ├── DockerEngineException.java
│           │                           │   │   ├── Errors.java
│           │                           │   │   ├── HttpClientTransport.java
│           │                           │   │   ├── HttpTransport.java
│           │                           │   │   ├── LocalHttpClientTransport.java
│           │                           │   │   ├── Message.java
│           │                           │   │   ├── RemoteHttpClientTransport.java
│           │                           │   │   └── package-info.java
│           │                           │   └── type/
│           │                           │       ├── Binding.java
│           │                           │       ├── BlobReference.java
│           │                           │       ├── ContainerConfig.java
│           │                           │       ├── ContainerContent.java
│           │                           │       ├── ContainerReference.java
│           │                           │       ├── ContainerStatus.java
│           │                           │       ├── Image.java
│           │                           │       ├── ImageArchive.java
│           │                           │       ├── ImageArchiveIndex.java
│           │                           │       ├── ImageArchiveManifest.java
│           │                           │       ├── ImageConfig.java
│           │                           │       ├── ImageName.java
│           │                           │       ├── ImageReference.java
│           │                           │       ├── Layer.java
│           │                           │       ├── LayerId.java
│           │                           │       ├── Manifest.java
│           │                           │       ├── ManifestList.java
│           │                           │       ├── RandomString.java
│           │                           │       ├── Regex.java
│           │                           │       ├── VolumeName.java
│           │                           │       └── package-info.java
│           │                           ├── io/
│           │                           │   ├── Content.java
│           │                           │   ├── DefaultOwner.java
│           │                           │   ├── FilePermissions.java
│           │                           │   ├── IOBiConsumer.java
│           │                           │   ├── IOConsumer.java
│           │                           │   ├── IOSupplier.java
│           │                           │   ├── InspectedContent.java
│           │                           │   ├── Layout.java
│           │                           │   ├── Owner.java
│           │                           │   ├── TarArchive.java
│           │                           │   ├── TarLayoutWriter.java
│           │                           │   ├── ZipFileTarArchive.java
│           │                           │   └── package-info.java
│           │                           ├── json/
│           │                           │   ├── JsonStream.java
│           │                           │   ├── MappedObject.java
│           │                           │   ├── SharedJsonMapper.java
│           │                           │   └── package-info.java
│           │                           ├── socket/
│           │                           │   ├── AbstractSocket.java
│           │                           │   ├── FileDescriptor.java
│           │                           │   ├── NamedPipeSocket.java
│           │                           │   ├── UnixDomainSocket.java
│           │                           │   └── package-info.java
│           │                           └── system/
│           │                               ├── Environment.java
│           │                               └── package-info.java
│           └── test/
│               ├── java/
│               │   └── org/
│               │       └── springframework/
│               │           └── boot/
│               │               └── buildpack/
│               │                   └── platform/
│               │                       ├── build/
│               │                       │   ├── ApiVersionsTests.java
│               │                       │   ├── BuildLogTests.java
│               │                       │   ├── BuildOwnerTests.java
│               │                       │   ├── BuildRequestTests.java
│               │                       │   ├── BuilderBuildpackTests.java
│               │                       │   ├── BuilderExceptionTests.java
│               │                       │   ├── BuilderMetadataTests.java
│               │                       │   ├── BuilderTests.java
│               │                       │   ├── BuildpackCoordinatesTests.java
│               │                       │   ├── BuildpackLayersMetadataTests.java
│               │                       │   ├── BuildpackMetadataTests.java
│               │                       │   ├── BuildpackReferenceTests.java
│               │                       │   ├── BuildpackResolversTests.java
│               │                       │   ├── BuildpacksTests.java
│               │                       │   ├── DirectoryBuildpackTests.java
│               │                       │   ├── EphemeralBuilderTests.java
│               │                       │   ├── ImageBuildpackTests.java
│               │                       │   ├── LifecycleTests.java
│               │                       │   ├── LifecycleVersionTests.java
│               │                       │   ├── PhaseTests.java
│               │                       │   ├── PrintStreamBuildLogTests.java
│               │                       │   ├── StackIdTests.java
│               │                       │   ├── TarGzipBuildpackTests.java
│               │                       │   ├── TestBuildpack.java
│               │                       │   └── TestTarGzip.java
│               │                       ├── docker/
│               │                       │   ├── ApiVersionTests.java
│               │                       │   ├── DockerApiTests.java
│               │                       │   ├── DockerLogTests.java
│               │                       │   ├── ExportedImageTarTests.java
│               │                       │   ├── ImagePlatformTests.java
│               │                       │   ├── LoadImageUpdateEventTests.java
│               │                       │   ├── LogUpdateEventTests.java
│               │                       │   ├── ProgressUpdateEventTests.java
│               │                       │   ├── PullImageUpdateEventTests.java
│               │                       │   ├── PullUpdateEventTests.java
│               │                       │   ├── PushImageUpdateEventTests.java
│               │                       │   ├── TotalProgressBarTests.java
│               │                       │   ├── TotalProgressEventTests.java
│               │                       │   ├── TotalProgressListenerTests.java
│               │                       │   ├── configuration/
│               │                       │   │   ├── CredentialHelperTests.java
│               │                       │   │   ├── CredentialTests.java
│               │                       │   │   ├── DockerConfigurationMetadataTests.java
│               │                       │   │   ├── DockerRegistryConfigAuthenticationTests.java
│               │                       │   │   ├── DockerRegistryTokenAuthenticationTests.java
│               │                       │   │   ├── DockerRegistryUserAuthenticationTests.java
│               │                       │   │   └── ResolvedDockerHostTests.java
│               │                       │   ├── ssl/
│               │                       │   │   ├── KeyStoreFactoryTests.java
│               │                       │   │   ├── PemCertificateParserTests.java
│               │                       │   │   ├── PemFileWriter.java
│               │                       │   │   ├── PemPrivateKeyParserTests.java
│               │                       │   │   ├── SslContextFactoryTests.java
│               │                       │   │   └── SslSource.java
│               │                       │   ├── transport/
│               │                       │   │   ├── DockerConnectionExceptionTests.java
│               │                       │   │   ├── DockerEngineExceptionTests.java
│               │                       │   │   ├── ErrorsTests.java
│               │                       │   │   ├── HttpClientTransportTests.java
│               │                       │   │   ├── HttpTransportTests.java
│               │                       │   │   ├── LocalHttpClientTransportTests.java
│               │                       │   │   ├── MessageTests.java
│               │                       │   │   ├── RemoteHttpClientTransportTests.java
│               │                       │   │   └── TestDockerEngineException.java
│               │                       │   └── type/
│               │                       │       ├── BindingTests.java
│               │                       │       ├── ContainerConfigTests.java
│               │                       │       ├── ContainerContentTests.java
│               │                       │       ├── ContainerReferenceTests.java
│               │                       │       ├── ContainerStatusTests.java
│               │                       │       ├── ImageArchiveIndexTests.java
│               │                       │       ├── ImageArchiveManifestTests.java
│               │                       │       ├── ImageArchiveTests.java
│               │                       │       ├── ImageConfigTests.java
│               │                       │       ├── ImageNameTests.java
│               │                       │       ├── ImageReferenceTests.java
│               │                       │       ├── ImageTests.java
│               │                       │       ├── LayerIdTests.java
│               │                       │       ├── LayerTests.java
│               │                       │       ├── ManifestListTests.java
│               │                       │       ├── ManifestTests.java
│               │                       │       ├── RandomStringTests.java
│               │                       │       └── VolumeNameTests.java
│               │                       ├── io/
│               │                       │   ├── ContentTests.java
│               │                       │   ├── DefaultOwnerTests.java
│               │                       │   ├── FilePermissionsTests.java
│               │                       │   ├── InspectedContentTests.java
│               │                       │   ├── OwnerTests.java
│               │                       │   ├── TarArchiveTests.java
│               │                       │   ├── TarLayoutWriterTests.java
│               │                       │   └── ZipFileTarArchiveTests.java
│               │                       ├── json/
│               │                       │   ├── AbstractJsonTests.java
│               │                       │   ├── JsonStreamTests.java
│               │                       │   ├── MappedObjectTests.java
│               │                       │   └── SharedJsonMapperTests.java
│               │                       └── socket/
│               │                           └── FileDescriptorTests.java
│               └── resources/
│                   └── org/
│                       └── springframework/
│                           └── boot/
│                               └── buildpack/
│                                   └── platform/
│                                       ├── build/
│                                       │   ├── builder-metadata-platform-api-0.3.json
│                                       │   ├── builder-metadata-supported-apis.json
│                                       │   ├── builder-metadata-unsupported-api.json
│                                       │   ├── builder-metadata-unsupported-apis.json
│                                       │   ├── builder-metadata.json
│                                       │   ├── buildpack-image.json
│                                       │   ├── buildpack-layers-metadata.json
│                                       │   ├── buildpack-metadata.json
│                                       │   ├── buildpack.toml
│                                       │   ├── image-with-empty-stack.json
│                                       │   ├── image-with-no-run-image-tag.json
│                                       │   ├── image-with-platform.json
│                                       │   ├── image-with-run-image-different-registry.json
│                                       │   ├── image-with-run-image-digest.json
│                                       │   ├── image.json
│                                       │   ├── lifecycle-analyzer-cache-bind-mounts.json
│                                       │   ├── lifecycle-analyzer-cache-volumes.json
│                                       │   ├── lifecycle-analyzer-inherit-local.json
│                                       │   ├── lifecycle-analyzer-inherit-remote.json
│                                       │   ├── lifecycle-analyzer-security-opts.json
│                                       │   ├── lifecycle-analyzer.json
│                                       │   ├── lifecycle-builder-app-dir.json
│                                       │   ├── lifecycle-builder-cache-bind-mounts.json
│                                       │   ├── lifecycle-builder-cache-volumes.json
│                                       │   ├── lifecycle-builder.json
│                                       │   ├── lifecycle-creator-app-dir.json
│                                       │   ├── lifecycle-creator-bindings.json
│                                       │   ├── lifecycle-creator-cache-bind-mounts.json
│                                       │   ├── lifecycle-creator-cache-volumes.json
│                                       │   ├── lifecycle-creator-clean-cache.json
│                                       │   ├── lifecycle-creator-created-date.json
│                                       │   ├── lifecycle-creator-inherit-local.json
│                                       │   ├── lifecycle-creator-inherit-remote.json
│                                       │   ├── lifecycle-creator-network.json
│                                       │   ├── lifecycle-creator-platform-api-0.3.json
│                                       │   ├── lifecycle-creator-security-opts.json
│                                       │   ├── lifecycle-creator.json
│                                       │   ├── lifecycle-detector-app-dir.json
│                                       │   ├── lifecycle-detector-cache-bind-mounts.json
│                                       │   ├── lifecycle-detector-cache-volumes.json
│                                       │   ├── lifecycle-detector.json
│                                       │   ├── lifecycle-exporter-app-dir.json
│                                       │   ├── lifecycle-exporter-cache-bind-mounts.json
│                                       │   ├── lifecycle-exporter-cache-volumes.json
│                                       │   ├── lifecycle-exporter-created-date.json
│                                       │   ├── lifecycle-exporter-inherit-local.json
│                                       │   ├── lifecycle-exporter-inherit-remote.json
│                                       │   ├── lifecycle-exporter-security-opts.json
│                                       │   ├── lifecycle-exporter.json
│                                       │   ├── lifecycle-restorer-cache-bind-mounts.json
│                                       │   ├── lifecycle-restorer-cache-volumes.json
│                                       │   ├── lifecycle-restorer-inherit-local.json
│                                       │   ├── lifecycle-restorer-inherit-remote.json
│                                       │   ├── lifecycle-restorer-security-opts.json
│                                       │   ├── lifecycle-restorer.json
│                                       │   ├── order.toml
│                                       │   ├── print-stream-build-log.txt
│                                       │   ├── run-image-with-bad-stack.json
│                                       │   ├── run-image-with-platform.json
│                                       │   └── run-image.json
│                                       ├── docker/
│                                       │   ├── configuration/
│                                       │   │   ├── auth-token.json
│                                       │   │   ├── auth-user-full.json
│                                       │   │   ├── auth-user-minimal.json
│                                       │   │   ├── docker-credential-test.bat
│                                       │   │   ├── docker-credential-test.sh
│                                       │   │   ├── with-auth/
│                                       │   │   │   └── config.json
│                                       │   │   ├── with-context/
│                                       │   │   │   ├── config.json
│                                       │   │   │   └── contexts/
│                                       │   │   │       └── meta/
│                                       │   │   │           └── ea1b2003cc8155cb8af43960c89a4c1e28777d6fd848ff3422cf375329c2626d/
│                                       │   │   │               └── meta.json
│                                       │   │   ├── with-default-context/
│                                       │   │   │   ├── config.json
│                                       │   │   │   └── contexts/
│                                       │   │   │       ├── meta/
│                                       │   │   │       │   └── ea1b2003cc8155cb8af43960c89a4c1e28777d6fd848ff3422cf375329c2626d/
│                                       │   │   │       │       └── meta.json
│                                       │   │   │       └── tls/
│                                       │   │   │           └── ea1b2003cc8155cb8af43960c89a4c1e28777d6fd848ff3422cf375329c2626d/
│                                       │   │   │               └── docker/
│                                       │   │   │                   ├── cert.pem
│                                       │   │   │                   └── key.pem
│                                       │   │   └── without-context/
│                                       │   │       └── config.json
│                                       │   ├── container-wait-response.json
│                                       │   ├── create-container-response.json
│                                       │   ├── load-error.json
│                                       │   ├── load-stream.json
│                                       │   ├── log-update-event-ansi.stream
│                                       │   ├── log-update-event-invalid-stream-type.stream
│                                       │   ├── log-update-event.stream
│                                       │   ├── pull-stream.json
│                                       │   ├── pull-update-full.json
│                                       │   ├── pull-update-minimal.json
│                                       │   ├── pull-with-empty-details.json
│                                       │   ├── push-stream-with-error.json
│                                       │   ├── push-stream.json
│                                       │   ├── transport/
│                                       │   │   ├── errors.json
│                                       │   │   ├── message-and-errors.json
│                                       │   │   ├── message.json
│                                       │   │   └── proxy-error.txt
│                                       │   └── type/
│                                       │       ├── container-config.json
│                                       │       ├── container-status-error.json
│                                       │       ├── container-status-success.json
│                                       │       ├── distribution-manifest-list.json
│                                       │       ├── distribution-manifest.json
│                                       │       ├── image-archive-config.json
│                                       │       ├── image-archive-index.json
│                                       │       ├── image-archive-manifest.json
│                                       │       ├── image-config.json
│                                       │       ├── image-empty-os.json
│                                       │       ├── image-manifest.json
│                                       │       ├── image-no-descriptor.json
│                                       │       ├── image-no-digest.json
│                                       │       ├── image-non-default-os.json
│                                       │       ├── image-platform.json
│                                       │       ├── image.json
│                                       │       ├── manifest.json
│                                       │       └── minimal-image-config.json
│                                       └── json/
│                                           ├── stream.json
│                                           └── test-mapped-object.json
├── cli/
│   └── spring-boot-cli/
│       ├── build.gradle
│       └── src/
│           ├── intTest/
│           │   ├── java/
│           │   │   └── org/
│           │   │       └── springframework/
│           │   │           └── boot/
│           │   │               └── cli/
│           │   │                   ├── CommandLineIT.java
│           │   │                   └── infrastructure/
│           │   │                       ├── CommandLineInvoker.java
│           │   │                       └── Versions.java
│           │   └── resources/
│           │       └── settings.xml
│           ├── json-shade/
│           │   ├── README.adoc
│           │   └── java/
│           │       └── org/
│           │           └── springframework/
│           │               └── boot/
│           │                   └── cli/
│           │                       └── json/
│           │                           ├── JSON.java
│           │                           ├── JSONArray.java
│           │                           ├── JSONException.java
│           │                           ├── JSONObject.java
│           │                           ├── JSONStringer.java
│           │                           ├── JSONTokener.java
│           │                           └── package-info.java
│           ├── main/
│           │   ├── content/
│           │   │   ├── INSTALL.txt
│           │   │   ├── LICENCE.txt
│           │   │   ├── bin/
│           │   │   │   └── spring.bat
│           │   │   ├── legal/
│           │   │   │   └── open_source_licenses.txt
│           │   │   └── shell-completion/
│           │   │       ├── bash/
│           │   │       │   └── spring
│           │   │       └── zsh/
│           │   │           └── _spring
│           │   ├── executablecontent/
│           │   │   └── bin/
│           │   │       └── spring
│           │   ├── homebrew/
│           │   │   └── spring-boot.rb
│           │   ├── java/
│           │   │   └── org/
│           │   │       └── springframework/
│           │   │           └── boot/
│           │   │               └── cli/
│           │   │                   ├── DefaultCommandFactory.java
│           │   │                   ├── SpringCli.java
│           │   │                   ├── command/
│           │   │                   │   ├── AbstractCommand.java
│           │   │                   │   ├── Command.java
│           │   │                   │   ├── CommandException.java
│           │   │                   │   ├── CommandFactory.java
│           │   │                   │   ├── CommandRunner.java
│           │   │                   │   ├── HelpExample.java
│           │   │                   │   ├── NoArgumentsException.java
│           │   │                   │   ├── NoHelpCommandArgumentsException.java
│           │   │                   │   ├── NoSuchCommandException.java
│           │   │                   │   ├── OptionParsingCommand.java
│           │   │                   │   ├── core/
│           │   │                   │   │   ├── HelpCommand.java
│           │   │                   │   │   ├── HintCommand.java
│           │   │                   │   │   ├── VersionCommand.java
│           │   │                   │   │   └── package-info.java
│           │   │                   │   ├── encodepassword/
│           │   │                   │   │   ├── EncodePasswordCommand.java
│           │   │                   │   │   └── package-info.java
│           │   │                   │   ├── init/
│           │   │                   │   │   ├── Dependency.java
│           │   │                   │   │   ├── InitCommand.java
│           │   │                   │   │   ├── InitializrService.java
│           │   │                   │   │   ├── InitializrServiceMetadata.java
│           │   │                   │   │   ├── ProjectGenerationRequest.java
│           │   │                   │   │   ├── ProjectGenerationResponse.java
│           │   │                   │   │   ├── ProjectGenerator.java
│           │   │                   │   │   ├── ProjectType.java
│           │   │                   │   │   ├── ReportableException.java
│           │   │                   │   │   ├── ServiceCapabilitiesReportGenerator.java
│           │   │                   │   │   └── package-info.java
│           │   │                   │   ├── options/
│           │   │                   │   │   ├── OptionHandler.java
│           │   │                   │   │   ├── OptionHelp.java
│           │   │                   │   │   └── package-info.java
│           │   │                   │   ├── package-info.java
│           │   │                   │   ├── shell/
│           │   │                   │   │   ├── AnsiString.java
│           │   │                   │   │   ├── ClearCommand.java
│           │   │                   │   │   ├── CommandCompleter.java
│           │   │                   │   │   ├── EscapeAwareWhiteSpaceArgumentDelimiter.java
│           │   │                   │   │   ├── ExitCommand.java
│           │   │                   │   │   ├── ForkProcessCommand.java
│           │   │                   │   │   ├── PromptCommand.java
│           │   │                   │   │   ├── RunProcessCommand.java
│           │   │                   │   │   ├── Shell.java
│           │   │                   │   │   ├── ShellCommand.java
│           │   │                   │   │   ├── ShellExitException.java
│           │   │                   │   │   ├── ShellPrompts.java
│           │   │                   │   │   └── package-info.java
│           │   │                   │   └── status/
│           │   │                   │       ├── ExitStatus.java
│           │   │                   │       └── package-info.java
│           │   │                   ├── package-info.java
│           │   │                   └── util/
│           │   │                       ├── Log.java
│           │   │                       ├── LogListener.java
│           │   │                       └── package-info.java
│           │   └── resources/
│           │       └── META-INF/
│           │           └── services/
│           │               └── org.springframework.boot.cli.command.CommandFactory
│           └── test/
│               ├── java/
│               │   ├── cli/
│               │   │   └── command/
│               │   │       ├── CustomCommand.java
│               │   │       └── CustomCommandFactory.java
│               │   └── org/
│               │       └── springframework/
│               │           └── boot/
│               │               └── cli/
│               │                   ├── command/
│               │                   │   ├── CommandRunnerIntegrationTests.java
│               │                   │   ├── CommandRunnerTests.java
│               │                   │   ├── OptionParsingCommandTests.java
│               │                   │   ├── encodepassword/
│               │                   │   │   └── EncodePasswordCommandTests.java
│               │                   │   ├── init/
│               │                   │   │   ├── AbstractHttpClientMockTests.java
│               │                   │   │   ├── InitCommandTests.java
│               │                   │   │   ├── InitializrServiceMetadataTests.java
│               │                   │   │   ├── InitializrServiceTests.java
│               │                   │   │   ├── ProjectGenerationRequestTests.java
│               │                   │   │   └── ServiceCapabilitiesReportGeneratorTests.java
│               │                   │   └── shell/
│               │                   │       └── EscapeAwareWhiteSpaceArgumentDelimiterTests.java
│               │                   └── util/
│               │                       └── MockLog.java
│               ├── plugins/
│               │   └── custom/
│               │       ├── META-INF/
│               │       │   └── services/
│               │       │       └── org.springframework.boot.cli.CommandFactory
│               │       └── custom/
│               │           └── 0.0.1/
│               │               └── custom-0.0.1.pom
│               └── resources/
│                   ├── .m2/
│                   │   └── settings.xml
│                   ├── classloader-test-app.groovy
│                   ├── commands/
│                   │   ├── closure.groovy
│                   │   ├── command.groovy
│                   │   ├── handler.groovy
│                   │   └── options.groovy
│                   ├── dependency-customizer-tests/
│                   │   ├── resource1.txt
│                   │   └── resource2.txt
│                   ├── dir-sample/
│                   │   └── code/
│                   │       └── app.groovy
│                   ├── foo.pom
│                   ├── grab-samples/
│                   │   ├── customDependencyManagement.groovy
│                   │   ├── duplicateDependencyManagementBom.groovy
│                   │   ├── grab.groovy
│                   │   └── repository/
│                   │       └── test/
│                   │           ├── child/
│                   │           │   └── 1.0.0/
│                   │           │       └── child-1.0.0.pom
│                   │           └── parent/
│                   │               └── 1.0.0/
│                   │                   └── parent-1.0.0.pom
│                   ├── grab.groovy
│                   ├── init.groovy
│                   ├── maven-settings/
│                   │   ├── active-profile-repositories/
│                   │   │   └── .m2/
│                   │   │       └── settings.xml
│                   │   ├── basic/
│                   │   │   └── .m2/
│                   │   │       └── settings.xml
│                   │   ├── encrypted/
│                   │   │   └── .m2/
│                   │   │       ├── settings-security.xml
│                   │   │       └── settings.xml
│                   │   └── property-interpolation/
│                   │       └── .m2/
│                   │           └── settings.xml
│                   ├── metadata/
│                   │   ├── service-metadata-2.0.0.json
│                   │   ├── service-metadata-2.1.0.json
│                   │   ├── service-metadata-2.1.0.txt
│                   │   └── service-metadata-types-conflict.json
│                   ├── repro-samples/
│                   │   ├── data-jpa.groovy
│                   │   ├── grab-ant-builder.groovy
│                   │   └── secure.groovy
│                   ├── resource-matcher/
│                   │   ├── one/
│                   │   │   ├── alpha/
│                   │   │   │   └── nested/
│                   │   │   │       ├── excluded
│                   │   │   │       └── fileA
│                   │   │   ├── bravo/
│                   │   │   │   ├── fileC
│                   │   │   │   └── nested/
│                   │   │   │       └── fileB
│                   │   │   └── fileD
│                   │   ├── three
│                   │   └── two/
│                   │       ├── .file
│                   │       ├── bravo/
│                   │       │   └── fileE
│                   │       └── fileF
│                   ├── run-command/
│                   │   └── quiet.groovy
│                   ├── schema-all.sql
│                   ├── scripts/
│                   │   ├── closure.groovy
│                   │   ├── command.groovy
│                   │   ├── commands.groovy
│                   │   ├── handler.groovy
│                   │   └── options.groovy
│                   └── templates/
│                       ├── home.html
│                       └── test.txt
├── config/
│   ├── checkstyle/
│   │   ├── checkstyle-header.txt
│   │   ├── checkstyle-suppressions.xml
│   │   ├── checkstyle.xml
│   │   └── import-control.xml
│   ├── detekt/
│   │   └── config.yml
│   └── nohttp/
│       ├── allowlist.lines
│       ├── checkstyle.xml
│       └── suppressions.xml
├── configuration-metadata/
│   ├── spring-boot-configuration-metadata/
│   │   ├── build.gradle
│   │   └── src/
│   │       ├── json-shade/
│   │       │   ├── README.adoc
│   │       │   └── java/
│   │       │       └── org/
│   │       │           └── springframework/
│   │       │               └── boot/
│   │       │                   └── configurationmetadata/
│   │       │                       └── json/
│   │       │                           ├── JSON.java
│   │       │                           ├── JSONArray.java
│   │       │                           ├── JSONException.java
│   │       │                           ├── JSONObject.java
│   │       │                           ├── JSONStringer.java
│   │       │                           └── JSONTokener.java
│   │       ├── main/
│   │       │   └── java/
│   │       │       └── org/
│   │       │           └── springframework/
│   │       │               └── boot/
│   │       │                   └── configurationmetadata/
│   │       │                       ├── ConfigurationMetadataGroup.java
│   │       │                       ├── ConfigurationMetadataHint.java
│   │       │                       ├── ConfigurationMetadataItem.java
│   │       │                       ├── ConfigurationMetadataProperty.java
│   │       │                       ├── ConfigurationMetadataRepository.java
│   │       │                       ├── ConfigurationMetadataRepositoryJsonBuilder.java
│   │       │                       ├── ConfigurationMetadataSource.java
│   │       │                       ├── Deprecation.java
│   │       │                       ├── Hints.java
│   │       │                       ├── JsonReader.java
│   │       │                       ├── RawConfigurationMetadata.java
│   │       │                       ├── SentenceExtractor.java
│   │       │                       ├── SimpleConfigurationMetadataRepository.java
│   │       │                       ├── ValueHint.java
│   │       │                       ├── ValueProvider.java
│   │       │                       └── package-info.java
│   │       └── test/
│   │           ├── java/
│   │           │   └── org/
│   │           │       └── springframework/
│   │           │           └── boot/
│   │           │               └── configurationmetadata/
│   │           │                   ├── AbstractConfigurationMetadataTests.java
│   │           │                   ├── ConfigurationMetadataRepositoryJsonBuilderTests.java
│   │           │                   ├── JsonReaderTests.java
│   │           │                   └── SentenceExtractorTests.java
│   │           └── resources/
│   │               └── metadata/
│   │                   ├── configuration-metadata-bar.json
│   │                   ├── configuration-metadata-deprecated.json
│   │                   ├── configuration-metadata-empty-groups.json
│   │                   ├── configuration-metadata-empty.json
│   │                   ├── configuration-metadata-foo.json
│   │                   ├── configuration-metadata-foo2.json
│   │                   ├── configuration-metadata-foo3.json
│   │                   ├── configuration-metadata-invalid.json
│   │                   ├── configuration-metadata-map.json
│   │                   ├── configuration-metadata-multi-groups.json
│   │                   └── configuration-metadata-root.json
│   ├── spring-boot-configuration-metadata-changelog-generator/
│   │   ├── build.gradle
│   │   └── src/
│   │       ├── main/
│   │       │   └── java/
│   │       │       └── org/
│   │       │           └── springframework/
│   │       │               └── boot/
│   │       │                   └── configurationmetadata/
│   │       │                       └── changelog/
│   │       │                           ├── Changelog.java
│   │       │                           ├── ChangelogGenerator.java
│   │       │                           ├── ChangelogWriter.java
│   │       │                           ├── Difference.java
│   │       │                           ├── DifferenceType.java
│   │       │                           └── package-info.java
│   │       └── test/
│   │           ├── java/
│   │           │   └── org/
│   │           │       └── springframework/
│   │           │           └── boot/
│   │           │               └── configurationmetadata/
│   │           │                   └── changelog/
│   │           │                       ├── ChangelogGeneratorTests.java
│   │           │                       ├── ChangelogTests.java
│   │           │                       ├── ChangelogWriterTests.java
│   │           │                       ├── DifferenceTests.java
│   │           │                       └── TestChangelog.java
│   │           └── resources/
│   │               ├── sample-1.0.json
│   │               ├── sample-2.0.json
│   │               └── sample.adoc
│   └── spring-boot-configuration-processor/
│       ├── build.gradle
│       └── src/
│           ├── json-shade/
│           │   ├── README.adoc
│           │   └── java/
│           │       └── org/
│           │           └── springframework/
│           │               └── boot/
│           │                   └── configurationprocessor/
│           │                       └── json/
│           │                           ├── JSON.java
│           │                           ├── JSONArray.java
│           │                           ├── JSONException.java
│           │                           ├── JSONObject.java
│           │                           ├── JSONStringer.java
│           │                           └── JSONTokener.java
│           ├── main/
│           │   ├── java/
│           │   │   └── org/
│           │   │       └── springframework/
│           │   │           └── boot/
│           │   │               └── configurationprocessor/
│           │   │                   ├── ConfigurationMetadataAnnotationProcessor.java
│           │   │                   ├── ConfigurationPropertiesSourceResolver.java
│           │   │                   ├── ConstructorParameterPropertyDescriptor.java
│           │   │                   ├── JavaBeanPropertyDescriptor.java
│           │   │                   ├── LombokPropertyDescriptor.java
│           │   │                   ├── MetadataCollector.java
│           │   │                   ├── MetadataCollectors.java
│           │   │                   ├── MetadataGenerationEnvironment.java
│           │   │                   ├── MetadataStore.java
│           │   │                   ├── ParameterPropertyDescriptor.java
│           │   │                   ├── PropertyDescriptor.java
│           │   │                   ├── PropertyDescriptorResolver.java
│           │   │                   ├── RecordParameterPropertyDescriptor.java
│           │   │                   ├── TypeElementMembers.java
│           │   │                   ├── TypeUtils.java
│           │   │                   ├── fieldvalues/
│           │   │                   │   ├── FieldValuesParser.java
│           │   │                   │   ├── javac/
│           │   │                   │   │   ├── ExpressionTree.java
│           │   │                   │   │   ├── JavaCompilerFieldValuesParser.java
│           │   │                   │   │   ├── ReflectionWrapper.java
│           │   │                   │   │   ├── Tree.java
│           │   │                   │   │   ├── TreeVisitor.java
│           │   │                   │   │   ├── Trees.java
│           │   │                   │   │   ├── VariableTree.java
│           │   │                   │   │   └── package-info.java
│           │   │                   │   └── package-info.java
│           │   │                   ├── metadata/
│           │   │                   │   ├── ConfigurationMetadata.java
│           │   │                   │   ├── InvalidConfigurationMetadataException.java
│           │   │                   │   ├── ItemDeprecation.java
│           │   │                   │   ├── ItemHint.java
│           │   │                   │   ├── ItemIgnore.java
│           │   │                   │   ├── ItemMetadata.java
│           │   │                   │   ├── JsonConverter.java
│           │   │                   │   ├── JsonMarshaller.java
│           │   │                   │   └── package-info.java
│           │   │                   ├── package-info.java
│           │   │                   └── support/
│           │   │                       ├── ConventionUtils.java
│           │   │                       └── package-info.java
│           │   └── resources/
│           │       └── META-INF/
│           │           ├── gradle/
│           │           │   └── incremental.annotation.processors
│           │           └── services/
│           │               └── javax.annotation.processing.Processor
│           └── test/
│               ├── java/
│               │   └── org/
│               │       └── springframework/
│               │           └── boot/
│               │               ├── configurationprocessor/
│               │               │   ├── AbstractMetadataGenerationTests.java
│               │               │   ├── ConfigurationMetadataAnnotationProcessorTests.java
│               │               │   ├── ConstructorParameterPropertyDescriptorTests.java
│               │               │   ├── DeducedImmutablePropertiesMetadataGenerationTests.java
│               │               │   ├── EndpointMetadataGenerationTests.java
│               │               │   ├── GenericsMetadataGenerationTests.java
│               │               │   ├── ImmutablePropertiesMetadataGenerationTests.java
│               │               │   ├── IncrementalBuildMetadataGenerationTests.java
│               │               │   ├── InheritanceMetadataGenerationTests.java
│               │               │   ├── JavaBeanPropertyDescriptorTests.java
│               │               │   ├── LombokMetadataGenerationTests.java
│               │               │   ├── LombokPropertyDescriptorTests.java
│               │               │   ├── MergeMetadataGenerationTests.java
│               │               │   ├── MetadataCollectorTests.java
│               │               │   ├── MetadataGenerationEnvironmentFactory.java
│               │               │   ├── MetadataStoreTests.java
│               │               │   ├── MethodBasedMetadataGenerationTests.java
│               │               │   ├── NameAnnotationPropertiesTests.java
│               │               │   ├── PropertyDescriptorResolverTests.java
│               │               │   ├── PropertyDescriptorTests.java
│               │               │   ├── TestProject.java
│               │               │   ├── TypeUtilsTests.java
│               │               │   ├── fieldvalues/
│               │               │   │   ├── AbstractFieldValuesProcessorTests.java
│               │               │   │   └── javac/
│               │               │   │       └── JavaCompilerFieldValuesProcessorTests.java
│               │               │   ├── metadata/
│               │               │   │   ├── ItemHintTests.java
│               │               │   │   ├── ItemMetadataTests.java
│               │               │   │   ├── JsonMarshallerTests.java
│               │               │   │   ├── Metadata.java
│               │               │   │   └── TestJsonConverter.java
│               │               │   ├── support/
│               │               │   │   └── ConventionUtilsTests.java
│               │               │   └── test/
│               │               │       ├── CompiledMetadataReader.java
│               │               │       ├── ItemMetadataAssert.java
│               │               │       ├── RoundEnvironmentTester.java
│               │               │       ├── TestConfigurationMetadataAnnotationProcessor.java
│               │               │       └── TestableAnnotationProcessor.java
│               │               └── configurationsample/
│               │                   ├── TestAccess.java
│               │                   ├── TestAutowired.java
│               │                   ├── TestConfigurationProperties.java
│               │                   ├── TestConfigurationPropertiesSource.java
│               │                   ├── TestConstructorBinding.java
│               │                   ├── TestControllerEndpoint.java
│               │                   ├── TestDefaultValue.java
│               │                   ├── TestDeprecatedConfigurationProperty.java
│               │                   ├── TestEndpoint.java
│               │                   ├── TestJmxEndpoint.java
│               │                   ├── TestName.java
│               │                   ├── TestNestedConfigurationProperty.java
│               │                   ├── TestReadOperation.java
│               │                   ├── TestRestControllerEndpoint.java
│               │                   ├── TestServletEndpoint.java
│               │                   ├── TestWebEndpoint.java
│               │                   ├── deprecation/
│               │                   │   └── Dbcp2Configuration.java
│               │                   ├── endpoint/
│               │                   │   ├── CamelCaseEndpoint.java
│               │                   │   ├── CustomPropertiesEndpoint.java
│               │                   │   ├── EnabledEndpoint.java
│               │                   │   ├── NoAccessEndpoint.java
│               │                   │   ├── NullableParameterEndpoint.java
│               │                   │   ├── ReadOnlyAccessEndpoint.java
│               │                   │   ├── SimpleEndpoint.java
│               │                   │   ├── SimpleEndpoint2.java
│               │                   │   ├── SimpleEndpoint3.java
│               │                   │   ├── SpecificEndpoint.java
│               │                   │   ├── UnrestrictedAccessEndpoint.java
│               │                   │   └── incremental/
│               │                   │       ├── IncrementalEndpoint.java
│               │                   │       └── IncrementalSpecificEndpoint.java
│               │                   ├── fieldvalues/
│               │                   │   ├── FieldValues.java
│               │                   │   └── UnknownElementType.java
│               │                   ├── generic/
│               │                   │   ├── AbstractGenericProperties.java
│               │                   │   ├── AbstractIntermediateGenericProperties.java
│               │                   │   ├── ComplexGenericProperties.java
│               │                   │   ├── ConcreteBuilderProperties.java
│               │                   │   ├── GenericBuilderProperties.java
│               │                   │   ├── GenericConfig.java
│               │                   │   ├── MixGenericNameProperties.java
│               │                   │   ├── SimpleGenericProperties.java
│               │                   │   ├── UnresolvedGenericProperties.java
│               │                   │   ├── UpperBoundGenericPojo.java
│               │                   │   └── WildcardConfig.java
│               │                   ├── immutable/
│               │                   │   ├── DeducedImmutableClassProperties.java
│               │                   │   ├── ImmutableClassConstructorBindingProperties.java
│               │                   │   ├── ImmutableCollectionProperties.java
│               │                   │   ├── ImmutableDeducedConstructorBindingProperties.java
│               │                   │   ├── ImmutableInnerClassProperties.java
│               │                   │   ├── ImmutableMultiConstructorProperties.java
│               │                   │   ├── ImmutablePrimitiveProperties.java
│               │                   │   ├── ImmutablePrimitiveWithDefaultsProperties.java
│               │                   │   ├── ImmutablePrimitiveWrapperWithDefaultsProperties.java
│               │                   │   └── ImmutableSimpleProperties.java
│               │                   ├── incremental/
│               │                   │   ├── BarProperties.java
│               │                   │   ├── FooProperties.java
│               │                   │   └── RenamedBarProperties.java
│               │                   ├── inheritance/
│               │                   │   ├── BaseProperties.java
│               │                   │   ├── ChildProperties.java
│               │                   │   ├── ChildPropertiesConfig.java
│               │                   │   ├── OverrideChildProperties.java
│               │                   │   └── OverrideChildPropertiesConfig.java
│               │                   ├── lombok/
│               │                   │   ├── LombokAccessLevelOverwriteDataProperties.java
│               │                   │   ├── LombokAccessLevelOverwriteDefaultProperties.java
│               │                   │   ├── LombokAccessLevelOverwriteExplicitProperties.java
│               │                   │   ├── LombokAccessLevelProperties.java
│               │                   │   ├── LombokDefaultValueProperties.java
│               │                   │   ├── LombokDeprecatedProperties.java
│               │                   │   ├── LombokDeprecatedSingleProperty.java
│               │                   │   ├── LombokExplicitProperties.java
│               │                   │   ├── LombokInnerClassProperties.java
│               │                   │   ├── LombokInnerClassWithGetterProperties.java
│               │                   │   ├── LombokSimpleDataProperties.java
│               │                   │   ├── LombokSimpleProperties.java
│               │                   │   ├── LombokSimpleValueProperties.java
│               │                   │   └── SimpleLombokPojo.java
│               │                   ├── method/
│               │                   │   ├── DeprecatedClassMethodConfig.java
│               │                   │   ├── DeprecatedMethodConfig.java
│               │                   │   ├── EmptyTypeMethodConfig.java
│               │                   │   ├── InvalidMethodConfig.java
│               │                   │   ├── MethodAndClassConfig.java
│               │                   │   ├── NestedPropertiesMethod.java
│               │                   │   ├── NestedPropertiesMethodImmutable.java
│               │                   │   ├── NestedProperty.java
│               │                   │   ├── PackagePrivateMethodConfig.java
│               │                   │   ├── PrivateMethodConfig.java
│               │                   │   ├── ProtectedMethodConfig.java
│               │                   │   ├── PublicMethodConfig.java
│               │                   │   └── SingleConstructorMethodConfig.java
│               │                   ├── name/
│               │                   │   ├── ConstructorParameterNameAnnotationProperties.java
│               │                   │   ├── JavaBeanNameAnnotationProperties.java
│               │                   │   ├── LombokNameAnnotationProperties.java
│               │                   │   └── RecordComponentNameAnnotationProperties.java
│               │                   ├── record/
│               │                   │   ├── ExampleRecord.java
│               │                   │   ├── NestedPropertiesRecord.java
│               │                   │   ├── NestedRecord.java
│               │                   │   └── RecordWithGetter.java
│               │                   ├── recursive/
│               │                   │   └── RecursiveProperties.java
│               │                   ├── simple/
│               │                   │   ├── AutowiredProperties.java
│               │                   │   ├── ClassWithNestedProperties.java
│               │                   │   ├── DeprecatedFieldSingleProperty.java
│               │                   │   ├── DeprecatedProperties.java
│               │                   │   ├── DeprecatedRecord.java
│               │                   │   ├── DeprecatedSingleProperty.java
│               │                   │   ├── DescriptionProperties.java
│               │                   │   ├── HierarchicalProperties.java
│               │                   │   ├── HierarchicalPropertiesGrandparent.java
│               │                   │   ├── HierarchicalPropertiesParent.java
│               │                   │   ├── IgnoredProperties.java
│               │                   │   ├── InnerClassWithPrivateConstructor.java
│               │                   │   ├── NotAnnotated.java
│               │                   │   ├── SimpleArrayProperties.java
│               │                   │   ├── SimpleCollectionProperties.java
│               │                   │   ├── SimplePrefixValueProperties.java
│               │                   │   ├── SimpleProperties.java
│               │                   │   └── SimpleTypeProperties.java
│               │                   ├── source/
│               │                   │   ├── BaseSource.java
│               │                   │   ├── ConcreteProperties.java
│               │                   │   ├── ConcreteSource.java
│               │                   │   ├── ConcreteSourceAnnotated.java
│               │                   │   ├── ConventionSource.java
│               │                   │   ├── ConventionSourceAnnotated.java
│               │                   │   ├── ImmutableSource.java
│               │                   │   ├── ImmutableSourceAnnotated.java
│               │                   │   ├── LombokSource.java
│               │                   │   ├── LombokSourceAnnotated.java
│               │                   │   ├── ParentWithHintProperties.java
│               │                   │   ├── RecordSource.java
│               │                   │   ├── RecordSourceAnnotated.java
│               │                   │   ├── SimpleSource.java
│               │                   │   ├── SimpleSourceAnnotated.java
│               │                   │   └── generation/
│               │                   │       ├── AbstractPropertiesSource.java
│               │                   │       ├── ConfigurationPropertySourcesContainer.java
│               │                   │       ├── ImmutablePropertiesSource.java
│               │                   │       ├── LombokPropertiesSource.java
│               │                   │       ├── NestedPropertiesSource.java
│               │                   │       ├── RecordPropertiesSources.java
│               │                   │       └── SimplePropertiesSource.java
│               │                   └── specific/
│               │                       ├── AnnotatedGetter.java
│               │                       ├── BoxingPojo.java
│               │                       ├── BuilderPojo.java
│               │                       ├── DeprecatedLessPreciseTypePojo.java
│               │                       ├── DeprecatedSimplePojo.java
│               │                       ├── DeprecatedUnrelatedMethodPojo.java
│               │                       ├── DoubleRegistrationProperties.java
│               │                       ├── EmptyDefaultValueProperties.java
│               │                       ├── EnumValuesPojo.java
│               │                       ├── ExcludedTypesPojo.java
│               │                       ├── InnerClassAnnotatedGetterConfig.java
│               │                       ├── InnerClassHierarchicalProperties.java
│               │                       ├── InnerClassProperties.java
│               │                       ├── InnerClassRootConfig.java
│               │                       ├── InvalidAccessorProperties.java
│               │                       ├── InvalidDefaultValueCharacterProperties.java
│               │                       ├── InvalidDefaultValueFloatingPointProperties.java
│               │                       ├── InvalidDefaultValueNumberProperties.java
│               │                       ├── InvalidDoubleRegistrationProperties.java
│               │                       ├── MatchingConstructorNoDirectiveProperties.java
│               │                       ├── SimpleConflictingProperties.java
│               │                       ├── SimplePojo.java
│               │                       ├── StaticAccessor.java
│               │                       └── TwoConstructorsExample.java
│               └── resources/
│                   ├── META-INF/
│                   │   └── spring/
│                   │       └── configuration-metadata/
│                   │           ├── org.springframework.boot.configurationsample.source.BaseSource.json
│                   │           ├── org.springframework.boot.configurationsample.source.ConventionSource.json
│                   │           ├── org.springframework.boot.configurationsample.source.ImmutableSource.json
│                   │           ├── org.springframework.boot.configurationsample.source.LombokSource.json
│                   │           ├── org.springframework.boot.configurationsample.source.RecordSource.json
│                   │           └── org.springframework.boot.configurationsample.source.SimpleSource.json
│                   └── org/
│                       └── springframework/
│                           └── boot/
│                               └── configurationsample/
│                                   └── incremental/
│                                       └── BarProperties.snippet
├── core/
│   ├── spring-boot/
│   │   ├── build.gradle
│   │   └── src/
│   │       ├── main/
│   │       │   ├── java/
│   │       │   │   └── org/
│   │       │   │       └── springframework/
│   │       │   │           └── boot/
│   │       │   │               ├── AotInitializerNotFoundException.java
│   │       │   │               ├── ApplicationArguments.java
│   │       │   │               ├── ApplicationContextFactory.java
│   │       │   │               ├── ApplicationEnvironment.java
│   │       │   │               ├── ApplicationInfoPropertySource.java
│   │       │   │               ├── ApplicationProperties.java
│   │       │   │               ├── ApplicationRunner.java
│   │       │   │               ├── Banner.java
│   │       │   │               ├── BeanDefinitionLoader.java
│   │       │   │               ├── ClearCachesApplicationListener.java
│   │       │   │               ├── CommandLineRunner.java
│   │       │   │               ├── DefaultApplicationArgu
Download .txt
Showing preview only (6,411K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (67400 symbols across 7399 files)

FILE: build-plugin/spring-boot-antlib/src/it/sample/src/main/java/org/test/SampleApplication.java
  class SampleApplication (line 21) | public class SampleApplication {
    method main (line 23) | public static void main(String[] args) {

FILE: build-plugin/spring-boot-antlib/src/main/java/org/springframework/boot/ant/FindMainClass.java
  class FindMainClass (line 37) | public class FindMainClass extends Task {
    method FindMainClass (line 47) | public FindMainClass(Project project) {
    method execute (line 51) | @Override
    method findMainClass (line 63) | private @Nullable String findMainClass() {
    method handle (line 82) | private void handle(String mainClass) {
    method setMainClass (line 95) | public void setMainClass(String mainClass) {
    method setClassesRoot (line 103) | public void setClassesRoot(File classesRoot) {
    method setProperty (line 111) | public void setProperty(String property) {

FILE: build-plugin/spring-boot-antlib/src/main/java/org/springframework/boot/ant/ShareAntlibLoader.java
  class ShareAntlibLoader (line 32) | public class ShareAntlibLoader extends Task {
    method ShareAntlibLoader (line 36) | public ShareAntlibLoader(Project project) {
    method execute (line 40) | @Override
    method setRefid (line 48) | public void setRefid(@Nullable String refid) {

FILE: build-plugin/spring-boot-gradle-plugin/src/dockerTest/java/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests.java
  class BootBuildImageIntegrationTests (line 67) | @GradleCompatibility(configurationCache = true)
    method buildsImageWithDefaultBuilder (line 74) | @TestTemplate
    method buildsImageWithTrustBuilder (line 92) | @TestTemplate
    method buildsImageWithWarPackaging (line 109) | @TestTemplate
    method buildsImageWithWarPackagingAndJarConfiguration (line 127) | @TestTemplate
    method buildsImageWithCustomName (line 145) | @TestTemplate
    method buildsImageWithCustomBuilderAndRunImage (line 159) | @TestTemplate
    method buildsImageWithCommandLineOptions (line 173) | @TestTemplate
    method buildsImageWithPullPolicy (line 193) | @TestTemplate
    method buildsImageWithBuildpackFromBuilder (line 211) | @TestTemplate
    method buildsImageWithBuildpackFromDirectory (line 226) | @TestTemplate
    method buildsImageWithBuildpackFromTarGzip (line 242) | @TestTemplate
    method buildsImageWithBuildpacksFromImages (line 259) | @TestTemplate
    method buildsImageWithBinding (line 274) | @TestTemplate
    method buildsImageWithTag (line 293) | @TestTemplate
    method buildsImageWithNetworkModeNone (line 309) | @TestTemplate
    method buildsImageWithVolumeCaches (line 325) | @TestTemplate
    method buildsImageWithBindCaches (line 341) | @TestTemplate
    method cleanupCache (line 365) | private static void cleanupCache(Path cachePath) {
    method buildsImageWithCreatedDate (line 374) | @TestTemplate
    method buildsImageWithCurrentCreatedDate (line 391) | @TestTemplate
    method buildsImageWithApplicationDirectory (line 412) | @TestTemplate
    method buildsImageWithEmptySecurityOptions (line 427) | @TestTemplate
    method buildsImageOnLinuxArmWithImagePlatformLinuxArm (line 442) | @TestTemplate
    method buildsImageWithMultipleCommandLineEnvironments (line 472) | @TestTemplate
    method failsWhenBuildingOnLinuxAmdWithImagePlatformLinuxArm (line 486) | @TestTemplate
    method failsWithInvalidCreatedDate (line 511) | @TestTemplate
    method failsWithBuilderError (line 522) | @TestTemplate
    method failsWithInvalidImageName (line 534) | @TestTemplate
    method failsWithBuildpackNotInBuilder (line 546) | @TestTemplate
    method failsWithInvalidTag (line 557) | @TestTemplate
    method failsWhenCachesAreConfiguredTwice (line 569) | @TestTemplate
    method failsWithIncompatiblePlatform (line 577) | @TestTemplate
    method writeMainClass (line 586) | private void writeMainClass() throws IOException {
    method writeLongNameResource (line 608) | private void writeLongNameResource() throws IOException {
    method writeBuildpackContent (line 618) | private void writeBuildpackContent() throws IOException {
    method tarGzipBuildpackContent (line 654) | private void tarGzipBuildpackContent() throws IOException {
    method writeDirectoryToTar (line 663) | private void writeDirectoryToTar(TarArchiveOutputStream tar, File dir,...
    method writeTarEntry (line 677) | private void writeTarEntry(TarArchiveOutputStream tar, String name, in...
    method writeTarEntry (line 684) | private void writeTarEntry(TarArchiveOutputStream tar, File file, Stri...
    method writeCertificateBindingFiles (line 692) | private void writeCertificateBindingFiles() throws IOException {
    method removeImages (line 709) | private void removeImages(String... names) throws IOException {
    method deleteVolumes (line 721) | private void deleteVolumes(String... names) throws IOException {

FILE: build-plugin/spring-boot-gradle-plugin/src/dockerTest/java/org/springframework/boot/gradle/tasks/bundling/BootBuildImageRegistryIntegrationTests.java
  class BootBuildImageRegistryIntegrationTests (line 49) | @GradleCompatibility
    method setUp (line 62) | @BeforeEach
    method buildsImageAndPublishesToRegistry (line 68) | @TestTemplate
    method writeMainClass (line 87) | private void writeMainClass() {

FILE: build-plugin/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/dsl/SpringBootExtension.java
  class SpringBootExtension (line 41) | public class SpringBootExtension {
    method SpringBootExtension (line 52) | public SpringBootExtension(Project project) {
    method getMainClass (line 62) | public Property<String> getMainClass() {
    method buildInfo (line 74) | public void buildInfo() {
    method buildInfo (line 88) | public void buildInfo(@Nullable Action<BuildInfo> configurer) {
    method configureBuildInfoTask (line 108) | private void configureBuildInfoTask(BuildInfo task) {
    method determineArtifactBaseName (line 113) | private @Nullable String determineArtifactBaseName() {
    method findArtifactTask (line 118) | private @Nullable Jar findArtifactTask() {

FILE: build-plugin/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/plugin/ApplicationPluginAction.java
  class ApplicationPluginAction (line 49) | final class ApplicationPluginAction implements PluginApplicationAction {
    method execute (line 51) | @Override
    method applyApplicationDefaultJvmArgsToRunTasks (line 67) | private void applyApplicationDefaultJvmArgsToRunTasks(TaskContainer ta...
    method applyApplicationDefaultJvmArgsToRunTask (line 72) | private void applyApplicationDefaultJvmArgsToRunTask(TaskContainer tas...
    method configureCreateStartScripts (line 79) | private void configureCreateStartScripts(Project project, JavaApplicat...
    method artifactFilesToLibCopySpec (line 99) | private CopySpec artifactFilesToLibCopySpec(Project project, Configura...
    method artifactFiles (line 105) | private Callable<FileCollection> artifactFiles(Configuration configura...
    method getPluginClass (line 109) | @Override
    method loadResource (line 114) | private String loadResource(String name) {
    method getResourceAsStream (line 129) | private InputStream getResourceAsStream(String name) {
    method configureFilePermissions (line 135) | private void configureFilePermissions(CopySpec copySpec, int mode) {
    method configureFileMode (line 144) | private void configureFileMode(CopySpec copySpec, int mode) {

FILE: build-plugin/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/plugin/CyclonedxPluginAction.java
  class CyclonedxPluginAction (line 44) | final class CyclonedxPluginAction implements PluginApplicationAction {
    method getPluginClass (line 46) | @Override
    method execute (line 51) | @Override
    method configureCycloneDxTask (line 60) | private void configureCycloneDxTask(TaskProvider<CyclonedxAggregateTas...
    method configureJavaPlugin (line 70) | private void configureJavaPlugin(Project project, TaskProvider<Cyclone...
    method configureSpringBootPlugin (line 85) | private void configureSpringBootPlugin(Project project,
    method configureBootJarTask (line 93) | private void configureBootJarTask(Project project, TaskProvider<Cyclon...
    method configureBootWarTask (line 98) | private void configureBootWarTask(Project project, TaskProvider<Cyclon...
    method configureBootJarTask (line 103) | private void configureBootJarTask(BootJar task, TaskProvider<Cyclonedx...
    method configureBootWarTask (line 107) | private void configureBootWarTask(BootWar task, TaskProvider<Cyclonedx...
    method configureJarTask (line 111) | private void configureJarTask(Jar task, TaskProvider<CyclonedxAggregat...
    method configureTask (line 122) | private <T extends Task> void configureTask(Project project, String na...
    method configurePlugin (line 130) | private <T extends Plugin<?>> void configurePlugin(Project project, Cl...

FILE: build-plugin/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/plugin/DependencyManagementPluginAction.java
  class DependencyManagementPluginAction (line 33) | final class DependencyManagementPluginAction implements PluginApplicatio...
    method execute (line 35) | @Override
    method getPluginClass (line 43) | @Override

FILE: build-plugin/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/plugin/JarTypeFileSpec.java
  class JarTypeFileSpec (line 33) | class JarTypeFileSpec implements Spec<File> {
    method isSatisfiedBy (line 37) | @Override

FILE: build-plugin/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/plugin/JavaPluginAction.java
  class JavaPluginAction (line 62) | final class JavaPluginAction implements PluginApplicationAction {
    method JavaPluginAction (line 68) | JavaPluginAction(SinglePublishedArtifact singlePublishedArtifact) {
    method getPluginClass (line 72) | @Override
    method execute (line 77) | @Override
    method classifyJarTask (line 97) | private void classifyJarTask(Project project) {
    method configureBuildTask (line 103) | private void configureBuildTask(Project project) {
    method configureResolveMainClassNameTask (line 109) | private TaskProvider<ResolveMainClassName> configureResolveMainClassNa...
    method configureResolveMainTestClassNameTask (line 136) | private TaskProvider<ResolveMainClassName> configureResolveMainTestCla...
    method getJavaApplicationMainClass (line 153) | private static @Nullable String getJavaApplicationMainClass(ExtensionC...
    method configureBootJarTask (line 161) | private TaskProvider<BootJar> configureBootJarTask(Project project,
    method configureBootBuildImageTask (line 193) | private void configureBootBuildImageTask(Project project, TaskProvider...
    method configureArtifactPublication (line 201) | private void configureArtifactPublication(TaskProvider<BootJar> bootJa...
    method configureBootRunTask (line 205) | private void configureBootRunTask(Project project, TaskProvider<Resolv...
    method configureBootTestRunTask (line 221) | private void configureBootTestRunTask(Project project, TaskProvider<Re...
    method configureToolchainConvention (line 237) | private void configureToolchainConvention(Project project, BootRun run) {
    method javaPluginExtension (line 243) | private JavaPluginExtension javaPluginExtension(Project project) {
    method configureUtf8Encoding (line 247) | private void configureUtf8Encoding(Project evaluatedProject) {
    method configureUtf8Encoding (line 251) | private void configureUtf8Encoding(JavaCompile compile) {
    method configureParametersCompilerArg (line 257) | private void configureParametersCompilerArg(Project project) {
    method configureAdditionalMetadataLocations (line 266) | private void configureAdditionalMetadataLocations(Project project) {
    method configureAdditionalMetadataLocations (line 272) | private void configureAdditionalMetadataLocations(JavaCompile compile) {
    method configureProductionRuntimeClasspathConfiguration (line 284) | @SuppressWarnings({ "rawtypes", "unchecked" })
    method configureDevelopmentOnlyConfiguration (line 304) | private void configureDevelopmentOnlyConfiguration(Project project) {
    method configureTestAndDevelopmentOnlyConfiguration (line 315) | private void configureTestAndDevelopmentOnlyConfiguration(Project proj...
    method configureSpringBootStarterTestToDependOnJUnitPlatformLauncher (line 328) | private void configureSpringBootStarterTestToDependOnJUnitPlatformLaun...
    class AdditionalMetadataLocationsConfigurer (line 342) | private static final class AdditionalMetadataLocationsConfigurer imple...
      method AdditionalMetadataLocationsConfigurer (line 346) | private AdditionalMetadataLocationsConfigurer(Set<File> locations) {
      method execute (line 350) | @Override
      method hasConfigurationProcessorOnClasspath (line 360) | private boolean hasConfigurationProcessorOnClasspath(JavaCompile com...
      method configureAdditionalMetadataLocations (line 368) | private void configureAdditionalMetadataLocations(JavaCompile compil...

FILE: build-plugin/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/plugin/KotlinPluginAction.java
  class KotlinPluginAction (line 33) | class KotlinPluginAction implements PluginApplicationAction {
    method execute (line 35) | @Override
    method configureKotlinVersionProperty (line 42) | private void configureKotlinVersionProperty(Project project) {
    method getKotlinVersion (line 50) | private String getKotlinVersion(Project project) {
    method enableJavaParametersOption (line 54) | private void enableJavaParametersOption(Project project) {
    method repairDamageToAotCompileConfigurations (line 60) | private void repairDamageToAotCompileConfigurations(Project project) {
    method getPluginClass (line 67) | @Override

FILE: build-plugin/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/plugin/NativeImagePluginAction.java
  class NativeImagePluginAction (line 44) | class NativeImagePluginAction implements PluginApplicationAction {
    method getPluginClass (line 46) | @Override
    method execute (line 51) | @Override
    method configureMainNativeBinaryClasspath (line 65) | private void configureMainNativeBinaryClasspath(Project project, Sourc...
    method removeDevelopmentOnly (line 74) | private Iterable<Configuration> removeDevelopmentOnly(Set<Configuratio...
    method isNotDevelopmentOnly (line 80) | private boolean isNotDevelopmentOnly(Configuration configuration) {
    method configureTestNativeBinaryClasspath (line 85) | private void configureTestNativeBinaryClasspath(SourceSetContainer sou...
    method configureGraalVmExtension (line 91) | private GraalVMExtension configureGraalVmExtension(Project project) {
    method copyReachabilityMetadataToBootJar (line 97) | private void copyReachabilityMetadataToBootJar(Project project) {
    method configureJarManifestNativeAttribute (line 103) | private void configureJarManifestNativeAttribute(Project project) {
    method addNativeProcessedAttribute (line 109) | private void addNativeProcessedAttribute(BootJar bootJar) {
    method addNativeProcessedAttribute (line 113) | private void addNativeProcessedAttribute(Manifest manifest) {

FILE: build-plugin/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/plugin/PluginApplicationAction.java
  type PluginApplicationAction (line 29) | interface PluginApplicationAction extends Action<Project> {
    method getPluginClass (line 38) | Class<? extends Plugin<? extends Project>> getPluginClass() throws Cla...

FILE: build-plugin/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/plugin/ProtobufPluginAction.java
  class ProtobufPluginAction (line 46) | final class ProtobufPluginAction implements PluginApplicationAction {
    method getPluginClass (line 56) | @Override
    method execute (line 61) | @Override
    method configureProtoc (line 72) | private void configureProtoc(ExecutableLocator protoc) {
    method configurePlugins (line 76) | private ExecutableLocator configurePlugins(NamedDomainObjectContainer<...
    method configureGenerateProtoTasks (line 80) | private void configureGenerateProtoTasks(GenerateProtoTaskCollection t...
    method configureGenerateProtoTask (line 84) | private void configureGenerateProtoTask(GenerateProtoTask task) {
    method configureGrpcOptions (line 88) | private void configureGrpcOptions(PluginOptions grpc) {
    method isProtobufToolsLocator (line 92) | private boolean isProtobufToolsLocator(String name) {
    method configureProtobufToolsLocator (line 96) | private void configureProtobufToolsLocator(Project project, Configurat...
    method versionAlignmentFor (line 105) | private @Nullable VersionAlignment versionAlignmentFor(DependencyResol...
    method alignVersionWith (line 118) | private VersionAlignment alignVersionWith(String group, String module) {
    method asDependencySpec (line 122) | private String asDependencySpec() {
    method applyIfPossible (line 130) | void applyIfPossible(Project project, DependencyResolveDetails details) {
    method accepts (line 134) | boolean accepts(DependencyResolveDetails details) {
    method versionFromRuntimeClasspath (line 139) | private Optional<String> versionFromRuntimeClasspath(Project project, ...

FILE: build-plugin/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/plugin/ResolveMainClassName.java
  class ResolveMainClassName (line 54) | @DisableCachingByDefault(because = "Not worth caching")
    method ResolveMainClassName (line 68) | public ResolveMainClassName() {
    method getClasspath (line 78) | @Classpath
    method setClasspath (line 88) | public void setClasspath(FileCollection classpath) {
    method setClasspath (line 98) | public void setClasspath(Object classpath) {
    method getOutputFile (line 107) | @OutputFile
    method getConfiguredMainClassName (line 117) | @Input
    method resolveAndStoreMainClassName (line 123) | @TaskAction
    method resolveMainClassName (line 132) | private String resolveMainClassName() {
    method findMainClass (line 146) | private @Nullable String findMainClass(File file) {
    method readMainClassName (line 155) | Provider<String> readMainClassName() {
    class ClassNameReader (line 164) | private static final class ClassNameReader implements Transformer<Stri...
      method ClassNameReader (line 168) | private ClassNameReader(String classpath) {
      method transform (line 172) | @Override

FILE: build-plugin/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/plugin/SinglePublishedArtifact.java
  class SinglePublishedArtifact (line 39) | final class SinglePublishedArtifact implements Buildable {
    method SinglePublishedArtifact (line 47) | SinglePublishedArtifact(Configuration configuration, ArtifactHandler h...
    method addWarCandidate (line 52) | void addWarCandidate(TaskProvider<BootWar> candidate) {
    method addJarCandidate (line 56) | void addJarCandidate(TaskProvider<BootJar> candidate) {
    method add (line 62) | private void add(TaskProvider<? extends Jar> artifact) {
    method getBuildDependencies (line 67) | @Override

FILE: build-plugin/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/plugin/SpringBootAotPlugin.java
  class SpringBootAotPlugin (line 55) | public class SpringBootAotPlugin implements Plugin<Project> {
    method apply (line 77) | @Override
    method configureSourceSet (line 94) | private SourceSet configureSourceSet(Project project, String newSource...
    method configureClassesAndResourcesLibraryElementsAttribute (line 108) | private void configureClassesAndResourcesLibraryElementsAttribute(Proj...
    method configureJavaRuntimeUsageAttribute (line 114) | private void configureJavaRuntimeUsageAttribute(Project project, Attri...
    method registerProcessAotTask (line 119) | private void registerProcessAotTask(Project project, SourceSet aotSour...
    method configureAotTask (line 147) | private void configureAotTask(Project project, SourceSet sourceSet, Ab...
    method configureToolchainConvention (line 159) | private void configureToolchainConvention(Project project, AbstractAot...
    method createAotProcessingClasspath (line 165) | @SuppressWarnings({ "unchecked", "rawtypes" })
    method removeDevelopmentOnly (line 190) | private Stream<Configuration> removeDevelopmentOnly(Set<Configuration>...
    method configureDependsOn (line 196) | private void configureDependsOn(Project project, SourceSet aotSourceSet,
    method registerProcessTestAotTask (line 203) | private void registerProcessTestAotTask(Project project, SourceSet mai...
    method addJUnitPlatformLauncherDependency (line 231) | private void addJUnitPlatformLauncherDependency(Project project, Confi...
    method repairKotlinPluginDamage (line 240) | void repairKotlinPluginDamage(Project project) {
    method repairKotlinPluginDamage (line 247) | private void repairKotlinPluginDamage(Project project, String sourceSe...

FILE: build-plugin/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/plugin/SpringBootPlugin.java
  class SpringBootPlugin (line 46) | public class SpringBootPlugin implements Plugin<Project> {
    method apply (line 118) | @Override
    method verifyGradleVersion (line 126) | private void verifyGradleVersion() {
    method createExtension (line 134) | private void createExtension(Project project) {
    method createBootArchivesConfiguration (line 138) | private Configuration createBootArchivesConfiguration(Project project) {
    method registerPluginActions (line 145) | private void registerPluginActions(Project project, Configuration boot...
    method withPluginClassOfAction (line 158) | private void withPluginClassOfAction(PluginApplicationAction action,

FILE: build-plugin/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/plugin/WarPluginAction.java
  class WarPluginAction (line 45) | class WarPluginAction implements PluginApplicationAction {
    method WarPluginAction (line 49) | WarPluginAction(SinglePublishedArtifact singlePublishedArtifact) {
    method getPluginClass (line 53) | @Override
    method execute (line 58) | @Override
    method classifyWarTask (line 66) | private void classifyWarTask(Project project) {
    method configureBootWarTask (line 72) | private TaskProvider<BootWar> configureBootWarTask(Project project) {
    method providedRuntimeConfiguration (line 112) | private FileCollection providedRuntimeConfiguration(Project project) {
    method configureBootBuildImageTask (line 117) | private void configureBootBuildImageTask(Project project, TaskProvider...
    method configureArtifactPublication (line 123) | private void configureArtifactPublication(TaskProvider<BootWar> bootWa...
    method javaPluginExtension (line 127) | private JavaPluginExtension javaPluginExtension(Project project) {

FILE: build-plugin/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/tasks/aot/AbstractAot.java
  class AbstractAot (line 36) | @DisableCachingByDefault(because = "Cacheability can only be determined ...
    method AbstractAot (line 49) | protected AbstractAot() {
    method getGroupId (line 61) | @Input
    method getArtifactId (line 70) | @Input
    method getSourcesOutput (line 79) | @OutputDirectory
    method getResourcesOutput (line 88) | @OutputDirectory
    method getClassesOutput (line 97) | @OutputDirectory
    method processorArgs (line 102) | List<String> processorArgs() {

FILE: build-plugin/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/tasks/aot/ProcessAot.java
  class ProcessAot (line 34) | @CacheableTask
    method ProcessAot (line 37) | public ProcessAot() {
    method getApplicationMainClass (line 45) | @Input
    method exec (line 48) | @Override

FILE: build-plugin/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/tasks/aot/ProcessTestAot.java
  class ProcessTestAot (line 45) | @CacheableTask
    method ProcessTestAot (line 50) | public ProcessTestAot() {
    method getClasspathRoots (line 58) | @InputFiles
    method setClasspathRoots (line 68) | public void setClasspathRoots(FileCollection classpathRoots) {
    method getInputClasses (line 72) | @InputFiles
    method exec (line 81) | @Override

FILE: build-plugin/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/tasks/buildinfo/BuildInfo.java
  class BuildInfo (line 46) | @DisableCachingByDefault(because = "Not worth caching")
    method BuildInfo (line 51) | public BuildInfo() {
    method getExcludes (line 62) | @Internal
    method getFilename (line 71) | @Input
    method generateBuildProperties (line 78) | @TaskAction
    method getDestinationDir (line 98) | @OutputDirectory
    method getProperties (line 106) | @Nested
    method properties (line 115) | public void properties(Action<BuildInfoProperties> action) {

FILE: build-plugin/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/tasks/buildinfo/BuildInfoProperties.java
  class BuildInfoProperties (line 46) | @SuppressWarnings("serial")
    method BuildInfoProperties (line 53) | @Inject
    method getGroup (line 68) | @Internal
    method getArtifact (line 75) | @Internal
    method getVersion (line 83) | @Internal
    method getName (line 91) | @Internal
    method getTime (line 98) | @Internal
    method getAdditional (line 106) | @Internal
    method getArtifactIfNotExcluded (line 109) | @Input
    method getGroupIfNotExcluded (line 115) | @Input
    method getNameIfNotExcluded (line 121) | @Input
    method getTimeIfNotExcluded (line 127) | @Input
    method getVersionIfNotExcluded (line 134) | @Input
    method getAdditionalIfNotExcluded (line 140) | @Input
    method getIfNotExcluded (line 145) | private <T> @Nullable T getIfNotExcluded(Property<T> property, String ...
    method getIfNotExcluded (line 150) | private <T> @Nullable T getIfNotExcluded(Property<T> property, String ...
    method coerceToStringValues (line 160) | private Map<String, String> coerceToStringValues(Map<String, Object> i...
    method applyExclusions (line 173) | private Map<String, Object> applyExclusions(Map<String, Object> input) {

FILE: build-plugin/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/tasks/bundling/BootArchive.java
  type BootArchive (line 42) | public interface BootArchive extends Task {
    method getMainClass (line 49) | @Input
    method requiresUnpack (line 57) | void requiresUnpack(String... patterns);
    method requiresUnpack (line 64) | void requiresUnpack(Spec<FileTreeElement> spec);
    method getClasspath (line 70) | @Optional
    method classpath (line 79) | void classpath(Object... classpath);
    method setClasspath (line 87) | void setClasspath(Object classpath);
    method setClasspath (line 94) | void setClasspath(FileCollection classpath);
    method getTargetJavaVersion (line 101) | @Input
    method resolvedArtifacts (line 112) | void resolvedArtifacts(Provider<Set<ResolvedArtifactResult>> resolvedA...
    method getIncludeTools (line 120) | @Input

FILE: build-plugin/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/tasks/bundling/BootArchiveSupport.java
  class BootArchiveSupport (line 52) | class BootArchiveSupport {
    method BootArchiveSupport (line 78) | BootArchiveSupport(String loaderMainClass, Spec<FileCopyDetails> libra...
    method configureManifest (line 86) | void configureManifest(Manifest manifest, String mainClass, String cla...
    method determineSpringBootVersion (line 111) | private String determineSpringBootVersion() {
    method createCopyAction (line 116) | CopyAction createCopyAction(Jar jar, ResolvedDependencies resolvedDepe...
    method createCopyAction (line 120) | CopyAction createCopyAction(Jar jar, ResolvedDependencies resolvedDepe...
    method getUnixNumericDirPermissions (line 139) | private @Nullable Integer getUnixNumericDirPermissions(CopySpec copySp...
    method getUnixNumericFilePermissions (line 144) | private @Nullable Integer getUnixNumericFilePermissions(CopySpec copyS...
    method asUnixNumeric (line 149) | private @Nullable Integer asUnixNumeric(Property<ConfigurableFilePermi...
    method getDirMode (line 153) | private @Nullable Integer getDirMode(CopySpec copySpec) {
    method getFileMode (line 162) | private @Nullable Integer getFileMode(CopySpec copySpec) {
    method isUsingDefaultLoader (line 171) | private boolean isUsingDefaultLoader(Jar jar) {
    method requiresUnpack (line 175) | void requiresUnpack(String... patterns) {
    method requiresUnpack (line 179) | void requiresUnpack(Spec<FileTreeElement> spec) {
    method excludeNonZipLibraryFiles (line 183) | void excludeNonZipLibraryFiles(FileCopyDetails details) {
    method excludeNonZipFiles (line 189) | void excludeNonZipFiles(FileCopyDetails details) {
    method isZip (line 195) | private boolean isZip(File file) {
    method isZip (line 206) | private boolean isZip(InputStream inputStream) throws IOException {
    method moveModuleInfoToRoot (line 215) | void moveModuleInfoToRoot(CopySpec spec) {
    method moveToRoot (line 219) | void moveToRoot(FileCopyDetails details) {

FILE: build-plugin/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/tasks/bundling/BootBuildImage.java
  class BootBuildImage (line 71) | @DisableCachingByDefault
    method BootBuildImage (line 86) | public BootBuildImage() {
    method asMap (line 113) | private static Map<String, String> asMap(List<String> variables) {
    method getArchiveFile (line 132) | @InputFile
    method getImageName (line 142) | @Input
    method getBuilder (line 152) | @Input
    method getTrustBuilder (line 162) | @Input
    method getRunImage (line 172) | @Input
    method getEnvironment (line 181) | @Internal
    method getEnvironmentFromCommandLine (line 189) | @Internal
    method getEffectiveEnvironment (line 194) | @Input
    method getCleanCache (line 202) | @Input
    method getVerboseLogging (line 211) | @Input
    method getPullPolicy (line 218) | @Input
    method setPullPolicy (line 229) | public void setPullPolicy(String pullPolicy) {
    method getPublish (line 238) | @Input
    method getBuildpacks (line 246) | @Input
    method getBindings (line 255) | @Input
    method getTags (line 263) | @Input
    method getNetwork (line 271) | @Input
    method getBuildWorkspace (line 281) | @Nested
    method buildWorkspace (line 293) | public void buildWorkspace(Action<CacheSpec> action) {
    method getBuildCache (line 301) | @Nested
    method buildCache (line 312) | public void buildCache(Action<CacheSpec> action) {
    method getLaunchCache (line 320) | @Nested
    method launchCache (line 331) | public void launchCache(Action<CacheSpec> action) {
    method getCreatedDate (line 340) | @Input
    method getApplicationDirectory (line 350) | @Input
    method getSecurityOptions (line 359) | @Input
    method getImagePlatform (line 370) | @Input
    method getDocker (line 381) | @Nested
    method docker (line 391) | public void docker(Action<DockerSpec> action) {
    method buildImage (line 395) | @TaskAction
    method createRequest (line 402) | BuildRequest createRequest() {
    method customize (line 407) | private BuildRequest customize(BuildRequest request) {
    method customizeBuilder (line 433) | private BuildRequest customizeBuilder(BuildRequest request) {
    method customizeRunImage (line 441) | private BuildRequest customizeRunImage(BuildRequest request) {
    method customizeEnvironment (line 449) | private BuildRequest customizeEnvironment(BuildRequest request) {
    method customizeCreator (line 457) | private BuildRequest customizeCreator(BuildRequest request) {
    method customizePullPolicy (line 465) | private BuildRequest customizePullPolicy(BuildRequest request) {
    method customizeBuildpacks (line 473) | private BuildRequest customizeBuildpacks(BuildRequest request) {
    method customizeBindings (line 481) | private BuildRequest customizeBindings(BuildRequest request) {
    method customizeTags (line 489) | private BuildRequest customizeTags(BuildRequest request) {
    method customizeCaches (line 497) | private BuildRequest customizeCaches(BuildRequest request) {
    method customizeCreatedDate (line 513) | private BuildRequest customizeCreatedDate(BuildRequest request) {
    method customizeApplicationDirectory (line 521) | private BuildRequest customizeApplicationDirectory(BuildRequest reques...
    method customizeSecurityOptions (line 529) | private BuildRequest customizeSecurityOptions(BuildRequest request) {

FILE: build-plugin/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/tasks/bundling/BootJar.java
  class BootJar (line 50) | @DisableCachingByDefault(because = "Not worth caching")
    method BootJar (line 80) | public BootJar() {
    method configureBootInfSpec (line 93) | private void configureBootInfSpec(CopySpec bootInfSpec) {
    method classpathDirectories (line 100) | private Iterable<File> classpathDirectories() {
    method classpathFiles (line 104) | private Iterable<File> classpathFiles() {
    method classpathEntries (line 108) | private Iterable<File> classpathEntries(Spec<File> filter) {
    method moveMetaInfToRoot (line 112) | private void moveMetaInfToRoot(CopySpec spec) {
    method resolvedArtifacts (line 122) | @Override
    method getResolvedDependencies (line 127) | @Nested
    method copy (line 132) | @Override
    method isLayeredDisabled (line 140) | private boolean isLayeredDisabled() {
    method createCopyAction (line 144) | @Override
    method isIncludeJarmodeTools (line 154) | private boolean isIncludeJarmodeTools() {
    method requiresUnpack (line 158) | @Override
    method requiresUnpack (line 163) | @Override
    method getLayered (line 173) | @Nested
    method layered (line 183) | public void layered(Action<LayeredSpec> action) {
    method getClasspath (line 187) | @Override
    method classpath (line 192) | @Override
    method setClasspath (line 199) | @Override
    method setClasspath (line 204) | @Override
    method getBootInf (line 215) | @Internal
    method bootInf (line 230) | public CopySpec bootInf(Action<CopySpec> action) {
    method resolveZipCompression (line 244) | protected ZipCompression resolveZipCompression(FileCopyDetails details) {
    method isLibrary (line 255) | protected boolean isLibrary(FileCopyDetails details) {
    method fromCallTo (line 266) | private static <T> Action<CopySpec> fromCallTo(Callable<T> callable) {
    method callTo (line 276) | private static <T> Callable<T> callTo(Callable<T> callable) {
    class LibrarySpec (line 280) | private final class LibrarySpec implements Spec<FileCopyDetails> {
      method isSatisfiedBy (line 282) | @Override
    class ZipCompressionResolver (line 289) | private final class ZipCompressionResolver implements Function<FileCop...
      method apply (line 291) | @Override

FILE: build-plugin/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/tasks/bundling/BootWar.java
  class BootWar (line 49) | @DisableCachingByDefault(because = "Not worth caching")
    method BootWar (line 79) | public BootWar() {
    method getProvidedLibFiles (line 92) | private Object getProvidedLibFiles() {
    method resolvedArtifacts (line 96) | @Override
    method getResolvedDependencies (line 101) | @Nested
    method copy (line 106) | @Override
    method isLayeredDisabled (line 114) | private boolean isLayeredDisabled() {
    method createCopyAction (line 118) | @Override
    method isIncludeJarmodeTools (line 128) | private boolean isIncludeJarmodeTools() {
    method requiresUnpack (line 132) | @Override
    method requiresUnpack (line 137) | @Override
    method getProvidedClasspath (line 147) | @Optional
    method providedClasspath (line 159) | public void providedClasspath(Object... classpath) {
    method setProvidedClasspath (line 171) | public void setProvidedClasspath(FileCollection classpath) {
    method setProvidedClasspath (line 182) | public void setProvidedClasspath(Object classpath) {
    method resolveZipCompression (line 194) | protected ZipCompression resolveZipCompression(FileCopyDetails details) {
    method getLayered (line 203) | @Nested
    method layered (line 213) | public void layered(Action<LayeredSpec> action) {
    method isLibrary (line 223) | protected boolean isLibrary(FileCopyDetails details) {
    method fromCallTo (line 234) | private static <T> Action<CopySpec> fromCallTo(Callable<T> callable) {
    method callTo (line 244) | private static <T> Callable<T> callTo(Callable<T> callable) {
    class LibrarySpec (line 248) | private final class LibrarySpec implements Spec<FileCopyDetails> {
      method isSatisfiedBy (line 250) | @Override
    class ZipCompressionResolver (line 257) | private final class ZipCompressionResolver implements Function<FileCop...
      method apply (line 259) | @Override

FILE: build-plugin/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/tasks/bundling/BootZipCopyAction.java
  class BootZipCopyAction (line 77) | class BootZipCopyAction implements CopyAction {
    method BootZipCopyAction (line 115) | BootZipCopyAction(File output, Manifest manifest, boolean preserveFile...
    method execute (line 136) | @Override
    method writeArchive (line 147) | private void writeArchive(CopyActionProcessingStream copyActions) thro...
    method writeArchive (line 157) | private void writeArchive(CopyActionProcessingStream copyActions, Outp...
    method setEncodingIfNecessary (line 170) | private void setEncodingIfNecessary(ZipArchiveOutputStream zipOutputSt...
    method closeQuietly (line 176) | private void closeQuietly(OutputStream outputStream) {
    class Processor (line 188) | private class Processor {
      method Processor (line 202) | Processor(ZipArchiveOutputStream out) {
      method process (line 208) | void process(FileCopyDetails details) {
      method skipProcessing (line 226) | private boolean skipProcessing(FileCopyDetails details) {
      method processDirectory (line 231) | private void processDirectory(FileCopyDetails details) throws IOExce...
      method processFile (line 240) | private void processFile(FileCopyDetails details) throws IOException {
      method writeParentDirectoriesIfNecessary (line 265) | private void writeParentDirectoriesIfNecessary(String name, @Nullabl...
      method getParentDirectory (line 275) | private @Nullable String getParentDirectory(String name) {
      method finish (line 283) | void finish() throws IOException {
      method writeLoaderEntriesIfNecessary (line 293) | private void writeLoaderEntriesIfNecessary(@Nullable FileCopyDetails...
      method isInMetaInf (line 312) | private boolean isInMetaInf(@Nullable FileCopyDetails details) {
      method writeJarToolsIfNecessary (line 320) | private void writeJarToolsIfNecessary() throws IOException {
      method writeJarModeLibrary (line 326) | private void writeJarModeLibrary(String location, JarModeLibrary lib...
      method writeSignatureFileIfNecessary (line 337) | private void writeSignatureFileIfNecessary() throws IOException {
      method hasSignedLibrary (line 344) | private boolean hasSignedLibrary() throws IOException {
      method writeClassPathIndexIfNecessary (line 353) | private void writeClassPathIndexIfNecessary() throws IOException {
      method writeNativeImageArgFileIfNecessary (line 365) | private void writeNativeImageArgFileIfNecessary() throws IOException {
      method writeLayersIndexIfNecessary (line 391) | private void writeLayersIndexIfNecessary() throws IOException {
      method writeEntry (line 403) | private void writeEntry(String name, ZipEntryContentWriter entryWrit...
      method writeEntry (line 408) | private void writeEntry(String name, ZipEntryContentWriter entryWrit...
      method prepareEntry (line 423) | private void prepareEntry(ZipArchiveEntry entry, String name, @Nulla...
      method prepareStoredEntry (line 432) | private void prepareStoredEntry(FileCopyDetails details, ZipArchiveE...
      method prepareStoredEntry (line 437) | private void prepareStoredEntry(ThrowingSupplier<InputStream> input,...
      method getTime (line 442) | private @Nullable Long getTime() {
      method getTime (line 446) | private @Nullable Long getTime(@Nullable FileCopyDetails details) {
      method getDirMode (line 456) | private int getDirMode() {
      method getFileMode (line 461) | private int getFileMode() {
      method getDirMode (line 466) | private int getDirMode(FileCopyDetails details) {
      method getFileMode (line 470) | private int getFileMode(FileCopyDetails details) {
      method getPermissions (line 475) | private int getPermissions(FileCopyDetails details) {
      method getMode (line 480) | private int getMode(FileCopyDetails details) {
    type ZipEntryCustomizer (line 494) | @FunctionalInterface
      method customize (line 505) | void customize(ZipArchiveEntry entry) throws IOException;
    type ZipEntryContentWriter (line 512) | @FunctionalInterface
      method writeTo (line 520) | void writeTo(ZipArchiveOutputStream out) throws IOException;
      method fromInputStream (line 528) | static ZipEntryContentWriter fromInputStream(InputStream in) {
      method fromLines (line 542) | static ZipEntryContentWriter fromLines(String encoding, Collection<S...
    class StoredEntryPreparator (line 558) | private static class StoredEntryPreparator {
      method StoredEntryPreparator (line 568) | StoredEntryPreparator(ThrowingSupplier<InputStream> input, boolean u...
      method load (line 575) | private void load(InputStream inputStream) throws IOException {
      method prepareStoredEntry (line 584) | void prepareStoredEntry(ZipArchiveEntry entry) {

FILE: build-plugin/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/tasks/bundling/CacheSpec.java
  class CacheSpec (line 36) | public class CacheSpec {
    method CacheSpec (line 42) | @Inject
    method asCache (line 47) | public @Nullable Cache asCache() {
    method volume (line 55) | public void volume(Action<VolumeCacheSpec> action) {
    method bind (line 68) | public void bind(Action<BindCacheSpec> action) {
    class VolumeCacheSpec (line 80) | public abstract static class VolumeCacheSpec {
      method getName (line 86) | @Input
    class BindCacheSpec (line 94) | public abstract static class BindCacheSpec {
      method getSource (line 100) | @Input

FILE: build-plugin/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/tasks/bundling/DefaultTimeZoneOffset.java
  class DefaultTimeZoneOffset (line 30) | class DefaultTimeZoneOffset {
    method DefaultTimeZoneOffset (line 36) | DefaultTimeZoneOffset(TimeZone defaultTimeZone) {
    method removeFrom (line 45) | FileTime removeFrom(FileTime time) {
    method removeFrom (line 54) | long removeFrom(long time) {

FILE: build-plugin/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/tasks/bundling/DockerSpec.java
  class DockerSpec (line 40) | public abstract class DockerSpec {
    method DockerSpec (line 46) | @Inject
    method DockerSpec (line 54) | DockerSpec(DockerRegistrySpec builderRegistry, DockerRegistrySpec publ...
    method getContext (line 59) | @Input
    method getHost (line 63) | @Input
    method getTlsVerify (line 67) | @Input
    method getCertPath (line 71) | @Input
    method getBindHostToBuilder (line 75) | @Input
    method getBuilderRegistry (line 84) | @Nested
    method builderRegistry (line 94) | public void builderRegistry(Action<DockerRegistrySpec> action) {
    method getPublishRegistry (line 103) | @Nested
    method publishRegistry (line 113) | public void publishRegistry(Action<DockerRegistrySpec> action) {
    method asDockerConfiguration (line 123) | BuilderDockerConfiguration asDockerConfiguration() {
    method customizeHost (line 132) | private BuilderDockerConfiguration customizeHost(BuilderDockerConfigur...
    method customizeBuilderAuthentication (line 148) | private BuilderDockerConfiguration customizeBuilderAuthentication(Buil...
    method customizePublishAuthentication (line 153) | private BuilderDockerConfiguration customizePublishAuthentication(Buil...
    method getRegistryAuthentication (line 159) | private DockerRegistryAuthentication getRegistryAuthentication(String ...
    class DockerRegistrySpec (line 178) | public abstract static class DockerRegistrySpec {
      method getUsername (line 184) | @Input
      method getPassword (line 192) | @Input
      method getUrl (line 200) | @Input
      method getEmail (line 208) | @Input
      method getToken (line 216) | @Input
      method hasEmptyAuth (line 220) | boolean hasEmptyAuth() {
      method nonePresent (line 224) | private boolean nonePresent(Property<?>... properties) {
      method hasUserAuth (line 233) | boolean hasUserAuth() {
      method allPresent (line 237) | private boolean allPresent(Property<?>... properties) {
      method hasTokenAuth (line 246) | boolean hasTokenAuth() {

FILE: build-plugin/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/tasks/bundling/LayerResolver.java
  class LayerResolver (line 40) | class LayerResolver {
    method LayerResolver (line 48) | LayerResolver(ResolvedDependencies resolvedDependencies, LayeredSpec l...
    method getLayer (line 55) | @Nullable Layer getLayer(FileCopyDetails details) {
    method getLayer (line 67) | Layer getLayer(Library library) {
    method getLayer (line 71) | Layer getLayer(String applicationResource) {
    method getLayers (line 75) | Iterable<Layer> getLayers() {
    method asLibrary (line 79) | private Library asLibrary(FileCopyDetails details) {

FILE: build-plugin/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/tasks/bundling/LayeredSpec.java
  class LayeredSpec (line 55) | public abstract class LayeredSpec {
    method LayeredSpec (line 63) | @Inject
    method getEnabled (line 75) | @Input
    method getApplication (line 83) | @Input
    method setApplication (line 93) | public void setApplication(ApplicationSpec spec) {
    method application (line 101) | public void application(Action<ApplicationSpec> action) {
    method getDependencies (line 110) | @Input
    method setDependencies (line 120) | public void setDependencies(DependenciesSpec spec) {
    method dependencies (line 128) | public void dependencies(Action<DependenciesSpec> action) {
    method getLayerOrder (line 137) | @Input
    method asLayers (line 146) | Layers asLayers() {
    method createLayers (line 153) | private Layers createLayers() {
    class IntoLayersSpec (line 170) | public abstract static class IntoLayersSpec<S extends IntoLayerSpec> i...
      method isEmpty (line 176) | boolean isEmpty() {
      method IntoLayersSpec (line 180) | IntoLayersSpec(Function<String, S> specFactory, IntoLayerSpec... spe...
      method intoLayer (line 185) | public void intoLayer(String layer) {
      method intoLayer (line 189) | public void intoLayer(String layer, Action<S> action) {
      method asSelectors (line 195) | <T> List<ContentSelector<T>> asSelectors(Function<IntoLayerSpec, Con...
    class IntoLayerSpec (line 204) | public static class IntoLayerSpec implements Serializable {
      method IntoLayerSpec (line 217) | public IntoLayerSpec(String intoLayer) {
      method include (line 228) | public void include(String... patterns) {
      method exclude (line 239) | public void exclude(String... patterns) {
      method asSelector (line 243) | <T> ContentSelector<T> asSelector(Function<String, ContentFilter<T>>...
      method getIntoLayer (line 248) | String getIntoLayer() {
      method getIncludes (line 252) | List<String> getIncludes() {
      method getExcludes (line 256) | List<String> getExcludes() {
    class DependenciesIntoLayerSpec (line 267) | public static class DependenciesIntoLayerSpec extends IntoLayerSpec {
      method DependenciesIntoLayerSpec (line 278) | public DependenciesIntoLayerSpec(String intoLayer) {
      method includeProjectDependencies (line 287) | public void includeProjectDependencies() {
      method excludeProjectDependencies (line 297) | public void excludeProjectDependencies() {
      method asLibrarySelector (line 301) | ContentSelector<Library> asLibrarySelector(Function<String, ContentF...
    class ApplicationSpec (line 324) | public static class ApplicationSpec extends IntoLayersSpec<IntoLayerSp...
      method ApplicationSpec (line 326) | @Inject
      method ApplicationSpec (line 336) | public ApplicationSpec(IntoLayerSpec... contents) {
      method asSelectors (line 340) | List<ContentSelector<String>> asSelectors() {
      class IntoLayerSpecFactory (line 344) | private static final class IntoLayerSpecFactory implements Function<...
        method apply (line 346) | @Override
    class DependenciesSpec (line 358) | public static class DependenciesSpec extends IntoLayersSpec<Dependenci...
      method DependenciesSpec (line 360) | @Inject
      method DependenciesSpec (line 369) | public DependenciesSpec(DependenciesIntoLayerSpec... contents) {
      method asSelectors (line 373) | List<ContentSelector<Library>> asSelectors() {
      class IntoLayerSpecFactory (line 378) | private static final class IntoLayerSpecFactory
        method apply (line 381) | @Override

FILE: build-plugin/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/tasks/bundling/LoaderZipEntries.java
  class LoaderZipEntries (line 42) | class LoaderZipEntries {
    method LoaderZipEntries (line 50) | LoaderZipEntries(@Nullable Long entryTime, int dirMode, int fileMode) {
    method writeTo (line 56) | WrittenEntries writeTo(ZipArchiveOutputStream out) throws IOException {
    method getResourceAsStream (line 76) | private InputStream getResourceAsStream(String name) {
    method writeDirectory (line 82) | private void writeDirectory(ZipArchiveEntry entry, ZipArchiveOutputStr...
    method writeFile (line 88) | private void writeFile(ZipArchiveEntry entry, ZipInputStream in, ZipAr...
    method prepareEntry (line 95) | private void prepareEntry(ZipArchiveEntry entry, int unixMode) {
    method copy (line 102) | private void copy(InputStream in, OutputStream out) throws IOException {
    class WrittenEntries (line 109) | static class WrittenEntries {
      method addDirectory (line 115) | private void addDirectory(ZipEntry entry) {
      method addFile (line 119) | private void addFile(ZipEntry entry) {
      method isWrittenDirectory (line 123) | boolean isWrittenDirectory(FileTreeElement element) {
      method getFiles (line 131) | Set<String> getFiles() {

FILE: build-plugin/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/tasks/bundling/ResolvedDependencies.java
  class ResolvedDependencies (line 51) | class ResolvedDependencies {
    method ResolvedDependencies (line 59) | ResolvedDependencies(Project project) {
    method projectCoordinatesByPath (line 65) | private static Map<String, LibraryCoordinates> projectCoordinatesByPat...
    method libraryCoordinates (line 72) | private static LibraryCoordinates libraryCoordinates(Project project) {
    method getArtifactIds (line 77) | @Input
    method getArtifactFiles (line 82) | @Classpath
    method resolvedArtifacts (line 87) | void resolvedArtifacts(Provider<Set<ResolvedArtifactResult>> resolvedA...
    method find (line 94) | @Nullable DependencyDescriptor find(File file) {
    method findArtifactIdentifier (line 115) | private @Nullable ComponentArtifactIdentifier findArtifactIdentifier(F...
    class DependencyDescriptor (line 128) | static final class DependencyDescriptor {
      method DependencyDescriptor (line 134) | private DependencyDescriptor(LibraryCoordinates coordinates, boolean...
      method getCoordinates (line 139) | LibraryCoordinates getCoordinates() {
      method isProjectDependency (line 143) | boolean isProjectDependency() {

FILE: build-plugin/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/tasks/bundling/ZipCompression.java
  type ZipCompression (line 27) | public enum ZipCompression {

FILE: build-plugin/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/tasks/run/BootRun.java
  class BootRun (line 36) | @DisableCachingByDefault(because = "Application should always run")
    method BootRun (line 39) | public BootRun() {
    method getOptimizedLaunch (line 49) | @Input
    method sourceResources (line 59) | public void sourceResources(SourceSet sourceSet) {
    method exec (line 65) | @Override

FILE: build-plugin/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/util/VersionExtractor.java
  class VersionExtractor (line 36) | public final class VersionExtractor {
    method VersionExtractor (line 38) | private VersionExtractor() {
    method forClass (line 46) | public static @Nullable String forClass(Class<?> cls) {
    method getImplementationVersion (line 66) | private static String getImplementationVersion(JarFile jarFile) throws...

FILE: build-plugin/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/TaskConfigurationAvoidanceTests.java
  class TaskConfigurationAvoidanceTests (line 43) | @AnalyzeClasses(packages = "org.springframework.boot.gradle",
    method noApisThatCauseEagerTaskConfigurationShouldBeCalled (line 47) | @ArchTest
    class DoNotIncludeTests (line 60) | static class DoNotIncludeTests implements ImportOption {
      method includes (line 62) | @Override
    class ProhibitedMethods (line 69) | private static final class ProhibitedMethods implements Predicate<Java...
      method on (line 73) | private ProhibitedConfigurer on(Class<?> type) {
      method test (line 77) | @Override
      class ProhibitedConfigurer (line 87) | private final class ProhibitedConfigurer {
        method ProhibitedConfigurer (line 91) | private ProhibitedConfigurer(Class<?> type) {
        method methodsNamed (line 95) | private ProhibitedConfigurer methodsNamed(String... names) {
        method method (line 102) | private ProhibitedConfigurer method(String name, Class<?>... param...
      class ProhibitMethodsNamed (line 110) | static class ProhibitMethodsNamed implements Predicate<JavaMethodCal...
        method ProhibitMethodsNamed (line 116) | ProhibitMethodsNamed(Class<?> owner, String name) {
        method test (line 121) | @Override
      class ProhibitMethod (line 128) | private static final class ProhibitMethod extends ProhibitMethodsNam...
        method ProhibitMethod (line 132) | private ProhibitMethod(Class<?> owner, String name, List<Class<?>>...
        method test (line 137) | @Override
        method match (line 142) | private boolean match(List<JavaType> callParameterTypes) {

FILE: build-plugin/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/docs/AotDocumentationTests.java
  class AotDocumentationTests (line 32) | @ExtendWith(GradleMultiDslExtension.class)
    method applyNativeImagePlugin (line 38) | @TestTemplate
    method applyAotPlugin (line 45) | @TestTemplate

FILE: build-plugin/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/docs/Examples.java
  class Examples (line 22) | final class Examples {
    method Examples (line 26) | private Examples() {

FILE: build-plugin/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/docs/GettingStartedDocumentationTests.java
  class GettingStartedDocumentationTests (line 31) | @ExtendWith(GradleMultiDslExtension.class)
    method typicalPluginsAppliesExceptedPlugins (line 40) | @TestTemplate

FILE: build-plugin/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/docs/IntegratingWithActuatorDocumentationTests.java
  class IntegratingWithActuatorDocumentationTests (line 38) | @ExtendWith(GradleMultiDslExtension.class)
    method basicBuildInfo (line 44) | @TestTemplate
    method buildInfoCustomValues (line 51) | @TestTemplate
    method buildInfoAdditional (line 65) | @TestTemplate
    method buildInfoExcludeTime (line 76) | @TestTemplate
    method buildInfoProperties (line 86) | private Properties buildInfoProperties(File file) {

FILE: build-plugin/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/docs/ManagingDependenciesDocumentationTests.java
  class ManagingDependenciesDocumentationTests (line 35) | @ExtendWith(GradleMultiDslExtension.class)
    method dependenciesExampleEvaluatesSuccessfully (line 41) | @TestTemplate
    method customManagedVersions (line 46) | @TestTemplate
    method dependencyManagementInIsolation (line 53) | @TestTemplate
    method dependencyManagementInIsolationWithPluginsBlock (line 60) | @TestTemplate
    method configurePlatform (line 70) | @TestTemplate
    method customManagedVersionsWithPlatform (line 77) | @TestTemplate

FILE: build-plugin/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/docs/PackagingDocumentationTests.java
  class PackagingDocumentationTests (line 45) | @ExtendWith(GradleMultiDslExtension.class)
    method warContainerDependencyEvaluatesSuccessfully (line 51) | @TestTemplate
    method bootJarMainClass (line 56) | @TestTemplate
    method bootJarManifestMainClass (line 68) | @TestTemplate
    method applicationPluginMainClass (line 80) | @TestTemplate
    method springBootDslMainClass (line 92) | @TestTemplate
    method bootWarIncludeDevtools (line 104) | @TestTemplate
    method bootJarRequiresUnpack (line 116) | @TestTemplate
    method bootWarPropertiesLauncher (line 129) | @TestTemplate
    method onlyBootJar (line 141) | @TestTemplate
    method classifiedBootJar (line 155) | @TestTemplate
    method bootJarLayeredDisabled (line 172) | @TestTemplate
    method bootJarLayeredCustom (line 184) | @TestTemplate
    method bootJarLayeredExcludeTools (line 200) | @TestTemplate
    method bootBuildImageWithBuilder (line 216) | @TestTemplate
    method bootBuildImageWithCustomBuildpackJvmVersion (line 223) | @TestTemplate
    method bootBuildImageWithCustomProxySettings (line 230) | @TestTemplate
    method bootBuildImageWithCustomRuntimeConfiguration (line 238) | @TestTemplate
    method bootBuildImageWithCustomImageName (line 246) | @TestTemplate
    method bootBuildImageWithDockerHostMinikube (line 253) | @TestTemplate
    method bootBuildImageWithDockerHostPodman (line 262) | @TestTemplate
    method bootBuildImageWithDockerHostColima (line 270) | @TestTemplate
    method bootBuildImageWithDockerUserAuth (line 278) | @TestTemplate
    method bootBuildImageWithDockerTokenAuth (line 288) | @TestTemplate
    method bootBuildImagePublish (line 295) | @TestTemplate
    method bootBuildImageWithBuildpacks (line 302) | @TestTemplate
    method bootBuildImageWithCaches (line 310) | @TestTemplate
    method bootBuildImageWithBindCaches (line 318) | @TestTemplate
    method jarFile (line 327) | protected void jarFile(File file) throws IOException {

FILE: build-plugin/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/docs/PublishingDocumentationTests.java
  class PublishingDocumentationTests (line 33) | @ExtendWith(GradleMultiDslExtension.class)
    method mavenPublish (line 39) | @TestTemplate

FILE: build-plugin/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/docs/RunningDocumentationTests.java
  class RunningDocumentationTests (line 38) | @ExtendWith(GradleMultiDslExtension.class)
    method bootRunMain (line 44) | @TestTemplate
    method applicationPluginMainClassName (line 51) | @TestTemplate
    method springBootDslMainClassName (line 59) | @TestTemplate
    method bootRunSourceResources (line 67) | @TestTemplate
    method bootRunDisableOptimizedLaunch (line 74) | @TestTemplate
    method bootRunSystemPropertyDefaultValue (line 81) | @TestTemplate
    method bootRunSystemProperty (line 88) | @TestTemplate
    method writeMainClass (line 95) | private void writeMainClass() throws IOException {

FILE: build-plugin/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/dsl/BuildInfoDslIntegrationTests.java
  class BuildInfoDslIntegrationTests (line 42) | @GradleCompatibility
    method basicJar (line 48) | @TestTemplate
    method jarWithCustomName (line 68) | @TestTemplate
    method basicWar (line 80) | @TestTemplate
    method warWithCustomName (line 100) | @TestTemplate
    method additionalProperties (line 112) | @TestTemplate
    method buildInfoProperties (line 126) | private Properties buildInfoProperties() {

FILE: build-plugin/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/junit/GradleBuildFieldSetter.java
  class GradleBuildFieldSetter (line 34) | final class GradleBuildFieldSetter implements BeforeEachCallback {
    method GradleBuildFieldSetter (line 38) | GradleBuildFieldSetter(GradleBuild gradleBuild) {
    method beforeEach (line 42) | @Override

FILE: build-plugin/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/junit/GradleCompatibilityExtension.java
  class GradleCompatibilityExtension (line 48) | final class GradleCompatibilityExtension implements TestTemplateInvocati...
    method provideTestTemplateInvocationContexts (line 52) | @Override
    method supportsTestTemplate (line 79) | @Override
    class GradleVersionTestTemplateInvocationContext (line 84) | private static final class GradleVersionTestTemplateInvocationContext ...
      method GradleVersionTestTemplateInvocationContext (line 92) | GradleVersionTestTemplateInvocationContext(String gradleVersion, boo...
      method getDisplayName (line 99) | @Override
      method getAdditionalExtensions (line 104) | @Override

FILE: build-plugin/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/junit/GradleMultiDslExtension.java
  class GradleMultiDslExtension (line 43) | public class GradleMultiDslExtension implements TestTemplateInvocationCo...
    method provideTestTemplateInvocationContexts (line 45) | @Override
    method supportsTestTemplate (line 51) | @Override
    class DslTestTemplateInvocationContext (line 56) | private static final class DslTestTemplateInvocationContext implements...
      method DslTestTemplateInvocationContext (line 62) | DslTestTemplateInvocationContext(BuildOutput buildOutput, Dsl dsl) {
      method getAdditionalExtensions (line 67) | @Override
      method getDisplayName (line 77) | @Override

FILE: build-plugin/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/junit/GradleProjectBuilder.java
  class GradleProjectBuilder (line 34) | public final class GradleProjectBuilder {
    method GradleProjectBuilder (line 40) | private GradleProjectBuilder() {
    method builder (line 43) | public static GradleProjectBuilder builder() {
    method withProjectDir (line 47) | public GradleProjectBuilder withProjectDir(File dir) {
    method withName (line 52) | public GradleProjectBuilder withName(String name) {
    method build (line 57) | public Project build() {

FILE: build-plugin/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/plugin/ApplicationPluginActionIntegrationTests.java
  class ApplicationPluginActionIntegrationTests (line 51) | @GradleCompatibility
    method noBootDistributionWithoutApplicationPluginApplied (line 57) | @TestTemplate
    method applyingApplicationPluginCreatesBootDistribution (line 63) | @TestTemplate
    method noBootStartScriptsTaskWithoutApplicationPluginApplied (line 69) | @TestTemplate
    method applyingApplicationPluginCreatesBootStartScriptsTask (line 75) | @TestTemplate
    method createsBootStartScriptsTaskUsesApplicationPluginsDefaultJvmOpts (line 81) | @TestTemplate
    method zipDistributionForJarCanBeBuilt (line 87) | @TestTemplate
    method tarDistributionForJarCanBeBuilt (line 100) | @TestTemplate
    method zipDistributionForWarCanBeBuilt (line 113) | @TestTemplate
    method tarDistributionForWarCanBeBuilt (line 126) | @TestTemplate
    method applicationNameCanBeUsedToCustomizeDistributionName (line 139) | @TestTemplate
    method scriptsHaveCorrectPermissions (line 152) | @TestTemplate
    method taskConfigurationIsAvoided (line 171) | @TestTemplate
    method zipEntryNames (line 191) | private List<String> zipEntryNames(File distribution) throws IOExcepti...
    method tarEntryNames (line 202) | private List<String> tarEntryNames(File distribution) throws IOExcepti...
    method tarEntries (line 213) | private void tarEntries(File distribution, Consumer<TarArchiveEntry> c...

FILE: build-plugin/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/plugin/CyclonedxPluginActionIntegrationTests.java
  class CyclonedxPluginActionIntegrationTests (line 40) | @GradleCompatibility
    method sbomIsIncludedInUberJar (line 46) | @TestTemplate
    method sbomIsIncludedInUberWar (line 51) | @TestTemplate
    method sbomIsIncludedInUberArchive (line 56) | private void sbomIsIncludedInUberArchive(String taskName, String sbomL...

FILE: build-plugin/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/plugin/DependencyManagementPluginActionIntegrationTests.java
  class DependencyManagementPluginActionIntegrationTests (line 34) | @GradleCompatibility
    method noDependencyManagementIsAppliedByDefault (line 40) | @TestTemplate
    method bomIsImportedWhenDependencyManagementPluginIsApplied (line 48) | @TestTemplate

FILE: build-plugin/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/plugin/JavaPluginActionIntegrationTests.java
  class JavaPluginActionIntegrationTests (line 46) | @GradleCompatibility(configurationCache = true)
    method noBootJarTaskWithoutJavaPluginApplied (line 52) | @TestTemplate
    method applyingJavaPluginCreatesBootJarTask (line 57) | @TestTemplate
    method noBootRunTaskWithoutJavaPluginApplied (line 62) | @TestTemplate
    method noBootTestRunTaskWithoutJavaPluginApplied (line 67) | @TestTemplate
    method applyingJavaPluginCreatesBootRunTask (line 72) | @TestTemplate
    method applyingJavaPluginCreatesBootTestRunTask (line 77) | @TestTemplate
    method javaCompileTasksUseUtf8Encoding (line 82) | @TestTemplate
    method javaCompileTasksUseParametersCompilerFlagByDefault (line 88) | @TestTemplate
    method javaCompileTasksUseParametersAndAdditionalCompilerFlags (line 94) | @TestTemplate
    method javaCompileTasksCanOverrideDefaultParametersCompilerFlag (line 101) | @TestTemplate
    method assembleRunsBootJarAndJar (line 107) | @TestTemplate
    method errorMessageIsHelpfulWhenMainClassCannotBeResolved (line 122) | @TestTemplate
    method additionalMetadataLocationsConfiguredWhenProcessorIsPresent (line 131) | @TestTemplate
    method additionalMetadataLocationsNotConfiguredWhenProcessorIsAbsent (line 147) | @TestTemplate
    method applyingJavaPluginCreatesDevelopmentOnlyConfiguration (line 157) | @TestTemplate
    method applyingJavaPluginCreatesTestAndDevelopmentOnlyConfiguration (line 162) | @TestTemplate
    method testCompileClasspathIncludesTestAndDevelopmentOnlyDependencies (line 167) | @TestTemplate
    method testRuntimeClasspathIncludesTestAndDevelopmentOnlyDependencies (line 172) | @TestTemplate
    method testCompileClasspathDoesNotIncludeDevelopmentOnlyDependencies (line 177) | @TestTemplate
    method testRuntimeClasspathDoesNotIncludeDevelopmentOnlyDependencies (line 182) | @TestTemplate
    method compileClasspathDoesNotIncludeTestAndDevelopmentOnlyDependencies (line 187) | @TestTemplate
    method runtimeClasspathIncludesTestAndDevelopmentOnlyDependencies (line 192) | @TestTemplate
    method compileClasspathDoesNotIncludeDevelopmentOnlyDependencies (line 197) | @TestTemplate
    method runtimeClasspathIncludesDevelopmentOnlyDependencies (line 202) | @TestTemplate
    method productionRuntimeClasspathIsConfiguredWithAttributesThatMatchRuntimeClasspath (line 207) | @TestTemplate
    method productionRuntimeClasspathIsConfiguredWithResolvabilityAndConsumabilityThatMatchesRuntimeClasspath (line 216) | @TestTemplate
    method taskConfigurationIsAvoided (line 225) | @TestTemplate
    method createMinimalMainSource (line 246) | private void createMinimalMainSource() throws IOException {

FILE: build-plugin/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/plugin/KotlinPluginActionIntegrationTests.java
  class KotlinPluginActionIntegrationTests (line 44) | @DisabledForJreRange(min = JRE.JAVA_20)
    method noKotlinVersionPropertyWithoutKotlinPlugin (line 50) | @Test
    method kotlinVersionPropertyIsSet (line 55) | @Test
    method kotlinCompileTasksUseJavaParametersFlagByDefault (line 63) | @Test
    method kotlinCompileTasksCanOverrideDefaultJavaParametersFlag (line 71) | @Test
    method taskConfigurationIsAvoided (line 79) | @Test
    method compileAotJavaHasTransitiveRuntimeDependenciesOnItsClasspathWhenUsingKotlin (line 95) | @Test
    method compileAotTestJavaHasTransitiveRuntimeDependenciesOnItsClasspathWhenUsingKotlin (line 103) | @Test
    method expectConfigurationCacheRequestedDeprecationWarning (line 111) | private void expectConfigurationCacheRequestedDeprecationWarning() {
    method expectResolvableUsageIsAlreadyAllowedWarning (line 116) | private void expectResolvableUsageIsAlreadyAllowedWarning() {

FILE: build-plugin/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/plugin/NativeImagePluginActionIntegrationTests.java
  class NativeImagePluginActionIntegrationTests (line 47) | @GradleCompatibility(minimumVersion = "8.3")
    method applyingNativeImagePluginAppliesAotPlugin (line 53) | @TestTemplate
    method reachabilityMetadataConfigurationFilesAreCopiedToJar (line 59) | @TestTemplate
    method reachabilityMetadataConfigurationFilesFromFileRepositoryAreCopiedToJar (line 77) | @TestTemplate
    method developmentOnlyDependenciesDoNotAppearInNativeImageClasspath (line 97) | @TestTemplate
    method testAndDevelopmentOnlyDependenciesDoNotAppearInNativeImageClasspath (line 104) | @TestTemplate
    method classesGeneratedDuringAotProcessingAreOnTheNativeImageClasspath (line 111) | @TestTemplate
    method classesGeneratedDuringAotTestProcessingAreOnTheTestNativeImageClasspath (line 118) | @TestTemplate
    method nativeEntryIsAddedToManifest (line 127) | @TestTemplate
    method projectPath (line 141) | private String projectPath(String path) {
    method writeDummySpringApplicationAotProcessorMainClass (line 150) | private void writeDummySpringApplicationAotProcessorMainClass() {
    method getEntryNames (line 171) | protected List<String> getEntryNames(File file) throws IOException {

FILE: build-plugin/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/plugin/OnlyDependencyManagementIntegrationTests.java
  class OnlyDependencyManagementIntegrationTests (line 32) | @GradleCompatibility
    method dependencyManagementCanBeConfiguredUsingCoordinatesConstant (line 38) | @TestTemplate

FILE: build-plugin/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/plugin/ProtobufPluginActionIntegrationTests.java
  class ProtobufPluginActionIntegrationTests (line 31) | @GradleCompatibility
    method configuresProtocArtifact (line 37) | @TestTemplate
    method configuresGrpcPlugin (line 43) | @TestTemplate
    method configuresGenerateProtoTasksToOmitGenerated (line 49) | @TestTemplate
    method alignsVersionOfProtocDependency (line 56) | @TestTemplate
    method alignsVersionOfGrpcDependency (line 62) | @TestTemplate
    method usesVersionOfProtocDependencyWhenSpecified (line 68) | @TestTemplate
    method usesVersionOfGrpcPluginDependencyWhenSpecified (line 74) | @TestTemplate

FILE: build-plugin/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/plugin/SpringBootAotPluginIntegrationTests.java
  class SpringBootAotPluginIntegrationTests (line 41) | @GradleCompatibility
    method noProcessAotTaskWithoutAotPluginApplied (line 47) | @TestTemplate
    method noProcessTestAotTaskWithoutAotPluginApplied (line 53) | @TestTemplate
    method applyingAotPluginCreatesProcessAotTask (line 59) | @TestTemplate
    method applyingAotPluginCreatesProcessTestAotTask (line 65) | @TestTemplate
    method processAotHasLibraryResourcesOnItsClasspath (line 71) | @TestTemplate
    method processTestAotHasLibraryResourcesOnItsClasspath (line 81) | @TestTemplate
    method processAotHasTransitiveRuntimeDependenciesOnItsClasspath (line 91) | @TestTemplate
    method processTestAotHasTransitiveRuntimeDependenciesOnItsClasspath (line 97) | @TestTemplate
    method processAotDoesNotHaveDevelopmentOnlyDependenciesOnItsClasspath (line 103) | @TestTemplate
    method processTestAotDoesNotHaveDevelopmentOnlyDependenciesOnItsClasspath (line 109) | @TestTemplate
    method processAotDoesNotHaveTestAndDevelopmentOnlyDependenciesOnItsClasspath (line 115) | @TestTemplate
    method processTestAotHasTestAndDevelopmentOnlyDependenciesOnItsClasspath (line 121) | @TestTemplate
    method processAotRunsWhenProjectHasMainSource (line 127) | @TestTemplate
    method processTestAotIsSkippedWhenProjectHasNoTestSource (line 136) | @TestTemplate
    method applyingAotPluginDoesNotPreventConfigurationOfJavaToolchainLanguageVersion (line 144) | @TestTemplate
    method writeMainClass (line 150) | private void writeMainClass(String packageName, String className) thro...

FILE: build-plugin/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/plugin/SpringBootPluginIntegrationTests.java
  class SpringBootPluginIntegrationTests (line 37) | @ExtendWith(GradleBuildExtension.class)
    method failFastWithVersionOfGradle8LowerThanRequired (line 42) | @Test

FILE: build-plugin/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/plugin/SpringBootPluginTests.java
  class SpringBootPluginTests (line 37) | @ClassPathExclusions("kotlin-daemon-client-*.jar")
    method bootArchivesConfigurationsCannotBeResolved (line 44) | @Test

FILE: build-plugin/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/plugin/WarPluginActionIntegrationTests.java
  class WarPluginActionIntegrationTests (line 44) | @GradleCompatibility
    method noBootWarTaskWithoutWarPluginApplied (line 50) | @TestTemplate
    method applyingWarPluginCreatesBootWarTask (line 56) | @TestTemplate
    method assembleRunsBootWarAndWar (line 62) | @TestTemplate
    method errorMessageIsHelpfulWhenMainClassCannotBeResolved (line 81) | @TestTemplate
    method taskConfigurationIsAvoided (line 90) | @TestTemplate

FILE: build-plugin/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/tasks/buildinfo/BuildInfoIntegrationTests.java
  class BuildInfoIntegrationTests (line 44) | @GradleCompatibility(configurationCache = true)
    method defaultValues (line 50) | @TestTemplate
    method basicExecution (line 63) | @TestTemplate
    method notUpToDateWhenExecutedTwiceAsTimeChanges (line 77) | @TestTemplate
    method upToDateWhenExecutedTwiceWithFixedTime (line 94) | @TestTemplate
    method notUpToDateWhenExecutedTwiceWithFixedTimeAndChangedProjectVersion (line 104) | @TestTemplate
    method notUpToDateWhenExecutedTwiceWithFixedTimeAndChangedGradlePropertiesProjectVersion (line 116) | @TestTemplate
    method reproducibleOutputWithFixedTime (line 131) | @TestTemplate
    method excludeProperties (line 148) | @TestTemplate
    method buildInfoProperties (line 160) | private Properties buildInfoProperties() {

FILE: build-plugin/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/tasks/buildinfo/BuildInfoTests.java
  class BuildInfoTests (line 42) | @ClassPathExclusions("kotlin-daemon-client-*")
    method basicExecution (line 49) | @Test
    method customArtifactIsReflectedInProperties (line 59) | @Test
    method artifactCanBeExcludedFromProperties (line 66) | @Test
    method projectGroupIsReflectedInProperties (line 73) | @Test
    method customGroupIsReflectedInProperties (line 80) | @Test
    method groupCanBeExcludedFromProperties (line 87) | @Test
    method customNameIsReflectedInProperties (line 94) | @Test
    method nameCanBeExcludedFromProperties (line 101) | @Test
    method projectVersionIsReflectedInProperties (line 108) | @Test
    method customVersionIsReflectedInProperties (line 115) | @Test
    method versionCanBeExcludedFromProperties (line 122) | @Test
    method timeIsSetInProperties (line 129) | @Test
    method timeCanBeExcludedFromProperties (line 135) | @Test
    method timeCanBeCustomizedInProperties (line 142) | @Test
    method additionalPropertiesAreReflectedInProperties (line 150) | @Test
    method additionalPropertiesCanBeExcluded (line 158) | @Test
    method nullAdditionalPropertyProducesInformativeFailure (line 166) | @Test
    method filenameCanBeCustomized (line 174) | @Test
    method createProject (line 185) | private Project createProject(String projectName) {
    method createTask (line 190) | private BuildInfo createTask(Project project) {
    method buildInfoProperties (line 194) | private Properties buildInfoProperties(BuildInfo task) {
    method buildInfoProperties (line 200) | private Properties buildInfoProperties(File file) {

FILE: build-plugin/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/tasks/bundling/AbstractBootArchiveIntegrationTests.java
  class AbstractBootArchiveIntegrationTests (line 73) | abstract class AbstractBootArchiveIntegrationTests {
    method AbstractBootArchiveIntegrationTests (line 86) | protected AbstractBootArchiveIntegrationTests(String taskName, String ...
    method basicBuild (line 94) | @TestTemplate
    method reproducibleArchive (line 101) | @TestTemplate
    method upToDateWhenBuiltTwice (line 116) | @TestTemplate
    method applicationPluginMainClassNameIsUsed (line 126) | @TestTemplate
    method springBootExtensionMainClassNameIsUsed (line 137) | @TestTemplate
    method duplicatesAreHandledGracefully (line 148) | @TestTemplate
    method developmentOnlyDependenciesAreNotIncludedInTheArchiveByDefault (line 155) | @TestTemplate
    method developmentOnlyDependenciesCanBeIncludedInTheArchive (line 177) | @TestTemplate
    method versionMismatchBetweenTransitiveDevelopmentOnlyImplementationDependenciesDoesNotRemoveDependencyFromTheArchive (line 192) | @TestTemplate
    method testAndDevelopmentOnlyDependenciesAreNotIncludedInTheArchiveByDefault (line 208) | @TestTemplate
    method testAndDevelopmentOnlyDependenciesCanBeIncludedInTheArchive (line 230) | @TestTemplate
    method jarTypeFilteringIsApplied (line 245) | @TestTemplate
    method startClassIsSetByResolvingTheMainClass (line 263) | @TestTemplate
    method upToDateWhenBuiltWithDefaultLayeredAndThenWithExplicitLayered (line 279) | @TestTemplate
    method notUpToDateWhenBuiltWithoutLayersAndThenWithLayers (line 293) | @TestTemplate
    method notUpToDateWhenBuiltWithToolsAndThenWithoutTools (line 307) | @TestTemplate
    method layersWithCustomSourceSet (line 321) | @TestTemplate
    method implicitLayers (line 328) | @TestTemplate
    method getExpectedApplicationLayerContents (line 382) | abstract String[] getExpectedApplicationLayerContents(String... additi...
    method multiModuleImplicitLayers (line 384) | @TestTemplate
    method customLayers (line 436) | @TestTemplate
    method multiModuleCustomLayers (line 488) | @TestTemplate
    method classesFromASecondarySourceSetCanBeIncludedInTheArchive (line 550) | @TestTemplate
    method javaVersionIsSetInManifest (line 578) | @TestTemplate
    method defaultDirAndFileModesAreUsed (line 589) | @TestTemplate
    method dirModeAndFileModeAreApplied (line 614) | @TestTemplate
    method signed (line 644) | @TestTemplate
    method copyMainClassApplication (line 655) | private void copyMainClassApplication() throws IOException {
    method copyApplication (line 659) | protected void copyApplication(String name) throws IOException {
    method createStandardJar (line 668) | private void createStandardJar(File location) throws IOException {
    method createDependenciesStarterJar (line 673) | private void createDependenciesStarterJar(File location) throws IOExce...
    method createDependenciesDeveloperToolsJar (line 677) | private void createDependenciesDeveloperToolsJar(File location) throws...
    method createJar (line 681) | private void createJar(File location, Consumer<Attributes> attributesC...
    method writeSettingsGradle (line 690) | private void writeSettingsGradle() {
    method writeMainClass (line 703) | private void writeMainClass() {
    method writeResource (line 724) | private void writeResource() {
    method readLayerIndex (line 737) | private Map<String, List<String>> readLayerIndex(JarFile jarFile) thro...
    method readExtractedLayers (line 756) | private Map<String, List<String>> readExtractedLayers(File root, List<...
    method assertExtractedLayers (line 774) | private void assertExtractedLayers(List<String> layerNames, Map<String...
    method isInIndex (line 791) | private boolean isInIndex(List<String> index, String file) {
    method assertEntryMode (line 800) | private static void assertEntryMode(ZipArchiveEntry entry, int expecte...

FILE: build-plugin/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/tasks/bundling/AbstractBootArchiveTests.java
  class AbstractBootArchiveTests (line 80) | abstract class AbstractBootArchiveTests<T extends Jar & BootArchive> {
    method AbstractBootArchiveTests (line 100) | protected AbstractBootArchiveTests(Class<T> taskClass, String launcher...
    method createTask (line 109) | @BeforeEach
    method basicArchiveCreation (line 118) | @Test
    method whenImplementationNameIsCustomizedItShouldAppearInArchiveManifest (line 135) | @Test
    method whenProjectVersionIsSetThenImplementationVersionShouldAppearInArchiveManifest (line 146) | @Test
    method whenImplementationVersionIsCustomizedItShouldAppearInArchiveManifest (line 156) | @Test
    method classpathJarsArePackagedBeneathLibPathAndAreStored (line 168) | @Test
    method classpathDirectoriesArePackagedBeneathClassesPath (line 183) | @Test
    method moduleInfoClassIsPackagedInTheRootOfTheArchive (line 197) | @Test
    method classpathCanBeSetUsingAFileCollection (line 217) | @Test
    method classpathCanBeSetUsingAnObject (line 229) | @Test
    method filesOnTheClasspathThatAreNotZipFilesAreSkipped (line 241) | @Test
    method loaderIsWrittenToTheRootOfTheJarAfterManifest (line 251) | @Test
    method loaderIsWrittenToTheRootOfTheJarWhenUsingThePropertiesLauncher (line 268) | @Test
    method unpackCommentIsAddedToEntryIdentifiedByAPattern (line 282) | @Test
    method unpackCommentIsAddedToEntryIdentifiedByASpec (line 294) | @Test
    method customMainClassInTheManifestIsHonored (line 306) | @Test
    method customStartClassInTheManifestIsHonored (line 320) | @Test
    method fileTimestampPreservationCanBeDisabled (line 333) | @Test
    method constantTimestampMatchesGradleInternalTimestamp (line 349) | @Test
    method archiveIsReproducibleByDefault (line 355) | @Test
    method archiveReproducibilityCanBeDisabled (line 377) | @Test
    method devtoolsJarIsExcludedByDefault (line 398) | @Test
    method allEntriesUseUnixPlatformAndUtf8NameEncoding (line 409) | @Test
    method loaderIsWrittenFirstThenApplicationClassesThenLibraries (line 430) | @Test
    method archiveShouldBeLayeredByDefault (line 447) | @Test
    method jarWhenLayersDisabledShouldNotContainLayersIndex (line 461) | @Test
    method whenJarIsLayeredThenManifestContainsEntryForLayersIndexInPlaceOfClassesAndLib (line 468) | @Test
    method whenJarIsLayeredThenLayersIndexIsPresentAndCorrect (line 479) | @Test
    method whenJarIsLayeredWithCustomStrategiesThenLayersIndexIsPresentAndCorrect (line 520) | @Test
    method whenArchiveIsLayeredThenToolsJarIsIncluded (line 572) | @Test
    method shouldAddToolsToTheJar (line 578) | @Test
    method whenIncludeToolsIsFalseThenToolsAreNotAddedToTheJar (line 586) | @Test
    method jarFile (line 595) | protected File jarFile(String name) throws IOException {
    method configure (line 605) | private T configure(T task) {
    method executeTask (line 614) | protected abstract void executeTask();
    method getTask (line 616) | protected T getTask() {
    method getEntryNames (line 620) | protected List<String> getEntryNames(File file) throws IOException {
    method getEntryNames (line 626) | protected List<String> getEntryNames(JarFile jarFile) {
    method newFiles (line 635) | protected File newFiles(String... names) throws IOException {
    method newFile (line 648) | protected File newFile(String name) throws IOException {
    method createLayeredJar (line 654) | File createLayeredJar() throws IOException {
    method createLayeredJar (line 658) | File createLayeredJar(boolean addReachabilityProperties) throws IOExce...
    method createLayeredJar (line 663) | File createLayeredJar(Action<LayeredSpec> action) throws IOException {
    method createLayeredJar (line 667) | File createLayeredJar(boolean addReachabilityProperties, Action<Layere...
    method createPopulatedJar (line 674) | File createPopulatedJar() throws IOException {
    method createPopulatedJar (line 678) | File createPopulatedJar(boolean addReachabilityProperties) throws IOEx...
    method applyLayered (line 684) | abstract void applyLayered(Action<LayeredSpec> action);
    method addContent (line 686) | void addContent() throws IOException {
    method addContent (line 690) | @SuppressWarnings("unchecked")
    method createReachabilityProperties (line 741) | protected void createReachabilityProperties(File directory, String gro...
    method populateResolvedDependencies (line 750) | private void populateResolvedDependencies(Configuration configuration) {
    method mockArtifact (line 754) | private ResolvedArtifactResult mockArtifact(String fileName, String gr...
    method entryLines (line 768) | List<String> entryLines(JarFile jarFile, String entryName) throws IOEx...
    method getLayerNames (line 775) | private Set<String> getLayerNames(List<String> index) {

FILE: build-plugin/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/tasks/bundling/BootBuildImageTests.java
  class BootBuildImageTests (line 49) | class BootBuildImageTests {
    method setUp (line 55) | @BeforeEach
    method whenProjectVersionIsUnspecifiedThenItIsIgnoredWhenDerivingImageName (line 64) | @Test
    method whenProjectVersionIsSpecifiedThenItIsUsedInTagOfImageName (line 74) | @Test
    method whenImageNameIsSpecifiedThenItIsUsedInRequest (line 85) | @Test
    method springBootVersionDefaultValueIsUsed (line 97) | @Test
    method whenIndividualEntriesAreAddedToTheEnvironmentThenTheyAreIncludedInTheRequest (line 104) | @Test
    method whenEntriesAreAddedToTheEnvironmentThenTheyAreIncludedInTheRequest (line 113) | @Test
    method whenTheEnvironmentIsSetItIsIncludedInTheRequest (line 124) | @Test
    method whenTheEnvironmentIsSetItReplacesAnyExistingEntriesAndIsIncludedInTheRequest (line 135) | @Test
    method whenEnvironmentVariablesAreSetOnTheCommandLineTheyAreIncludedInTheRequest (line 147) | @Test
    method environmentVariablesFromTheCommandLineOverrideThoseInTheBuildScript (line 156) | @Test
    method whenUsingDefaultConfigurationThenRequestHasVerboseLoggingDisabled (line 166) | @Test
    method whenVerboseLoggingIsEnabledThenRequestHasVerboseLoggingEnabled (line 171) | @Test
    method whenUsingDefaultConfigurationThenRequestHasCleanCacheDisabled (line 177) | @Test
    method whenCleanCacheIsEnabledThenRequestHasCleanCacheEnabled (line 182) | @Test
    method whenUsingDefaultConfigurationThenRequestHasPublishDisabled (line 188) | @Test
    method whenNoBuilderIsConfiguredThenRequestHasDefaultBuilder (line 193) | @Test
    method whenBuilderIsConfiguredThenRequestUsesSpecifiedBuilder (line 200) | @Test
    method whenTrustBuilderIsEnabledThenRequestHasTrustBuilderEnabled (line 208) | @Test
    method whenNoRunImageIsConfiguredThenRequestUsesDefaultRunImage (line 215) | @Test
    method whenRunImageIsConfiguredThenRequestUsesSpecifiedRunImage (line 220) | @Test
    method whenUsingDefaultConfigurationThenRequestHasAlwaysPullPolicy (line 228) | @Test
    method whenPullPolicyIsConfiguredThenRequestHasPullPolicy (line 233) | @Test
    method whenNoBuildpacksAreConfiguredThenRequestUsesDefaultBuildpacks (line 239) | @Test
    method whenBuildpacksAreConfiguredThenRequestHasBuildpacks (line 244) | @Test
    method whenEntriesAreAddedToBuildpacksThenRequestHasBuildpacks (line 251) | @Test
    method whenIndividualEntriesAreAddedToBuildpacksThenRequestHasBuildpacks (line 258) | @Test
    method whenNoBindingsAreConfiguredThenRequestHasNoBindings (line 266) | @Test
    method whenBindingsAreConfiguredThenRequestHasBindings (line 271) | @Test
    method whenEntriesAreAddedToBindingsThenRequestHasBindings (line 278) | @Test
    method whenIndividualEntriesAreAddedToBindingsThenRequestHasBindings (line 286) | @Test
    method whenNetworkIsConfiguredThenRequestHasNetwork (line 294) | @Test
    method whenNoTagsAreConfiguredThenRequestHasNoTags (line 300) | @Test
    method whenTagsAreConfiguredThenRequestHasTags (line 305) | @Test
    method whenEntriesAreAddedToTagsThenRequestHasTags (line 313) | @Test
    method whenIndividualEntriesAreAddedToTagsThenRequestHasTags (line 321) | @Test
    method whenSecurityOptionsAreNotConfiguredThenRequestHasNoSecurityOptions (line 330) | @Test
    method whenSecurityOptionsAreEmptyThenRequestHasEmptySecurityOptions (line 335) | @Test
    method whenSecurityOptionsAreConfiguredThenRequestHasSecurityOptions (line 341) | @Test
    method whenImagePlatformIsNotConfiguredThenRequestHasNoImagePlatform (line 349) | @Test
    method whenImagePlatformIsConfiguredThenRequestHasImagePlatform (line 354) | @Test

FILE: build-plugin/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/tasks/bundling/BootJarIntegrationTests.java
  class BootJarIntegrationTests (line 39) | @GradleCompatibility(configurationCache = true)
    method BootJarIntegrationTests (line 42) | BootJarIntegrationTests() {
    method whenAResolvableCopyOfAnUnresolvableConfigurationIsResolvedThenResolutionSucceeds (line 46) | @TestTemplate
    method packagedApplicationClasspath (line 52) | @TestTemplate
    method explodedApplicationClasspath (line 64) | @TestTemplate
    method copyClasspathApplication (line 76) | private void copyClasspathApplication() throws IOException {
    method getExpectedApplicationLayerContents (line 80) | @Override

FILE: build-plugin/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/tasks/bundling/BootJarTests.java
  class BootJarTests (line 40) | @ClassPathExclusions("kotlin-daemon-client-*")
    method BootJarTests (line 43) | BootJarTests() {
    method setUp (line 48) | @BeforeEach
    method contentCanBeAddedToBootInfUsingCopySpecFromGetter (line 53) | @Test
    method contentCanBeAddedToBootInfUsingCopySpecAction (line 64) | @Test
    method jarsInLibAreStored (line 75) | @Test
    method whenJarIsLayeredClasspathIndexPointsToLayeredLibs (line 86) | @Test
    method classpathIndexPointsToBootInfLibs (line 97) | @Test
    method metaInfEntryIsPackagedInTheRootOfTheArchive (line 110) | @Test
    method aopXmlIsPackagedBeneathClassesDirectory (line 130) | @Test
    method kotlinModuleIsPackagedBeneathClassesDirectory (line 150) | @Test
    method metaInfServicesEntryIsPackagedBeneathClassesDirectory (line 170) | @Test
    method nativeImageArgFileWithExcludesIsWritten (line 190) | @Test
    method nativeImageArgFileIsNotWrittenWhenExcludesAreEmpty (line 199) | @Test
    method javaVersionIsWrittenToManifest (line 206) | @Test
    method applyLayered (line 214) | @Override
    method executeTask (line 219) | @Override

FILE: build-plugin/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/tasks/bundling/BootWarIntegrationTests.java
  class BootWarIntegrationTests (line 35) | @GradleCompatibility(configurationCache = true)
    method BootWarIntegrationTests (line 38) | BootWarIntegrationTests() {
    method getExpectedApplicationLayerContents (line 42) | @Override
    method multiModuleImplicitLayers (line 49) | @Override
    method multiModuleCustomLayers (line 55) | @Override
    method whenTestingWithTheConfigurationCacheAssumeThatTheGradleVersionIsLessThan8 (line 61) | private void whenTestingWithTheConfigurationCacheAssumeThatTheGradleVe...

FILE: build-plugin/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/tasks/bundling/BootWarTests.java
  class BootWarTests (line 38) | @ClassPathExclusions("kotlin-daemon-client-*")
    method BootWarTests (line 41) | BootWarTests() {
    method setUp (line 46) | @BeforeEach
    method providedClasspathJarsArePackagedInWebInfLibProvided (line 51) | @Test
    method providedClasspathCanBeSetUsingAFileCollection (line 62) | @Test
    method providedClasspathCanBeSetUsingAnObject (line 74) | @Test
    method devtoolsJarIsExcludedByDefaultWhenItsOnTheProvidedClasspath (line 86) | @Test
    method webappResourcesInDirectoriesThatOverlapWithLoaderCanBePackaged (line 96) | @Test
    method libProvidedEntriesAreWrittenAfterLibEntries (line 112) | @Test
    method whenWarIsLayeredClasspathIndexPointsToLayeredLibs (line 122) | @Test
    method classpathIndexPointsToWebInfLibs (line 133) | @Test
    method javaVersionIsWrittenToManifest (line 146) | @Test
    method executeTask (line 154) | @Override
    method applyLayered (line 159) | @Override

FILE: build-plugin/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/tasks/bundling/DefaultTimeZoneOffsetTests.java
  class DefaultTimeZoneOffsetTests (line 34) | class DefaultTimeZoneOffsetTests {
    method removeFromWithLongInDifferentTimeZonesReturnsSameValue (line 38) | @Test
    method removeFromWithFileTimeReturnsFileTime (line 53) | @Test
    method toDosTime (line 68) | private long toDosTime(Calendar calendar, long time) {

FILE: build-plugin/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/tasks/bundling/DockerSpecTests.java
  class DockerSpecTests (line 42) | class DockerSpecTests {
    method prepareDockerSpec (line 46) | @BeforeEach
    method asDockerConfigurationWithDefaults (line 55) | @Test
    method asDockerConfigurationWithHostConfiguration (line 72) | @Test
    method asDockerConfigurationWithHostConfigurationNoTlsVerify (line 97) | @Test
    method asDockerConfigurationWithContextConfiguration (line 120) | @Test
    method asDockerConfigurationWithHostAndContextFails (line 142) | @Test
    method asDockerConfigurationWithBindHostToBuilder (line 150) | @Test
    method asDockerConfigurationWithUserAuth (line 174) | @Test
    method asDockerConfigurationWithIncompleteBuilderUserAuthFails (line 206) | @Test
    method asDockerConfigurationWithIncompletePublishUserAuthFails (line 217) | @Test
    method asDockerConfigurationWithTokenAuth (line 228) | @Test
    method asDockerConfigurationWithUserAndTokenAuthFails (line 243) | @Test
    method decoded (line 254) | @Nullable String decoded(@Nullable String value) {

FILE: build-plugin/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/tasks/bundling/MavenPublishingIntegrationTests.java
  class MavenPublishingIntegrationTests (line 37) | @GradleCompatibility
    method bootJarCanBePublished (line 43) | @TestTemplate
    method bootWarCanBePublished (line 57) | @TestTemplate
    method artifactWithSuffix (line 71) | private File artifactWithSuffix(String suffix) {
    method pomWith (line 77) | private PomCondition pomWith() {

FILE: build-plugin/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/tasks/bundling/PomCondition.java
  class PomCondition (line 36) | class PomCondition extends Condition<File> {
    method PomCondition (line 42) | PomCondition() {
    method PomCondition (line 46) | private PomCondition(Set<String> expectedContents, Set<String> notExpe...
    method matches (line 53) | @Override
    method description (line 74) | @Override
    method groupId (line 80) | PomCondition groupId(String groupId) {
    method artifactId (line 85) | PomCondition artifactId(String artifactId) {
    method version (line 90) | PomCondition version(String version) {
    method packaging (line 95) | PomCondition packaging(String packaging) {
    method noDependencies (line 100) | PomCondition noDependencies() {
    method noPackaging (line 105) | PomCondition noPackaging() {

FILE: build-plugin/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/tasks/run/BootRunIntegrationTests.java
  class BootRunIntegrationTests (line 45) | @GradleCompatibility(configurationCache = true)
    method basicExecution (line 51) | @TestTemplate
    method sourceResourcesCanBeUsed (line 64) | @TestTemplate
    method springBootExtensionMainClassNameIsUsed (line 76) | @TestTemplate
    method applicationPluginMainClassNameIsUsed (line 86) | @TestTemplate
    method applicationPluginMainClassNameIsNotUsedWhenItIsNull (line 96) | @TestTemplate
    method defaultJvmArgs (line 107) | @TestTemplate
    method optimizedLaunchDisabledJvmArgs (line 117) | @TestTemplate
    method applicationPluginJvmArgumentsAreUsed (line 127) | @TestTemplate
    method jarTypeFilteringIsAppliedToTheClasspath (line 146) | @TestTemplate
    method classesFromASecondarySourceSetCanBeOnTheClasspath (line 159) | @TestTemplate
    method developmentOnlyDependenciesAreOnTheClasspath (line 171) | @TestTemplate
    method testAndDevelopmentOnlyDependenciesAreOnTheClasspath (line 181) | @TestTemplate
    method copyMainClassApplication (line 191) | private void copyMainClassApplication() throws IOException {
    method copyClasspathApplication (line 195) | private void copyClasspathApplication() throws IOException {
    method copyJvmArgsApplication (line 199) | private void copyJvmArgsApplication() throws IOException {
    method copyApplication (line 203) | private void copyApplication(String name) throws IOException {
    method canonicalPathOf (line 209) | private String canonicalPathOf(String path) throws IOException {
    method createStandardJar (line 213) | private void createStandardJar(File location) throws IOException {
    method createDependenciesStarterJar (line 218) | private void createDependenciesStarterJar(File location) throws IOExce...
    method createJar (line 222) | private void createJar(File location, Consumer<Attributes> attributesC...

FILE: build-plugin/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/tasks/run/BootTestRunIntegrationTests.java
  class BootTestRunIntegrationTests (line 45) | @GradleCompatibility(configurationCache = true)
    method basicExecution (line 51) | @TestTemplate
    method defaultJvmArgs (line 64) | @TestTemplate
    method optimizedLaunchDisabledJvmArgs (line 74) | @TestTemplate
    method applicationPluginJvmArgumentsAreUsed (line 84) | @TestTemplate
    method jarTypeFilteringIsAppliedToTheClasspath (line 103) | @TestTemplate
    method failsGracefullyWhenNoTestMainMethodIsFound (line 116) | @TestTemplate
    method developmentOnlyDependenciesAreNotOnTheClasspath (line 134) | @TestTemplate
    method testAndDevelopmentOnlyDependenciesAreOnTheClasspath (line 144) | @TestTemplate
    method copyClasspathApplication (line 154) | private void copyClasspathApplication() throws IOException {
    method copyJvmArgsApplication (line 158) | private void copyJvmArgsApplication() throws IOException {
    method copyApplication (line 162) | private void copyApplication(String name) throws IOException {
    method canonicalPathOf (line 168) | private String canonicalPathOf(String path) throws IOException {
    method createStandardJar (line 172) | private void createStandardJar(File location) throws IOException {
    method createDependenciesStarterJar (line 177) | private void createDependenciesStarterJar(File location) throws IOExce...
    method createJar (line 181) | private void createJar(File location, Consumer<Attributes> attributesC...

FILE: build-plugin/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/testkit/PluginClasspathGradleBuild.java
  class PluginClasspathGradleBuild (line 57) | public class PluginClasspathGradleBuild extends GradleBuild {
    method PluginClasspathGradleBuild (line 61) | public PluginClasspathGradleBuild(BuildOutput buildOutput) {
    method PluginClasspathGradleBuild (line 65) | public PluginClasspathGradleBuild(BuildOutput buildOutput, Dsl dsl) {
    method kotlin (line 69) | public PluginClasspathGradleBuild kotlin() {
    method prepareRunner (line 74) | @Override
    method pluginClasspath (line 79) | private List<File> pluginClasspath() {
    method pathOfJarContaining (line 135) | private String pathOfJarContaining(String className) {
    method pathOfJarContaining (line 144) | private String pathOfJarContaining(Class<?> type) {

FILE: build-plugin/spring-boot-gradle-plugin/src/test/resources/com/example/bootjar/classpath/BootJarClasspathApplication.java
  class BootJarClasspathApplication (line 27) | public class BootJarClasspathApplication {
    method BootJarClasspathApplication (line 29) | protected BootJarClasspathApplication() {
    method main (line 33) | public static void main(String[] args) {

FILE: build-plugin/spring-boot-gradle-plugin/src/test/resources/com/example/bootjar/main/CustomMainClass.java
  class CustomMainClass (line 24) | public class CustomMainClass {
    method CustomMainClass (line 26) | protected CustomMainClass() {
    method main (line 30) | public static void main(String[] args) {

FILE: build-plugin/spring-boot-gradle-plugin/src/test/resources/com/example/bootrun/classpath/BootRunClasspathApplication.java
  class BootRunClasspathApplication (line 27) | public class BootRunClasspathApplication {
    method BootRunClasspathApplication (line 29) | protected BootRunClasspathApplication() {
    method main (line 33) | public static void main(String[] args) {

FILE: build-plugin/spring-boot-gradle-plugin/src/test/resources/com/example/bootrun/jvmargs/BootRunJvmArgsApplication.java
  class BootRunJvmArgsApplication (line 26) | public class BootRunJvmArgsApplication {
    method BootRunJvmArgsApplication (line 28) | protected BootRunJvmArgsApplication() {
    method main (line 32) | public static void main(String[] args) {

FILE: build-plugin/spring-boot-gradle-plugin/src/test/resources/com/example/bootrun/main/CustomMainClass.java
  class CustomMainClass (line 24) | public class CustomMainClass {
    method CustomMainClass (line 26) | protected CustomMainClass() {
    method main (line 30) | public static void main(String[] args) {

FILE: build-plugin/spring-boot-gradle-plugin/src/test/resources/com/example/boottestrun/classpath/BootTestRunClasspathApplication.java
  class BootTestRunClasspathApplication (line 27) | public class BootTestRunClasspathApplication {
    method BootTestRunClasspathApplication (line 29) | protected BootTestRunClasspathApplication() {
    method main (line 33) | public static void main(String[] args) {

FILE: build-plugin/spring-boot-gradle-plugin/src/test/resources/com/example/boottestrun/jvmargs/BootTestRunJvmArgsApplication.java
  class BootTestRunJvmArgsApplication (line 26) | public class BootTestRunJvmArgsApplication {
    method BootTestRunJvmArgsApplication (line 28) | protected BootTestRunJvmArgsApplication() {
    method main (line 32) | public static void main(String[] args) {

FILE: build-plugin/spring-boot-gradle-plugin/src/test/resources/com/example/boottestrun/nomain/BootTestRunNoMain.java
  class BootTestRunNoMain (line 24) | public class BootTestRunNoMain {

FILE: build-plugin/spring-boot-gradle-plugin/src/test/resources/com/example/bootwar/main/CustomMainClass.java
  class CustomMainClass (line 24) | public class CustomMainClass {
    method CustomMainClass (line 26) | protected CustomMainClass() {
    method main (line 30) | public static void main(String[] args) {

FILE: build-plugin/spring-boot-maven-plugin/src/dockerTest/java/org/springframework/boot/maven/BuildImageRegistryIntegrationTests.java
  class BuildImageRegistryIntegrationTests (line 41) | @ExtendWith(MavenBuildExtension.class)
    method setUp (line 53) | @BeforeEach
    method whenBuildImageIsInvokedWithPublish (line 60) | @TestTemplate

FILE: build-plugin/spring-boot-maven-plugin/src/dockerTest/java/org/springframework/boot/maven/BuildImageTests.java
  class BuildImageTests (line 53) | @ExtendWith(MavenBuildExtension.class)
    method whenBuildImageIsInvokedWithoutRepackageTheArchiveIsRepackagedOnTheFly (line 57) | @TestTemplate
    method whenBuildImageIsInvokedOnTheCommandLineWithoutRepackageTheArchiveIsRepackagedOnTheFly (line 79) | @TestTemplate
    method whenPackageIsInvokedWithClassifierTheOriginalArchiveIsFound (line 101) | @TestTemplate
    method whenBuildImageIsInvokedWithClassifierAndRepackageTheOriginalArchiveIsFound (line 121) | @TestTemplate
    method whenBuildImageIsInvokedWithClassifierSourceWithoutRepackageTheArchiveIsRepackagedOnTheFly (line 141) | @TestTemplate
    method whenBuildImageIsInvokedWithRepackageTheExistingArchiveIsUsed (line 163) | @TestTemplate
    method whenBuildImageIsInvokedWithClassifierAndRepackageTheExistingArchiveIsUsed (line 184) | @TestTemplate
    method whenBuildImageIsInvokedWithClassifierSourceAndRepackageTheExistingArchiveIsUsed (line 205) | @TestTemplate
    method whenBuildImageIsInvokedWithWarPackaging (line 227) | @TestTemplate
    method whenBuildImageIsInvokedWithCustomImageName (line 247) | @TestTemplate
    method whenBuildImageIsInvokedWithCommandLineParameters (line 267) | @TestTemplate
    method whenBuildImageIsInvokedWithCustomBuilderImageAndRunImage (line 292) | @TestTemplate
    method whenBuildImageIsInvokedWithTrustBuilder (line 307) | @TestTemplate
    method whenBuildImageIsInvokedWithEmptyEnvEntry (line 323) | @TestTemplate
    method whenBuildImageIsInvokedWithZipPackaging (line 339) | @TestTemplate
    method whenBuildImageIsInvokedWithBuildpacks (line 356) | @TestTemplate
    method whenBuildImageIsInvokedWithBinding (line 369) | @TestTemplate
    method whenBuildImageIsInvokedWithNetworkModeNone (line 384) | @TestTemplate
    method whenBuildImageIsInvokedOnMultiModuleProjectWithPackageGoal (line 398) | @TestTemplate
    method whenBuildImageIsInvokedWithTags (line 411) | @TestTemplate
    method whenBuildImageIsInvokedWithVolumeCaches (line 427) | @TestTemplate
    method whenBuildImageIsInvokedWithBindCaches (line 443) | @TestTemplate
    method cleanupCache (line 467) | private static void cleanupCache(Path cachePath) {
    method whenBuildImageIsInvokedWithCreatedDate (line 476) | @TestTemplate
    method whenBuildImageIsInvokedWithCurrentCreatedDate (line 492) | @TestTemplate
    method whenBuildImageIsInvokedWithApplicationDirectory (line 513) | @TestTemplate
    method whenBuildImageIsInvokedWithEmptySecurityOptions (line 526) | @TestTemplate
    method whenBuildImageIsInvokedOnLinuxArmWithImagePlatformLinuxArm (line 539) | @TestTemplate
    method failsWhenBuildImageIsInvokedOnLinuxAmdWithImagePlatformLinuxArm (line 563) | @TestTemplate
    method failsWhenBuildImageIsInvokedOnMultiModuleProjectWithBuildImageGoal (line 582) | @TestTemplate
    method failsWhenBuilderFails (line 590) | @TestTemplate
    method failsWithBuildpackNotInBuilder (line 601) | @TestTemplate
    method failsWhenFinalNameIsMisconfigured (line 610) | @TestTemplate
    method failsWhenCachesAreConfiguredTwice (line 618) | @TestTemplate
    method writeLongNameResource (line 626) | private void writeLongNameResource(File project) {
    method removeImages (line 639) | private void removeImages(String... names) throws IOException {
    method removeImage (line 651) | private void removeImage(String name, String version) {
    method deleteVolumes (line 661) | private void deleteVolumes(String... names) throws IOException {
    method randomString (line 668) | private String randomString() {

FILE: build-plugin/spring-boot-maven-plugin/src/dockerTest/projects/build-image-app-dir/src/main/java/org/test/SampleApplication.java
  class SampleApplication (line 19) | public class SampleApplication {
    method main (line 21) | public static void main(String[] args) throws Exception {

FILE: build-plugin/spring-boot-maven-plugin/src/dockerTest/projects/build-image-bad-buildpack/src/main/java/org/test/SampleApplication.java
  class SampleApplication (line 19) | public class SampleApplication {
    method main (line 21) | public static void main(String[] args) throws Exception {

FILE: build-plugin/spring-boot-maven-plugin/src/dockerTest/projects/build-image-bind-caches/src/main/java/org/test/SampleApplication.java
  class SampleApplication (line 19) | public class SampleApplication {
    method main (line 21) | public static void main(String[] args) throws Exception {

FILE: build-plugin/spring-boot-maven-plugin/src/dockerTest/projects/build-image-bindings/src/main/java/org/test/SampleApplication.java
  class SampleApplication (line 19) | public class SampleApplication {
    method main (line 21) | public static void main(String[] args) throws Exception {

FILE: build-plugin/spring-boot-maven-plugin/src/dockerTest/projects/build-image-builder-error/src/main/java/org/test/SampleApplication.java
  class SampleApplication (line 19) | public class SampleApplication {
    method main (line 21) | public static void main(String[] args) throws Exception {

FILE: build-plugin/spring-boot-maven-plugin/src/dockerTest/projects/build-image-caches-multiple/src/main/java/org/test/SampleApplication.java
  class SampleApplication (line 19) | public class SampleApplication {
    method main (line 21) | public static void main(String[] args) throws Exception {

FILE: build-plugin/spring-boot-maven-plugin/src/dockerTest/projects/build-image-classifier-source-with-repackage/src/main/java/org/test/SampleApplication.java
  class SampleApplication (line 19) | public class SampleApplication {
    method main (line 21) | public static void main(String[] args) throws Exception {

FILE: build-plugin/spring-boot-maven-plugin/src/dockerTest/projects/build-image-classifier-source/src/main/java/org/test/SampleApplication.java
  class SampleApplication (line 19) | public class SampleApplication {
    method main (line 21) | public static void main(String[] args) throws Exception {

FILE: build-plugin/spring-boot-maven-plugin/src/dockerTest/projects/build-image-classifier-with-repackage/src/main/java/org/test/SampleApplication.java
  class SampleApplication (line 19) | public class SampleApplication {
    method main (line 21) | public static void main(String[] args) throws Exception {

FILE: build-plugin/spring-boot-maven-plugin/src/dockerTest/projects/build-image-classifier/src/main/java/org/test/SampleApplication.java
  class SampleApplication (line 19) | public class SampleApplication {
    method main (line 21) | public static void main(String[] args) throws Exception {

FILE: build-plugin/spring-boot-maven-plugin/src/dockerTest/projects/build-image-cmd-line/src/main/java/org/test/SampleApplication.java
  class SampleApplication (line 19) | public class SampleApplication {
    method main (line 21) | public static void main(String[] args) throws Exception {

FILE: build-plugin/spring-boot-maven-plugin/src/dockerTest/projects/build-image-created-date/src/main/java/org/test/SampleApplication.java
  class SampleApplication (line 19) | public class SampleApplication {
    method main (line 21) | public static void main(String[] args) throws Exception {

FILE: build-plugin/spring-boot-maven-plugin/src/dockerTest/projects/build-image-current-created-date/src/main/java/org/test/SampleApplication.java
  class SampleApplication (line 19) | public class SampleApplication {
    method main (line 21) | public static void main(String[] args) throws Exception {

FILE: build-plugin/spring-boot-maven-plugin/src/dockerTest/projects/build-image-custom-builder/src/main/java/org/test/SampleApplication.java
  class SampleApplication (line 19) | public class SampleApplication {
    method main (line 21) | public static void main(String[] args) throws Exception {

FILE: build-plugin/spring-boot-maven-plugin/src/dockerTest/projects/build-image-custom-buildpacks/src/main/java/org/test/SampleApplication.java
  class SampleApplication (line 19) | public class SampleApplication {
    method main (line 21) | public static void main(String[] args) throws Exception {

FILE: build-plugin/spring-boot-maven-plugin/src/dockerTest/projects/build-image-custom-name/src/main/java/org/test/SampleApplication.java
  class SampleApplication (line 19) | public class SampleApplication {
    method main (line 21) | public static void main(String[] args) throws Exception {

FILE: build-plugin/spring-boot-maven-plugin/src/dockerTest/projects/build-image-empty-env-entry/src/main/java/org/test/SampleApplication.java
  class SampleApplication (line 19) | public class SampleApplication {
    method main (line 21) | public static void main(String[] args) throws Exception {

FILE: build-plugin/spring-boot-maven-plugin/src/dockerTest/projects/build-image-final-name/src/main/java/org/test/SampleApplication.java
  class SampleApplication (line 19) | public class SampleApplication {
    method main (line 21) | public static void main(String[] args) throws Exception {

FILE: build-plugin/spring-boot-maven-plugin/src/dockerTest/projects/build-image-fork-classifier/src/main/java/org/test/SampleApplication.java
  class SampleApplication (line 19) | public class SampleApplication {
    method main (line 21) | public static void main(String[] args) throws Exception {

FILE: build-plugin/spring-boot-maven-plugin/src/dockerTest/projects/build-image-multi-module/app/src/main/java/org/test/SampleApplication.java
  class SampleApplication (line 21) | public class SampleApplication {
    method main (line 23) | public static void main(String[] args) throws Exception {

FILE: build-plugin/spring-boot-maven-plugin/src/dockerTest/projects/build-image-multi-module/library/src/main/java/org/test/SampleLibrary.java
  class SampleLibrary (line 19) | public class SampleLibrary {
    method getMessage (line 20) | public static String getMessage() {

FILE: build-plugin/spring-boot-maven-plugin/src/dockerTest/projects/build-image-network/src/main/java/org/test/SampleApplication.java
  class SampleApplication (line 19) | public class SampleApplication {
    method main (line 21) | public static void main(String[] args) throws Exception {

FILE: build-plugin/spring-boot-maven-plugin/src/dockerTest/projects/build-image-platform-linux-arm/src/main/java/org/test/SampleApplication.java
  class SampleApplication (line 19) | public class SampleApplication {
    method main (line 21) | public static void main(String[] args) throws Exception {

FILE: build-plugin/spring-boot-maven-plugin/src/dockerTest/projects/build-image-publish/src/main/java/org/test/SampleApplication.java
  class SampleApplication (line 19) | public class SampleApplication {
    method main (line 21) | public static void main(String[] args) throws Exception {

FILE: build-plugin/spring-boot-maven-plugin/src/dockerTest/projects/build-image-security-opts/src/main/java/org/test/SampleApplication.java
  class SampleApplication (line 19) | public class SampleApplication {
    method main (line 21) | public static void main(String[] args) throws Exception {

FILE: build-plugin/spring-boot-maven-plugin/src/dockerTest/projects/build-image-tags/src/main/java/org/test/SampleApplication.java
  class SampleApplication (line 19) | public class SampleApplication {
    method main (line 21) | public static void main(String[] args) throws Exception {

FILE: build-plugin/spring-boot-maven-plugin/src/dockerTest/projects/build-image-trust-builder/src/main/java/org/test/SampleApplication.java
  class SampleApplication (line 19) | public class SampleApplication {
    method main (line 21) | public static void main(String[] args) throws Exception {

FILE: build-plugin/spring-boot-maven-plugin/src/dockerTest/projects/build-image-volume-caches/src/main/java/org/test/SampleApplication.java
  class SampleApplication (line 19) | public class SampleApplication {
    method main (line 21) | public static void main(String[] args) throws Exception {

FILE: build-plugin/spring-boot-maven-plugin/src/dockerTest/projects/build-image-war-packaging/src/main/java/org/test/SampleApplication.java
  class SampleApplication (line 19) | public class SampleApplication {
    method main (line 21) | public static void main(String[] args) throws Exception {

FILE: build-plugin/spring-boot-maven-plugin/src/dockerTest/projects/build-image-with-repackage/src/main/java/org/test/SampleApplication.java
  class SampleApplication (line 19) | public class SampleApplication {
    method main (line 21) | public static void main(String[] args) throws Exception {

FILE: build-plugin/spring-boot-maven-plugin/src/dockerTest/projects/build-image-zip-packaging/src/main/java/org/test/SampleApplication.java
  class SampleApplication (line 19) | public class SampleApplication {
    method main (line 21) | public static void main(String[] args) throws Exception {

FILE: build-plugin/spring-boot-maven-plugin/src/dockerTest/projects/build-image/src/main/java/org/test/SampleApplication.java
  class SampleApplication (line 19) | public class SampleApplication {
    method main (line 21) | public static void main(String[] args) throws Exception {

FILE: build-plugin/spring-boot-maven-plugin/src/intTest/java/org/springframework/boot/maven/AbstractArchiveIntegrationTests.java
  class AbstractArchiveIntegrationTests (line 52) | abstract class AbstractArchiveIntegrationTests {
    method buildLog (line 54) | protected String buildLog(File project) {
    method jar (line 58) | protected AssertProvider<JarAssert> jar(File file) {
    method readLayerIndex (line 70) | protected Map<String, List<String>> readLayerIndex(JarFile jarFile) th...
    method getLayersIndexLocation (line 96) | protected @Nullable String getLayersIndexLocation() {
    method readClasspathIndex (line 100) | protected List<String> readClasspathIndex(JarFile jarFile, String loca...
    class JarAssert (line 116) | static final class JarAssert extends AbstractAssert<JarAssert, File> {
      method JarAssert (line 118) | private JarAssert(File actual) {
      method doesNotHaveEntryWithName (line 123) | JarAssert doesNotHaveEntryWithName(String name) {
      method hasEntryWithName (line 133) | JarAssert hasEntryWithName(String name) {
      method hasEntryWithNameStartingWith (line 143) | JarAssert hasEntryWithNameStartingWith(String prefix) {
      method hasUnpackEntryWithNameStartingWith (line 154) | JarAssert hasUnpackEntryWithNameStartingWith(String prefix) {
      method doesNotHaveEntryWithNameStartingWith (line 166) | JarAssert doesNotHaveEntryWithNameStartingWith(String prefix) {
      method entryNamesInPath (line 177) | @CheckReturnValue
      method manifest (line 187) | JarAssert manifest(Consumer<ManifestAssert> consumer) {
      method withJarFile (line 199) | void withJarFile(Consumer<JarFile> consumer) {
      method withEntries (line 208) | void withEntries(JarFile jarFile, Consumer<Stream<JarEntry>> entries) {
      class ManifestAssert (line 212) | static final class ManifestAssert extends AbstractAssert<ManifestAss...
        method ManifestAssert (line 214) | private ManifestAssert(Manifest actual) {
        method hasStartClass (line 218) | ManifestAssert hasStartClass(String expected) {
        method hasMainClass (line 223) | ManifestAssert hasMainClass(String expected) {
        method hasAttribute (line 228) | ManifestAssert hasAttribute(String name, String value) {
        method doesNotHaveAttribute (line 233) | ManifestAssert doesNotHaveAttribute(String name) {

FILE: build-plugin/spring-boot-maven-plugin/src/intTest/java/org/springframework/boot/maven/AotTests.java
  class AotTests (line 42) | @ExtendWith(MavenBuildExtension.class)
    method whenAotRunsSourcesAreGenerated (line 45) | @TestTemplate
    method whenAotRunsResourcesAreGeneratedAndCopiedToTargetClasses (line 54) | @TestTemplate
    method whenAotRunsWithJdkProxyResourcesIncludeProxyConfig (line 67) | @TestTemplate
    method whenAotRunsWithClassProxyClassesAreGenerated (line 79) | @TestTemplate
    method whenAotRunsWithProfilesSourcesAreGenerated (line 88) | @TestTemplate
    method whenAotRunsWithArgumentsSourcesAreGenerated (line 97) | @TestTemplate
    method whenAotRunsWithSystemPropertiesSourcesAreGenerated (line 106) | @TestTemplate
    method whenAotRunsWithJvmArgumentsSourcesAreGenerated (line 115) | @TestTemplate
    method whenAotRunsWithReleaseSourcesAreGenerated (line 124) | @TestTemplate
    method whenAotRunsWithInvalidCompilerArgumentsCompileFails (line 133) | @TestTemplate
    method whenAotRunsSourcesAreCompiledAndMovedToTargetClasses (line 142) | @TestTemplate
    method whenAotRunsWithModuleInfoSourcesAreCompiledAndMovedToTargetClass (line 151) | @TestTemplate
    method whenAotRunsResourcesAreCopiedToTargetClasses (line 160) | @TestTemplate
    method whenAotRunsWithClassProxyClassesAreCopiedToTargetClasses (line 170) | @TestTemplate
    method whenAotRunsWithDevtoolsInClasspathItIsExcluded (line 179) | @TestTemplate
    method whenAotTestRunsSourcesAndResourcesAreGenerated (line 190) | @TestTemplate
    method whenTestAotRunsWithTestSkipItIsAlsoSkipped (line 204) | @TestTemplate
    method whenTestAotRunsWithDevtoolsInClasspathItIsExcluded (line 214) | @TestTemplate
    method collectRelativePaths (line 225) | List<Path> collectRelativePaths(Path sourceDirectory) {
    method buildLog (line 236) | protected String buildLog(File project) {

FILE: build-plugin/spring-boot-maven-plugin/src/intTest/java/org/springframework/boot/maven/BuildInfoIntegrationTests.java
  class BuildInfoIntegrationTests (line 41) | @ExtendWith(MavenBuildExtension.class)
    method buildInfoPropertiesAreGenerated (line 44) | @TestTemplate
    method generatedBuildInfoIncludesAdditionalProperties (line 54) | @TestTemplate
    method generatedBuildInfoUsesCustomBuildTime (line 67) | @TestTemplate
    method generatedBuildInfoReproducible (line 77) | @TestTemplate
    method generatedBuildInfoReproducibleEpochSeconds (line 87) | @TestTemplate
    method buildInfoPropertiesAreGeneratedToCustomOutputLocation (line 97) | @TestTemplate
    method whenBuildTimeIsDisabledIfDoesNotAppearInGeneratedBuildInfo (line 108) | @TestTemplate
    method whenBuildTimeIsExcludedIfDoesNotAppearInGeneratedBuildInfo (line 118) | @TestTemplate
    method whenBuildPropertiesAreExcludedTheyDoNotAppearInGeneratedBuildInfo (line 128) | @TestTemplate
    method buildInfo (line 138) | private ProjectCallback buildInfo(Consumer<AssertProvider<BuildInfoAss...
    method buildInfo (line 142) | private ProjectCallback buildInfo(String location, Consumer<AssertProv...
    method buildInfo (line 146) | private AssertProvider<BuildInfoAssert> buildInfo(File project, String...
    class BuildInfoAssert (line 158) | private static final class BuildInfoAssert extends AbstractMapAssert<B...
      method BuildInfoAssert (line 160) | private BuildInfoAssert(File actual) {
      method loadProperties (line 164) | private static Properties loadProperties(File file) {
      method hasBuildGroup (line 175) | BuildInfoAssert hasBuildGroup(String expected) {
      method doesNotContainBuildGroup (line 179) | BuildInfoAssert doesNotContainBuildGroup() {
      method hasBuildArtifact (line 183) | BuildInfoAssert hasBuildArtifact(String expected) {
      method doesNotContainBuildArtifact (line 187) | BuildInfoAssert doesNotContainBuildArtifact() {
      method hasBuildName (line 191) | BuildInfoAssert hasBuildName(String expected) {
      method doesNotContainBuildName (line 195) | BuildInfoAssert doesNotContainBuildName() {
      method hasBuildVersion (line 199) | BuildInfoAssert hasBuildVersion(String expected) {
      method doesNotContainBuildVersion (line 203) | BuildInfoAssert doesNotContainBuildVersion() {
      method containsBuildTime (line 207) | BuildInfoAssert containsBuildTime() {
      method doesNotContainBuildTime (line 211) | BuildInfoAssert doesNotContainBuildTime() {
      method hasBuildTime (line 215) | BuildInfoAssert hasBuildTime(String expected) {

FILE: build-plugin/spring-boot-maven-plugin/src/intTest/java/org/springframework/boot/maven/EclipseM2eIntegrationTests.java
  class EclipseM2eIntegrationTests (line 35) | class EclipseM2eIntegrationTests {
    method pluginPomIncludesOptionalShadeDependency (line 37) | @Test // gh-21992
    method isPomFile (line 49) | private boolean isPomFile(File file) {

FILE: build-plugin/spring-boot-maven-plugin/src/intTest/java/org/springframework/boot/maven/JarIntegrationTests.java
  class JarIntegrationTests (line 46) | @ExtendWith(MavenBuildExtension.class)
    method getLayersIndexLocation (line 49) | @Override
    method whenJarIsRepackagedInPlaceOnlyRepackagedJarIsInstalled (line 54) | @TestTemplate
    method whenAttachIsDisabledOnlyTheOriginalJarIsInstalled (line 79) | @TestTemplate
    method whenAClassifierIsConfiguredTheRepackagedJarHasAClassifierAndBothItAndTheOriginalAreInstalled (line 92) | @TestTemplate
    method whenBothJarsHaveTheSameClassifierRepackagingIsDoneInPlaceAndOnlyRepackagedJarIsInstalled (line 110) | @TestTemplate
    method whenBothJarsHaveTheSameClassifierAndAttachIsDisabledOnlyTheOriginalJarIsInstalled (line 126) | @TestTemplate
    method whenAClassifierAndAnOutputDirectoryAreConfiguredTheRepackagedJarHasAClassifierAndIsWrittenToTheOutputDirectory (line 143) | @TestTemplate
    method whenAnOutputDirectoryIsConfiguredTheRepackagedJarIsWrittenToIt (line 153) | @TestTemplate
    method whenAnEntryIsExcludedItDoesNotAppearInTheRepackagedJar (line 162) | @TestTemplate
    method whenAnEntryIsOptionalByDefaultDoesNotAppearInTheRepackagedJar (line 174) | @TestTemplate
    method whenAnEntryIsOptionalAndOptionalsIncludedAppearsInTheRepackagedJar (line 185) | @TestTemplate
    method whenAnEntryIsOptionalAndOptionalsExcludedDoesNotAppearInTheRepackagedJar (line 196) | @TestTemplate
    method whenAnEntryIsExcludedWithPropertyItDoesNotAppearInTheRepackagedJar (line 207) | @TestTemplate
    method whenAnEntryIsIncludedOnlyIncludedEntriesAppearInTheRepackagedJar (line 222) | @TestTemplate
    method whenAnIncludeIsSpecifiedAsAPropertyOnlyIncludedEntriesAppearInTheRepackagedJar (line 234) | @TestTemplate
    method whenAGroupIsExcludedNoEntriesInThatGroupAppearInTheRepackagedJar (line 249) | @TestTemplate
    method whenAJarIsBuiltWithLibrariesWithConflictingNamesTheyAreMadeUniqueUsingTheirGroupIds (line 260) | @TestTemplate
    method whenAProjectUsesPomPackagingRepackagingIsSkipped (line 271) | @TestTemplate
    method whenRepackagingIsSkippedTheJarIsNotRepackaged (line 279) | @TestTemplate
    method whenADependencyHasSystemScopeAndInclusionOfSystemScopeDependenciesIsEnabledItIsIncludedInTheRepackagedJar (line 289) | @TestTemplate
    method whenADependencyHasSystemScopeItIsNotIncludedInTheRepackagedJar (line 299) | @TestTemplate
    method whenADependencyHasTestScopeItIsNotIncludedInTheRepackagedJar (line 308) | @TestTemplate
    method whenAProjectUsesKotlinItsModuleMetadataIsRepackagedIntoBootInfClasses (line 317) | @TestTemplate
    method whenAProjectIsBuiltWithALayoutPropertyTheSpecifiedLayoutIsUsed (line 325) | @TestTemplate
    method whenALayoutIsConfiguredTheSpecifiedLayoutIsUsed (line 338) | @TestTemplate
    method whenRequiresUnpackConfigurationIsProvidedItIsReflectedInTheRepackagedJar (line 349) | @TestTemplate
    method whenJarIsRepackagedWithACustomLayoutTheJarUsesTheLayout (line 358) | @TestTemplate
    method repackagedJarContainsTheLayersIndexByDefault (line 368) | @TestTemplate
    method whenJarIsRepackagedWithTheLayersDisabledDoesNotContainLayersIndex (line 393) | @TestTemplate
    method whenJarIsRepackagedWithToolsExclude (line 407) | @TestTemplate
    method whenJarIsRepackagedWithTheCustomLayers (line 420) | @TestTemplate
    method whenJarIsRepackagedWithTheCustomLayersFromClasspath (line 440) | @TestTemplate
    method repackagedJarContainsClasspathIndex (line 461) | @TestTemplate
    method whenJarIsRepackagedWithOutputTimestampConfiguredThenJarIsReproducible (line 475) | @TestTemplate
    method buildJarWithOutputTimestamp (line 484) | private String buildJarWithOutputTimestamp(MavenBuild mavenBuild) {
    method whenJarIsRepackagedWithOutputTimestampConfiguredThenLibrariesAreSorted (line 510) | @TestTemplate
    method whenSigned (line 527) | @TestTemplate

FILE: build-plugin/spring-boot-maven-plugin/src/intTest/java/org/springframework/boot/maven/MavenBuild.java
  class MavenBuild (line 60) | class MavenBuild {
    method MavenBuild (line 76) | MavenBuild(File home) {
    method createTempDirectory (line 82) | private File createTempDirectory() {
    method getPomReplacements (line 91) | private Map<String, String> getPomReplacements() {
    method project (line 100) | MavenBuild project(String project) {
    method project (line 104) | MavenBuild project(String root, String project) {
    method goals (line 109) | MavenBuild goals(String... goals) {
    method systemProperty (line 114) | MavenBuild systemProperty(String name, String value) {
    method prepare (line 119) | MavenBuild prepare(ProjectCallback callback) {
    method execute (line 124) | void execute(ProjectCallback callback) {
    method executeAndFail (line 128) | void executeAndFail(ProjectCallback callback) {
    method execute (line 132) | private void execute(ProjectCallback callback, int expectedExitCode) {
    type ProjectCallback (line 210) | @FunctionalInterface
      method doWith (line 218) | void doWith(File project) throws Exception;

FILE: build-plugin/spring-boot-maven-plugin/src/intTest/java/org/springframework/boot/maven/MavenBuildExtension.java
  class MavenBuildExtension (line 40) | class MavenBuildExtension implements TestTemplateInvocationContextProvid...
    method supportsTestTemplate (line 42) | @Override
    method provideTestTemplateInvocationContexts (line 47) | @Override
    class MavenVersionTestTemplateInvocationContext (line 59) | private static final class MavenVersionTestTemplateInvocationContext i...
      method MavenVersionTestTemplateInvocationContext (line 63) | private MavenVersionTestTemplateInvocationContext(Path mavenHome) {
      method getDisplayName (line 67) | @Override
      method getAdditionalExtensions (line 72) | @Override
    class MavenBuildParameterResolver (line 79) | private static final class MavenBuildParameterResolver implements Para...
      method MavenBuildParameterResolver (line 83) | private MavenBuildParameterResolver(Path mavenHome) {
      method supportsParameter (line 87) | @Override
      method resolveParameter (line 92) | @Override

FILE: build-plugin/spring-boot-maven-plugin/src/intTest/java/org/springframework/boot/maven/RunIntegrationTests.java
  class RunIntegrationTests (line 35) | @ExtendWith(MavenBuildExtension.class)
    method whenTheRunGoalIsExecutedTheApplicationIsForkedWithOptimizedJvmArguments (line 38) | @TestTemplate
    method whenEnvironmentVariablesAreConfiguredTheyAreAvailableToTheApplication (line 46) | @TestTemplate
    method whenExclusionsAreConfiguredExcludedDependenciesDoNotAppearOnTheClasspath (line 53) | @TestTemplate
    method whenSystemPropertiesAndJvmArgumentsAreConfiguredTheyAreAvailableToTheApplication (line 60) | @TestTemplate
    method whenJvmArgumentsAreConfiguredTheyAreAvailableToTheApplication (line 67) | @TestTemplate
    method whenCommandLineSpecifiesJvmArgumentsTheyAreAvailableToTheApplication (line 74) | @TestTemplate
    method whenPomAndCommandLineSpecifyJvmArgumentsThenPomOverrides (line 82) | @TestTemplate
    method whenProfilesAreConfiguredTheyArePassedToTheApplication (line 90) | @TestTemplate
    method whenUseTestClasspathIsEnabledTheApplicationHasTestDependenciesOnItsClasspath (line 97) | @TestTemplate
    method whenAWorkingDirectoryIsConfiguredTheApplicationIsRunFromThatDirectory (line 104) | @TestTemplate
    method whenAdditionalClasspathDirectoryIsConfiguredItsResourcesAreAvailableToTheApplication (line 111) | @TestTemplate
    method whenAdditionalClasspathFileIsConfiguredItsContentIsAvailableToTheApplication (line 118) | @TestTemplate
    method whenAToolchainIsConfiguredItIsUsedToRunTheApplication (line 125) | @TestTemplate
    method whenPomSpecifiesRunArgumentsContainingCommasTheyArePassedToTheApplicationCorrectly (line 133) | @TestTemplate
    method whenCommandLineSpecifiesRunArgumentsContainingCommasTheyArePassedToTheApplicationCorrectly (line 141) | @TestTemplate
    method whenPomAndCommandLineSpecifyRunArgumentsThenPomOverrides (line 152) | @TestTemplate
    method buildLog (line 162) | private String buildLog(File project) {

FILE: build-plugin/spring-boot-maven-plugin/src/intTest/java/org/springframework/boot/maven/StartStopIntegrationTests.java
  class StartStopIntegrationTests (line 32) | @ExtendWith(MavenBuildExtension.class)
    method startStopWaitsForApplicationToBeReadyAndThenRequestsShutdown (line 35) | @TestTemplate
    method whenSkipIsTrueStartAndStopAreSkipped (line 43) | @TestTemplate
    method buildLog (line 51) | private String buildLog(File project) {

FILE: build-plugin/spring-boot-maven-plugin/src/intTest/java/org/springframework/boot/maven/TestRunIntegrationTests.java
  class TestRunIntegrationTests (line 33) | @ExtendWith(MavenBuildExtension.class)
    method whenTheTestRunGoalIsExecutedTheApplicationIsRunWithTestAndMainClassesAndTestClasspath (line 36) | @TestTemplate
    method canonicalPathOf (line 48) | private String canonicalPathOf(File project, String path) throws IOExc...
    method buildLog (line 52) | private String buildLog(File project) {

FILE: build-plugin/spring-boot-maven-plugin/src/intTest/java/org/springframework/boot/maven/Versions.java
  class Versions (line 33) | class Versions {
    method Versions (line 37) | Versions() {
    method loadVersions (line 41) | private static Map<String, String> loadVersions() {
    method get (line 54) | @Nullable String get(String name) {
    method asMap (line 58) | Map<String, String> asMap() {

FILE: build-plugin/spring-boot-maven-plugin/src/intTest/java/org/springframework/boot/maven/WarIntegrationTests.java
  class WarIntegrationTests (line 46) | @ExtendWith(MavenBuildExtension.class)
    method getLayersIndexLocation (line 49) | @Override
    method warRepackaging (line 54) | @TestTemplate
    method jarDependencyWithCustomFinalNameBuiltInSameReactorIsPackagedUsingArtifactIdAndVersion (line 70) | @TestTemplate
    method whenRequiresUnpackConfigurationIsProvidedItIsReflectedInTheRepackagedWar (line 78) | @TestTemplate
    method whenWarIsRepackagedWithOutputTimestampConfiguredThenWarIsReproducible (line 87) | @TestTemplate
    method buildWarWithOutputTimestamp (line 96) | private String buildWarWithOutputTimestamp(MavenBuild mavenBuild) {
    method whenWarIsRepackagedWithOutputTimestampConfiguredThenLibrariesAreSorted (line 122) | @TestTemplate
    method whenADependencyHasSystemScopeAndInclusionOfSystemScopeDependenciesIsEnabledItIsIncludedInTheRepackagedJar (line 143) | @TestTemplate
    method repackagedWarContainsTheLayersIndexByDefault (line 152) | @TestTemplate
    method whenWarIsRepackagedWithTheLayersDisabledDoesNotContainLayersIndex (line 182) | @TestTemplate
    method whenWarIsRepackagedWithToolsExclude (line 196) | @TestTemplate
    method whenWarIsRepackagedWithTheCustomLayers (line 209) | @TestTemplate
    method repackagedWarContainsClasspathIndex (line 229) | @TestTemplate
    method whenEntryIsExcludedItShouldNotBePresentInTheRepackagedWar (line 244) | @TestTemplate
    method whenSigned (line 253) | @TestTemplate

FILE: build-plugin/spring-boot-maven-plugin/src/intTest/projects/aot-arguments/src/main/java/org/test/SampleApplication.java
  class SampleApplication (line 23) | @Configuration(proxyBeanMethods = false)
    method main (line 27) | public static void main(String[] args) {

FILE: build-plugin/spring-boot-maven-plugin/src/intTest/projects/aot-arguments/src/main/java/org/test/TestProfileConfiguration.java
  class TestProfileConfiguration (line 23) | @Configuration(proxyBeanMethods = false)
    method abc (line 27) | @Bean

FILE: build-plugin/spring-boot-maven-plugin/src/intTest/projects/aot-class-proxy/src/main/java/org/test/SampleApplication.java
  class SampleApplication (line 24) | @Configuration(proxyBeanMethods = false)
    method main (line 29) | public static void main(String[] args) {

FILE: build-plugin/spring-boot-maven-plugin/src/intTest/projects/aot-class-proxy/src/main/java/org/test/SampleRunner.java
  class SampleRunner (line 22) | @Component
    method run (line 25) | @Async

FILE: build-plugin/spring-boot-maven-plugin/src/intTest/projects/aot-compiler-arguments/src/main/java/org/test/SampleApplication.java
  class SampleApplication (line 23) | @Configuration(proxyBeanMethods = false)
    method main (line 26) | public static void main(String[] args) {

FILE: build-plugin/spring-boot-maven-plugin/src/intTest/projects/aot-exclude-devtools/src/main/java/org/test/SampleApplication.java
  class SampleApplication (line 22) | @SpringBootApplication
    method main (line 25) | public static void main(String[] args) {

FILE: build-plugin/spring-boot-maven-plugin/src/intTest/projects/aot-jdk-proxy/src/main/java/org/test/SampleApplication.java
  class SampleApplication (line 29) | @Configuration(proxyBeanMethods = false)
    method main (line 33) | public static void main(String[] args) {
    class SampleApplicationRuntimeHints (line 37) | static class SampleApplicationRuntimeHints implements RuntimeHintsRegi...
      method registerHints (line 39) | @Override

FILE: build-plugin/spring-boot-maven-plugin/src/intTest/projects/aot-jvm-arguments/src/main/java/org/test/SampleApplication.java
  class SampleApplication (line 23) | @Configuration(proxyBeanMethods = false)
    method main (line 27) | public static void main(String[] args) {

FILE: build-plugin/spring-boot-maven-plugin/src/intTest/projects/aot-jvm-arguments/src/main/java/org/test/TestProfileConfiguration.java
  class TestProfileConfiguration (line 23) | @Configuration(proxyBeanMethods = false)
    method abc (line 27) | @Bean

FILE: build-plugin/spring-boot-maven-plugin/src/intTest/projects/aot-module-info/src/main/java/org/test/SampleApplication.java
  class SampleApplication (line 22) | @Configuration(proxyBeanMethods = false)
    method main (line 25) | public static void main(String[] args) {

FILE: build-plugin/spring-boot-maven-plugin/src/intTest/projects/aot-profile/src/main/java/org/test/SampleApplication.java
  class SampleApplication (line 23) | @Configuration(proxyBeanMethods = false)
    method main (line 27) | public static void main(String[] args) {

FILE: build-plugin/spring-boot-maven-plugin/src/intTest/projects/aot-profile/src/main/java/org/test/TestProfileConfiguration.java
  class TestProfileConfiguration (line 23) | @Configuration(proxyBeanMethods = false)
    method abc (line 27) | @Bean

FILE: build-plugin/spring-boot-maven-plugin/src/intTest/projects/aot-release/src/main/java/org/test/SampleApplication.java
  class SampleApplication (line 23) | @Configuration(proxyBeanMethods = false)
    method main (line 26) | public static void main(String[] args) {

FILE: build-plugin/spring-boot-maven-plugin/src/intTest/projects/aot-resource-generation/src/main/java/org/test/ResourceRegisteringAotProcessor.java
  class ResourceRegisteringAotProcessor (line 25) | class ResourceRegisteringAotProcessor implements BeanFactoryInitializati...
    method processAheadOfTime (line 27) | @Override

FILE: build-plugin/spring-boot-maven-plugin/src/intTest/projects/aot-resource-generation/src/main/java/org/test/SampleApplication.java
  class SampleApplication (line 22) | @Configuration(proxyBeanMethods = false)
    method main (line 25) | public static void main(String[] args) {

FILE: build-plugin/spring-boot-maven-plugin/src/intTest/projects/aot-system-properties/src/main/java/org/test/SampleApplication.java
  class SampleApplication (line 23) | @Configuration(proxyBeanMethods = false)
    method main (line 27) | public static void main(String[] args) {

FILE: build-plugin/spring-boot-maven-plugin/src/intTest/projects/aot-system-properties/src/main/java/org/test/TestProfileConfiguration.java
  class TestProfileConfiguration (line 23) | @Configuration(proxyBeanMethods = false)
    method abc (line 27) | @Bean

FILE: build-plugin/spring-boot-maven-plugin/src/intTest/projects/aot-test-exclude-devtools/src/main/java/org/test/SampleApplication.java
  class SampleApplication (line 22) | @SpringBootApplication
    method main (line 25) | public static void main(String[] args) {

FILE: build-plugin/spring-boot-maven-plugin/src/intTest/projects/aot-test-exclude-devtools/src/test/java/org/test/SampleApplicationTests.java
  class SampleApplicationTests (line 22) | @SpringBootTest
    method contextLoads (line 25) | @Test

FILE: build-plugin/spring-boot-maven-plugin/src/intTest/projects/aot-test-skip/src/main/java/org/test/SampleApplication.java
  class SampleApplication (line 22) | @Configuration(proxyBeanMethods = false)
    method main (line 25) | public static void main(String[] args) {

FILE: build-plugin/spring-boot-maven-plugin/src/intTest/projects/aot-test-skip/src/test/java/org/test/SampleApplicationTests.java
  class SampleApplicationTests (line 28) | @SpringJUnitConfig
    method contextLoads (line 34) | @Test
    class MyConfig (line 39) | @Configuration
      method myBean (line 42) | @Bean
    class MyBean (line 49) | static class MyBean {

FILE: build-plugin/spring-boot-maven-plugin/src/intTest/projects/aot-test/src/main/java/org/test/SampleApplication.java
  class SampleApplication (line 22) | @Configuration(proxyBeanMethods = false)
    method main (line 25) | public static void main(String[] args) {

FILE: build-plugin/spring-boot-maven-plugin/src/intTest/projects/aot-test/src/test/java/org/test/SampleApplicationTests.java
  class SampleApplicationTests (line 28) | @SpringJUnitConfig
    method contextLoads (line 34) | @Test
    class MyConfig (line 39) | @Configuration
      method myBean (line 42) | @Bean
    class MyBean (line 49) | static class MyBean {

FILE: build-plugin/spring-boot-maven-plugin/src/intTest/projects/aot/src/main/java/org/test/SampleApplication.java
  class SampleApplication (line 22) | @Configuration(proxyBeanMethods = false)
    method main (line 25) | public static void main(String[] args) {

FILE: build-plugin/spring-boot-maven-plugin/src/intTest/projects/build-info-additional-properties/src/main/java/org/test/SampleApplication.java
  class SampleApplication (line 19) | public class SampleApplication {
    method main (line 21) | public static void main(String[] args) {

FILE: build-plugin/spring-boot-maven-plugin/src/intTest/projects/build-info-custom-build-time/src/main/java/org/test/SampleApplication.java
  class SampleApplication (line 19) | public class SampleApplication {
    method main (line 21) | public static void main(String[] args) {

FILE: build-plugin/spring-boot-maven-plugin/src/intTest/projects/build-info-custom-file/src/main/java/org/test/SampleApplication.java
  class SampleApplication (line 19) | public class SampleApplication {
    method main (line 21) | public static void main(String[] args) {

FILE: build-plugin/spring-boot-maven-plugin/src/intTest/projects/build-info-disable-build-time/src/main/java/org/test/SampleApplication.java
  class SampleApplication (line 19) | public class SampleApplication {
    method main (line 21) | public static void main(String[] args) {

FILE: build-plugin/spring-boot-maven-plugin/src/intTest/projects/build-info-exclude-build-properties/src/main/java/org/test/SampleApplication.java
  class SampleApplication (line 19) | public class SampleApplication {
    method main (line 21) | public static void main(String[] args) {

FILE: build-plugin/spring-boot-maven-plugin/src/intTest/projects/build-info-exclude-build-time/src/main/java/org/test/SampleApplication.java
  class SampleApplication (line 19) | public class SampleApplication {
    method main (line 21) | public static void main(String[] args) {

FILE: build-plugin/spring-boot-maven-plugin/src/intTest/projects/build-info-reproducible-epoch-seconds/src/main/java/org/test/SampleApplication.java
  class SampleApplication (line 19) | public class SampleApplication {
    method main (line 21) | public static void main(String[] args) {

FILE: build-plugin/spring-boot-maven-plugin/src/intTest/projects/build-info-reproducible/src/main/java/org/test/SampleApplication.java
  class SampleApplication (line 19) | public class SampleApplication {
    method main (line 21) | public static void main(String[] args) {

FILE: build-plugin/spring-boot-maven-plugin/src/intTest/projects/build-info/src/main/java/org/test/SampleApplication.java
  class SampleApplication (line 19) | public class SampleApplication {
    method main (line 21) | public static void main(String[] args) {

FILE: build-plugin/spring-boot-maven-plugin/src/intTest/projects/jar-attach-disabled/src/main/java/org/test/SampleApplication.java
  class SampleApplication (line 19) | public class SampleApplication {
    method main (line 21) | public static void main(String[] args) {

FILE: build-plugin/spring-boot-maven-plugin/src/intTest/projects/jar-classifier-main-attach-disabled/src/main/java/org/test/SampleApplication.java
  class SampleApplication (line 19) | public class SampleApplication {
    method main (line 21) | public static void main(String[] args) {

FILE: build-plugin/spring-boot-maven-plugin/src/intTest/projects/jar-classifier-main/src/main/java/org/test/SampleApplication.java
  class SampleApplication (line 19) | public class SampleApplication {
    method main (line 21) | public static void main(String[] args) {

FILE: build-plugin/spring-boot-maven-plugin/src/intTest/projects/jar-classifier-source-attach-disabled/src/main/java/org/test/SampleApplication.java
  class SampleApplication (line 19) | public class SampleApplication {
    method main (line 21) | public static void main(String[] args) {

FILE: build-plugin/spring-boot-maven-plugin/src/intTest/projects/jar-classifier-source/src/main/java/org/test/SampleApplication.java
  class SampleApplication (line 19) | public class SampleApplication {
    method main (line 21) | public static void main(String[] args) {

FILE: build-plugin/spring-boot-maven-plugin/src/intTest/projects/jar-create-dir/src/main/java/org/test/SampleApplication.java
  class SampleApplication (line 19) | public class SampleApplication {
    method main (line 21) | public static void main(String[] args) {

FILE: build-plugin/spring-boot-maven-plugin/src/intTest/projects/jar-custom-dir/src/main/java/org/test/SampleApplication.java
  class SampleApplication (line 19) | public class SampleApplication {
    method main (line 21) | public static void main(String[] args) {

FILE: build-plugin/spring-boot-maven-plugin/src/intTest/projects/jar-custom-layout/custom/src/main/java/org/test/SampleApplication.java
  class SampleApplication (line 19) | public class SampleApplication {
    method main (line 21) | public static void main(String[] args) {

FILE: build-plugin/spring-boot-maven-plugin/src/intTest/projects/jar-custom-layout/default/src/main/java/org/test/SampleApplication.java
  class SampleApplication (line 19) | public class SampleApplication {
    method main (line 21) | public static void main(String[] args) {

FILE: build-plugin/spring-boot-maven-plugin/src/intTest/projects/jar-custom-layout/layout/src/main/java/smoketest/layout/SampleLayout.java
  class SampleLayout (line 31) | public class SampleLayout extends Layouts.Jar implements CustomLoaderLay...
    method SampleLayout (line 35) | public SampleLayout(String name) {
    method writeLoadedClasses (line 39) | @Override

FILE: build-plugin/spring-boot-maven-plugin/src/intTest/projects/jar-custom-layout/layout/src/main/java/smoketest/layout/SampleLayoutFactory.java
  class SampleLayoutFactory (line 24) | public class SampleLayoutFactory implements LayoutFactory {
    method SampleLayoutFactory (line 28) | public SampleLayoutFactory() {
    method SampleLayoutFactory (line 31) | public SampleLayoutFactory(String name) {
    method setName (line 35) | public void setName(String name) {
    method getName (line 39) | public String getName() {
    method getLayout (line 43) | @Override

FILE: build-plugin/spring-boot-maven-plugin/src/intTest/projects/jar-exclude-entry/src/main/java/org/test/SampleApplication.java
  class SampleApplication (line 19) | public class SampleApplication {
    method main (line 21) | public static void main(String[] args) {

FILE: build-plugin/spring-boot-maven-plugin/src/intTest/projects/jar-exclude-group/src/main/java/org/test/SampleApplication.java
  class SampleApplication (line 19) | public class SampleApplication {
    method main (line 21) | public static void main(String[] args) {

FILE: build-plugin/spring-boot-maven-plugin/src/intTest/projects/jar-include-entry/src/main/java/org/test/SampleApplication.java
  class SampleApplication (line 19) | public class SampleApplication {
    method main (line 21) | public static void main(String[] args) {

FILE: build-plugin/spring-boot-maven-plugin/src/intTest/projects/jar-layered-custom-name/jar/src/main/java/org/test/SampleApplication.java
  class SampleApplication (line 19) | public class SampleApplication {
    method main (line 21) | public static void main(String[] args) {

FILE: build-plugin/spring-boot-maven-plugin/src/intTest/projects/jar-layered-custom/jar/src/main/java/org/test/SampleApplication.java
  class SampleApplication (line 19) | public class SampleApplication {
    method main (line 21) | public static void main(String[] args) {

FILE: build-plugin/spring-boot-maven-plugin/src/intTest/projects/jar-layered-disabled/jar/src/main/java/org/test/SampleApplication.java
  class SampleApplication (line 19) | public class SampleApplication {
    method main (line 21) | public static void main(String[] args) {

FILE: build-plugin/spring-boot-maven-plugin/src/intTest/projects/jar-layered/jar/src/main/java/org/test/SampleApplication.java
  class SampleApplication (line 19) | public class SampleApplication {
    method main (line 21) | public static void main(String[] args) {

FILE: build-plugin/spring-boot-maven-plugin/src/intTest/projects/jar-lib-name-conflict/test-project/src/main/java/org/test/SampleApplication.java
  class SampleApplication (line 19) | public class SampleApplication {
    method main (line 21) | public static void main(String[] args) {

FILE: build-plugin/spring-boot-maven-plugin/src/intTest/projects/jar-no-tools/jar/src/main/java/org/test/SampleApplication.java
  class SampleApplication (line 19) | public class SampleApplication {
    method main (line 21) | public static void main(String[] args) {

FILE: build-plugin/spring-boot-maven-plugin/src/intTest/projects/jar-optional-default/src/main/java/org/test/SampleApplication.java
  class SampleApplication (line 19) | public class SampleApplication {
    method main (line 21) | public static void main(String[] args) {

FILE: build-plugin/spring-boot-maven-plugin/src/intTest/projects/jar-optional-exclude/src/main/java/org/test/SampleApplication.java
  class SampleApplication (line 19) | public class SampleApplication {
    method main (line 21) | public static void main(String[] args) {

FILE: build-plugin/spring-boot-maven-plugin/src/intTest/projects/jar-optional-include/src/main/java/org/test/SampleApplication.java
  class SampleApplication (line 19) | public class SampleApplication {
    method main (line 21) | public static void main(String[] args) {

FILE: build-plugin/spring-boot-maven-plugin/src/intTest/projects/jar-output-timestamp/src/main/java/org/test/SampleApplication.java
  class SampleApplication (line 19) | public class SampleApplication {
    method main (line 21) | public static void main(String[] args) {

FILE: build-plugin/spring-boot-maven-plugin/src/intTest/projects/jar-signed/src/main/java/org/test/SampleApplication.java
  class SampleApplication (line 19) | public class SampleApplication {
    method main (line 21) | public static void main(String[] args) {

FILE: build-plugin/spring-boot-maven-plugin/src/intTest/projects/jar-system-scope-default/src/main/java/org/test/SampleApplication.java
  class SampleApplication (line 19) | public class SampleApplication {
    method main (line 21) | public static void main(String[] args) {

FILE: build-plugin/spring-boot-maven-plugin/src/intTest/projects/jar-system-scope/src/main/java/org/test/SampleApplication.java
  class SampleApplication (line 19) | public class SampleApplication {
    method main (line 21) | public static void main(String[] args) {

FILE: build-plugin/spring-boot-maven-plugin/src/intTest/projects/jar-test-scope/src/main/java/org/test/SampleApplication.java
  class SampleApplication (line 19) | public class SampleApplication {
    method main (line 21) | public static void main(String[] args) {

FILE: build-plugin/spring-boot-maven-plugin/src/intTest/projects/jar-with-layout-property/src/main/java/org/test/SampleApplication.java
  class SampleApplication (line 19) | public class SampleApplication {
    method main (line 21) | public static void main(String[] args) {

FILE: build-plugin/spring-boot-maven-plugin/src/intTest/projects/jar-with-unpack/src/main/java/org/test/SampleApplication.java
  class SampleApplication (line 19) | public class SampleApplication {
    method main (line 21) | public static void main(String[] args) {

FILE: build-plugin/spring-boot-maven-plugin/src/intTest/projects/jar-with-zip-layout/src/main/java/org/test/SampleApplication.java
  class SampleApplication (line 19) | public class SampleApplication {
    method main (line 21) | public static void main(String[] args) {

FILE: build-plugin/spring-boot-maven-plugin/src/intTest/projects/jar/src/main/java/org/test/SampleApplication.java
  class SampleApplication (line 19) | public class SampleApplication {
    method main (line 21) | public static void main(String[] args) {

FILE: build-plugin/spring-boot-maven-plugin/src/intTest/projects/run-additional-classpath-directory/src/main/java/org/test/SampleApplication.java
  class SampleApplication (line 23) | public class SampleApplication {
    method main (line 25) | public static void main(String[] args) {
    method readContent (line 35) | private static String readContent(String location) {

FILE: build-plugin/spring-boot-maven-plugin/src/intTest/projects/run-additional-classpath-jar/src/main/java/org/test/SampleApplication.java
  class SampleApplication (line 23) | public class SampleApplication {
    method main (line 25) | public static void main(String[] args) {
    method readContent (line 35) | private static String readContent(String location) {

FILE: build-plugin/spring-boot-maven-plugin/src/intTest/projects/run-arguments-commandline/src/main/java/org/test/SampleApplication.java
  class SampleApplication (line 21) | public class SampleApplication {
    method main (line 23) | public static void main(String[] args) {

FILE: build-plugin/spring-boot-maven-plugin/src/intTest/projects/run-arguments/src/main/java/org/test/SampleApplication.java
  class SampleApplication (line 21) | public class SampleApplication {
    method main (line 23) | public static void main(String[] args) {

FILE: build-plugin/spring-boot-maven-plugin/src/intTest/projects/run-envargs/src/main/java/org/test/SampleApplication.java
  class SampleApplication (line 19) | public class SampleApplication {
    method main (line 21) | public static void main(String[] args) {
    method assertEnvValue (line 30) | private static void assertEnvValue(String envKey, String expectedValue) {

FILE: build-plugin/spring-boot-maven-plugin/src/intTest/projects/run-exclude/src/main/java/org/test/SampleApplication.java
  class SampleApplication (line 19) | public class SampleApplication {
    method main (line 21) | public static void main(String[] args) {
    method isClassPresent (line 31) | private static boolean isClassPresent(String className) {

FILE: build-plugin/spring-boot-maven-plugin/src/intTest/projects/run-fork/src/main/java/org/test/SampleApplication.java
  class SampleApplication (line 21) | public class SampleApplication {
    method main (line 23) | public static void main(String[] args) {

FILE: build-plugin/spring-boot-maven-plugin/src/intTest/projects/run-jvm-system-props/src/main/java/org/test/SampleApplication.java
  class SampleApplication (line 19) | public class SampleApplication {
    method main (line 21) | public static void main(String[] args) {

FILE: build-plugin/spring-boot-maven-plugin/src/intTest/projects/run-jvmargs-commandline/src/main/java/org/test/SampleApplication.java
  class SampleApplication (line 19) | public class SampleApplication {
    method main (line 21) | public static void main(String[] args) {

FILE: build-plugin/spring-boot-maven-plugin/src/intTest/projects/run-jvmargs/src/main/java/org/test/SampleApplication.java
  class SampleApplication (line 19) | public class SampleApplication {
    method main (line 21) | public static void main(String[] args) {

FILE: build-plugin/spring-boot-maven-plugin/src/intTest/projects/run-profiles/src/main/java/org/test/SampleApplication.java
  class SampleApplication (line 21) | public class SampleApplication {
    method main (line 23) | public static void main(String[] args) {

FILE: build-plugin/spring-boot-maven-plugin/src/intTest/projects/run-toolchains/src/main/java/org/test/SampleApplication.java
  class SampleApplication (line 19) | public class SampleApplication {
    method main (line 21) | public static void main(String[] args) {

FILE: build-plugin/spring-boot-maven-plugin/src/intTest/projects/run-use-test-classpath/src/main/java/org/test/SampleApplication.java
  class SampleApplication (line 19) | public class SampleApplication {
    method main (line 21) | public static void main(String[] args) {

FILE: build-plugin/spring-boot-maven-plugin/src/intTest/projects/run-working-directory/src/main/java/org/test/SampleApplication.java
  class SampleApplication (line 19) | public class SampleApplication {
    method main (line 21) | public static void main(String[] args) {

FILE: build-plugin/spring-boot-maven-plugin/src/intTest/projects/run/src/main/java/org/test/SampleApplication.java
  class SampleApplication (line 19) | public class SampleApplication {
    method main (line 21) | public static void main(String[] args) {

FILE: build-plugin/spring-boot-maven-plugin/src/intTest/projects/start-stop-skip/src/main/java/org/test/SampleApplication.java
  class SampleApplication (line 22) | public class SampleApplication {
    method main (line 24) | public static void main(String[] args) throws Exception {

FILE: build-plugin/spring-boot-maven-plugin/src/intTest/projects/start-stop/src/main/java/org/test/SampleApplication.java
  class SampleApplication (line 27) | public class SampleApplication {
    method main (line 31) | public static void main(String[] args) throws Exception {
    type SpringApplicationAdminMXBean (line 54) | public interface SpringApplicationAdminMXBean {
      method isReady (line 56) | boolean isReady();
      method shutdown (line 58) | void shutdown();
    class SpringApplicationAdmin (line 62) | static final class SpringApplicationAdmin implements SpringApplication...
      method isReady (line 68) | @Override
      method shutdown (line 74) | @Override

FILE: build-plugin/spring-boot-maven-plugin/src/intTest/projects/test-run/src/main/java/org/test/SampleApplication.java
  class SampleApplication (line 19) | public class SampleApplication {
    method main (line 21) | public static void main(String[] args) {

FILE: build-plugin/spring-boot-maven-plugin/src/intTest/projects/test-run/src/test/java/org/test/TestSampleApplication.java
  class TestSampleApplication (line 22) | public class TestSampleApplication {
    method main (line 24) | public static void main(String[] args) {

FILE: build-plugin/spring-boot-maven-plugin/src/intTest/projects/war-exclude-entry/src/main/java/org/test/SampleApplication.java
  class SampleApplication (line 19) | public class SampleApplication {
    method main (line 21) | public static void main(String[] args) {

FILE: build-plugin/spring-boot-maven-plugin/src/intTest/projects/war-layered-custom/war/src/main/java/org/test/SampleApplication.java
  class SampleApplication (line 19) | public class SampleApplication {
    method main (line 21) | public static void main(String[] args) {

FILE: build-plugin/spring-boot-maven-plugin/src/intTest/projects/war-layered-disabled/war/src/main/java/org/test/SampleApplication.java
  class SampleApplication (line 19) | public class SampleApplication {
    method main (line 21) | public static void main(String[] args) {

FILE: build-plugin/spring-boot-maven-plugin/src/intTest/projects/war-layered/war/src/main/java/org/test/SampleApplication.java
  class SampleApplication (line 19) | public class SampleApplication {
    method main (line 21) | public static void main(String[] args) {

FILE: build-plugin/spring-boot-maven-plugin/src/intTest/projects/war-no-tools/war/src/main/java/org/test/SampleApplication.java
  class SampleApplication (line 19) | public class SampleApplication {
    method main (line 21) | public static void main(String[] args) {

FILE: build-plugin/spring-boot-maven-plugin/src/intTest/projects/war-output-timestamp/src/main/java/org/test/SampleApplication.java
  class SampleApplication (line 19) | public class SampleApplication {
    method main (line 21) | public static void main(String[] args) {

FILE: build-plugin/spring-boot-maven-plugin/src/intTest/projects/war-reactor/war/src/main/java/com/example/SampleApplication.java
  class SampleApplication (line 19) | public class SampleApplication {
    method main (line 21) | public static void main(String[] args) {

FILE: build-plugin/spring-boot-maven-plugin/src/intTest/projects/war-signed/src/main/java/org/test/SampleApplication.java
  class SampleApplication (line 19) | public class SampleApplication {
    method main (line 21) | public static void main(String[] args) {

FILE: build-plugin/spring-boot-maven-plugin/src/intTest/projects/war-system-scope/src/main/java/org/test/SampleApplication.java
  class SampleApplication (line 19) | public class SampleApplication {
    method main (line 21) | public static void main(String[] args) {

FILE: build-plugin/spring-boot-maven-plugin/src/intTest/projects/war-with-unpack/src/main/java/org/test/SampleApplication.java
  class SampleApplication (line 19) | public class SampleApplication {
    method main (line 21) | public static void main(String[] args) {

FILE: build-plugin/spring-boot-maven-plugin/src/intTest/projects/war/src/main/java/org/test/SampleApplication.java
  class SampleApplication (line 19) | public class SampleApplication {
    method main (line 21) | public static void main(String[] args) {

FILE: build-plugin/spring-boot-maven-plugin/src/main/java/org/springframework/boot/maven/AbstractAotMojo.java
  class AbstractAotMojo (line 57) | public abstract class AbstractAotMojo extends AbstractDependencyFilterMo...
    method AbstractAotMojo (line 97) | protected AbstractAotMojo(ToolchainManager toolchainManager) {
    method getSession (line 106) | protected final MavenSession getSession() {
    method execute (line 110) | @Override
    method executeAot (line 124) | protected abstract void executeAot() throws Exception;
    method generateAotAssets (line 126) | protected void generateAotAssets(URL[] classPath, String processorClas...
    method compileSourceFiles (line 140) | protected final void compileSourceFiles(URL[] classPath, File sourcesD...
    method getClassPath (line 185) | protected final URL[] getClassPath(File[] directories, ArtifactsFilter...
    method copyAll (line 193) | protected final void copyAll(Path from, Path to) throws IOException {
    class Errors (line 213) | protected static class Errors implements DiagnosticListener<JavaFileOb...
      method report (line 217) | @Override
      method hasReportedErrors (line 231) | boolean hasReportedErrors() {
      method toString (line 235) | @Override

FILE: build-plugin/spring-boot-maven-plugin/src/main/java/org/springframework/boot/maven/AbstractDependencyFilterMojo.java
  class AbstractDependencyFilterMojo (line 47) | public abstract class AbstractDependencyFilterMojo extends AbstractMojo {
    method setExcludes (line 102) | protected void setExcludes(@Nullable List<Exclude> excludes) {
    method setIncludes (line 106) | protected void setIncludes(@Nullable List<Include> includes) {
    method setExcludeGroupIds (line 110) | protected void setExcludeGroupIds(String excludeGroupIds) {
    method getDependencyURLs (line 114) | protected List<URL> getDependencyURLs(ArtifactsFilter... additionalFil...
    method filterDependencies (line 125) | protected final Set<Artifact> filterDependencies(Set<Artifact> depende...
    method toURL (line 137) | protected URL toURL(File file) {
    method getFilters (line 151) | private FilterArtifacts getFilters(ArtifactsFilter... additionalFilter...
    method cleanFilterConfig (line 167) | private String cleanFilterConfig(@Nullable String content) {
    class ExcludeTestScopeArtifactFilter (line 185) | protected static class ExcludeTestScopeArtifactFilter extends Abstract...
      method ExcludeTestScopeArtifactFilter (line 187) | ExcludeTestScopeArtifactFilter() {
      method getArtifactFeature (line 191) | @Override

FILE: build-plugin/spring-boot-maven-plugin/src/main/java/org/springframework/boot/maven/AbstractPackagerMojo.java
  class AbstractPackagerMojo (line 64) | public abstract class AbstractPackagerMojo extends AbstractDependencyFil...
    method AbstractPackagerMojo (line 149) | protected AbstractPackagerMojo(MavenProjectHelper projectHelper) {
    method getLayout (line 158) | protected @Nullable LayoutType getLayout() {
    method getLayoutFactory (line 167) | protected @Nullable LayoutFactory getLayoutFactory() {
    method getConfiguredPackager (line 177) | protected <P extends Packager> P getConfiguredPackager(Supplier<P> sup...
    method getIncludeRelevantJarModeJars (line 194) | private boolean getIncludeRelevantJarModeJars() {
    method loadLayersConfiguration (line 198) | private org.springframework.boot.loader.tools.Layers loadLayersConfigu...
    method loadLayersConfigurationFromClasspath (line 211) | private InputStream loadLayersConfigurationFromClasspath(String name, ...
    method getCustomLayers (line 220) | private CustomLayers getCustomLayers(String source, InputStreamSource ...
    method getDocumentIfAvailable (line 230) | private Document getDocumentIfAvailable(InputStreamSource source) thro...
    method getLibraries (line 246) | protected final Libraries getLibraries(@Nullable Collection<Dependency...
    method getAdditionalFilters (line 252) | private ArtifactsFilter[] getAdditionalFilters() {
    method getSourceArtifact (line 276) | protected Artifact getSourceArtifact(@Nullable String classifier) {
    method getArtifact (line 281) | private @Nullable Artifact getArtifact(@Nullable String classifier) {
    method getTargetFile (line 293) | protected File getTargetFile(String finalName, @Nullable String classi...
    type LayoutType (line 308) | public enum LayoutType {
      method LayoutType (line 337) | LayoutType(Layout layout) {
      method layout (line 341) | public Layout layout() {
    type InputStreamSource (line 347) | @FunctionalInterface
      method getInputStream (line 350) | InputStream getInputStream() throws IOException;

FILE: build-plugin/spring-boot-maven-plugin/src/main/java/org/springframework/boot/maven/AbstractRunMojo.java
  class AbstractRunMojo (line 58) | public abstract class AbstractRunMojo extends AbstractDependencyFilterMo...
    method AbstractRunMojo (line 216) | protected AbstractRunMojo(ToolchainManager toolchainManager) {
    method execute (line 220) | @Override
    method determineMainClass (line 229) | private String determineMainClass() throws MojoExecutionException {
    method getClassesDirectories (line 243) | protected List<File> getClassesDirectories() {
    method isUseTestClasspath (line 247) | protected abstract boolean isUseTestClasspath();
    method run (line 249) | private void run(String startClassName) throws MojoExecutionException,...
    method run (line 276) | protected abstract void run(JavaProcessExecutor processExecutor, File ...
    method resolveApplicationArguments (line 283) | protected RunArguments resolveApplicationArguments() {
    method resolveEnvVariables (line 294) | protected EnvVariables resolveEnvVariables() {
    method addArgs (line 298) | private void addArgs(List<String> args) {
    method determineEnvironmentVariables (line 304) | private Map<String, String> determineEnvironmentVariables() {
    method resolveJvmArguments (line 314) | protected RunArguments resolveJvmArguments() {
    method addJvmArgs (line 331) | private void addJvmArgs(List<String> args) {
    method addAgents (line 337) | private void addAgents(List<String> args) {
    method addActiveProfileArgument (line 351) | private void addActiveProfileArgument(RunArguments arguments) {
    method addClasspath (line 365) | private void addClasspath(List<String> args) throws MojoExecutionExcep...
    method getClassPathUrls (line 378) | protected URL[] getClassPathUrls() throws MojoExecutionException {
    method addAdditionalClasspathLocations (line 392) | private void addAdditionalClasspathLocations(List<URL> urls) throws Ma...
    method addResources (line 400) | private void addResources(List<URL> urls) throws IOException {
    method addProjectClasses (line 412) | private void addProjectClasses(List<URL> urls) throws MalformedURLExce...
    method addDependencies (line 418) | private void addDependencies(List<URL> urls) throws MalformedURLExcept...
    method logArguments (line 428) | private void logArguments(String name, String[] args) {

FILE: build-plugin/spring-boot-maven-plugin/src/main/java/org/springframework/boot/maven/ArtifactsLibraries.java
  class ArtifactsLibraries (line 49) | public class ArtifactsLibraries implements Libraries {
    method ArtifactsLibraries (line 81) | public ArtifactsLibraries(Set<Artifact> artifacts, Collection<MavenPro...
    method ArtifactsLibraries (line 96) | public ArtifactsLibraries(Set<Artifact> artifacts, Set<Artifact> inclu...
    method doWithLibraries (line 105) | @Override
    method getDuplicates (line 128) | private Set<String> getDuplicates(Set<Artifact> artifacts) {
    method isUnpackRequired (line 140) | private boolean isUnpackRequired(Artifact artifact) {
    method isLocal (line 152) | private boolean isLocal(Artifact artifact) {
    method getFileName (line 166) | private String getFileName(Artifact artifact) {
    class ArtifactLibraryCoordinates (line 180) | private static class ArtifactLibraryCoordinates implements LibraryCoor...
      method ArtifactLibraryCoordinates (line 184) | ArtifactLibraryCoordinates(Artifact artifact) {
      method getGroupId (line 188) | @Override
      method getArtifactId (line 193) | @Override
      method getVersion (line 198) | @Override
      method toString (line 203) | @Override

FILE: build-plugin/spring-boot-maven-plugin/src/main/java/org/springframework/boot/maven/BuildImageForkMojo.java
  class BuildImageForkMojo (line 36) | @Mojo(name = "build-image", defaultPhase = LifecyclePhase.PACKAGE, requi...
    method BuildImageForkMojo (line 42) | @Inject

FILE: build-plugin/spring-boot-maven-plugin/src/main/java/org/springframework/boot/maven/BuildImageMojo.java
  class BuildImageMojo (line 64) | public abstract class BuildImageMojo extends AbstractPackagerMojo {
    method BuildImageMojo (line 219) | protected BuildImageMojo(MavenProjectHelper projectHelper) {
    method getLayout (line 228) | @Override
    method getLayoutFactory (line 239) | @Override
    method execute (line 244) | @Override
    method buildImage (line 257) | private void buildImage() throws MojoExecutionException {
    method getBuildRequest (line 272) | private BuildRequest getBuildRequest(Libraries libraries) {
    method getApplicationContent (line 312) | private TarArchive getApplicationContent(Owner owner, Libraries librar...
    method getArchiveFile (line 317) | private File getArchiveFile() {
    method getBackupFile (line 334) | private @Nullable File getBackupFile() {
    method customize (line 350) | private BuildRequest customize(BuildRequest request) {
    method customizeCreator (line 355) | private BuildRequest customizeCreator(BuildRequest request) {
    class MojoBuildLog (line 366) | private static class MojoBuildLog extends AbstractBuildLog {
      method MojoBuildLog (line 372) | MojoBuildLog(Supplier<Log> log) {
      method log (line 376) | @Override
      method getProgressConsumer (line 381) | @Override
      class ProgressLog (line 386) | private class ProgressLog implements Consumer<TotalProgressEvent> {
        method ProgressLog (line 392) | ProgressLog(String message) {
        method accept (line 397) | @Override
        method log (line 402) | private void log(int percent) {
    class PackagedTarArchive (line 416) | static class PackagedTarArchive implements TarArchive {
      method PackagedTarArchive (line 426) | PackagedTarArchive(Owner owner, Libraries libraries, ImagePackager p...
      method writeTo (line 432) | @Override
      method write (line 445) | private void write(ZipEntry jarEntry, @Nullable EntryWriter entryWri...
      method convert (line 460) | private TarArchiveEntry convert(ZipEntry entry) {

FILE: build-plugin/spring-boot-maven-plugin/src/main/java/org/springframework/boot/maven/BuildImageNoForkMojo.java
  class BuildImageNoForkMojo (line 34) | @Mojo(name = "build-image-no-fork", defaultPhase = LifecyclePhase.PACKAG...
    method BuildImageNoForkMojo (line 39) | @Inject

FILE: build-plugin/spring-boot-maven-plugin/src/main/java/org/springframework/boot/maven/BuildInfoMojo.java
  class BuildInfoMojo (line 51) | @Mojo(name = "build-info", defaultPhase = LifecyclePhase.GENERATE_RESOUR...
    method BuildInfoMojo (line 111) | @Inject
    method execute (line 116) | @Override
    method getProjectDetails (line 135) | private ProjectDetails getProjectDetails() {
    method getIfNotExcluded (line 145) | private <T> @Nullable T getIfNotExcluded(String name, @Nullable T valu...
    method applyExclusions (line 149) | private @Nullable Map<String, String> applyExclusions(@Nullable Map<St...
    method getBuildTime (line 158) | private @Nullable Instant getBuildTime() {

FILE: build-plugin/spring-boot-maven-plugin/src/main/java/org/springframework/boot/maven/CacheInfo.java
  class CacheInfo (line 30) | public class CacheInfo {
    method CacheInfo (line 34) | public CacheInfo() {
    method CacheInfo (line 37) | private CacheInfo(Cache cache) {
    method setVolume (line 41) | public void setVolume(VolumeCacheInfo info) {
    method setBind (line 48) | public void setBind(BindCacheInfo info) {
    method asCache (line 55) | @Nullable Cache asCache() {
    method fromVolume (line 59) | static CacheInfo fromVolume(VolumeCacheInfo cacheInfo) {
    method fromBind (line 65) | static CacheInfo fromBind(BindCacheInfo cacheInfo) {
    class VolumeCacheInfo (line 74) | public static class VolumeCacheInfo {
      method VolumeCacheInfo (line 78) | public VolumeCacheInfo() {
      method VolumeCacheInfo (line 81) | VolumeCacheInfo(String name) {
      method getName (line 85) | public @Nullable String getName() {
      method setName (line 89) | void setName(@Nullable String name) {
    class BindCacheInfo (line 98) | public static class BindCacheInfo {
      method BindCacheInfo (line 102) | public BindCacheInfo() {
      method BindCacheInfo (line 105) | BindCacheInfo(String name) {
      method getSource (line 109) | public @Nullable String getSource() {
      method setSource (line 113) | void setSource(@Nullable String source) {

FILE: build-plugin/spring-boot-maven-plugin/src/main/java/org/springframework/boot/maven/ClassPath.java
  class ClassPath (line 49) | final class ClassPath {
    method ClassPath (line 58) | private ClassPath(boolean preferArgFile, String path) {
    method args (line 68) | List<String> args(boolean allowArgFile) {
    method classPathArg (line 72) | private String classPathArg(boolean allowArgFile) {
    method toString (line 84) | @Override
    method createArgFile (line 89) | private Path createArgFile() throws IOException {
    method charset (line 96) | private Charset charset() {
    method of (line 111) | static ClassPath of(URL... urls) {
    method of (line 120) | static ClassPath of(List<URL> urls) {
    method of (line 130) | static ClassPath of(UnaryOperator<@Nullable String> getSystemProperty,...
    method isWindows (line 135) | private static boolean isWindows(UnaryOperator<@Nullable String> getSy...
    method toPathString (line 140) | private static String toPathString(URL url) {

FILE: build-plugin/spring-boot-maven-plugin/src/main/java/org/springframework/boot/maven/CommandLineBuilder.java
  class CommandLineBuilder (line 36) | final class CommandLineBuilder {
    method CommandLineBuilder (line 46) | private CommandLineBuilder(String mainClass) {
    method forMainClass (line 50) | static CommandLineBuilder forMainClass(String mainClass) {
    method withJvmArguments (line 55) | CommandLineBuilder withJvmArguments(@Nullable String... jvmArguments) {
    method withSystemProperties (line 62) | CommandLineBuilder withSystemProperties(@Nullable Map<String, String> ...
    method withClasspath (line 74) | CommandLineBuilder withClasspath(URL... elements) {
    method withArguments (line 80) | CommandLineBuilder withArguments(@Nullable String... arguments) {
    method build (line 87) | List<String> build() {

FILE: build-plugin/spring-boot-maven-plugin/src/main/java/org/springframework/boot/maven/CustomLayersProvider.java
  class CustomLayersProvider (line 54) | class CustomLayersProvider {
    method getLayers (line 56) | CustomLayers getLayers(Document document) {
    method validate (line 65) | private void validate(Document document) {
    method loadSchema (line 76) | private Schema loadSchema() {
    method getApplicationSelectors (line 86) | private List<ContentSelector<String>> getApplicationSelectors(Element ...
    method getLibrarySelectors (line 90) | private List<ContentSelector<Library>> getLibrarySelectors(Element roo...
    method getLayers (line 94) | private List<Layer> getLayers(Element root) {
    method getSelectors (line 102) | private <T> List<ContentSelector<T>> getSelectors(Element root, String...
    method getSelector (line 120) | private <T> ContentSelector<T> getSelector(Element element, Function<S...
    method getLibrarySelector (line 127) | private ContentSelector<Library> getLibrarySelector(Element element,
    method getChildNodeTextContent (line 149) | private List<String> getChildNodeTextContent(Element element, String t...
    method getChildElement (line 161) | private @Nullable Element getChildElement(Element element, String tagN...

FILE: build-plugin/spring-boot-maven-plugin/src/main/java/org/springframework/boot/maven/DependencyFilter.java
  class DependencyFilter (line 37) | public abstract class DependencyFilter extends AbstractArtifactsFilter {
    method DependencyFilter (line 46) | public DependencyFilter(List<? extends FilterableDependency> dependenc...
    method filter (line 50) | @Override
    method filter (line 61) | protected abstract boolean filter(Artifact artifact);
    method equals (line 71) | protected final boolean equals(Artifact artifact, FilterableDependency...
    method getFilters (line 82) | protected final List<? extends FilterableDependency> getFilters() {
    method exclude (line 93) | public static DependencyFilter exclude(Predicate<Artifact> filter) {

FILE: build-plugin/spring-boot-maven-plugin/src/main/java/org/springframework/boot/maven/Docker.java
  class Docker (line 33) | public class Docker {
    method getHost (line 53) | public @Nullable String getHost() {
    method setHost (line 57) | void setHost(@Nullable String host) {
    method getContext (line 65) | public @Nullable String getContext() {
    method setContext (line 69) | public void setContext(@Nullable String context) {
    method isTlsVerify (line 77) | public boolean isTlsVerify() {
    method setTlsVerify (line 81) | void setTlsVerify(boolean tlsVerify) {
    method getCertPath (line 90) | public @Nullable String getCertPath() {
    method setCertPath (line 94) | void setCertPath(@Nullable String certPath) {
    method isBindHostToBuilder (line 102) | public boolean isBindHostToBuilder() {
    method setBindHostToBuilder (line 106) | void setBindHostToBuilder(boolean bindHostToBuilder) {
    method getBuilderRegistry (line 114) | @Nullable DockerRegistry getBuilderRegistry() {
    method setBuilderRegistry (line 123) | void setBuilderRegistry(@Nullable DockerRegistry builderRegistry) {
    method getPublishRegistry (line 131) | @Nullable DockerRegistry getPublishRegistry() {
    method setPublishRegistry (line 140) | void setPublishRegistry(@Nullable DockerRegistry builderRegistry) {
    method asDockerConfiguration (line 152) | BuilderDockerConfiguration asDockerConfiguration(Log log, boolean publ...
    method customizeHost (line 161) | private BuilderDockerConfiguration customizeHost(BuilderDockerConfigur...
    method customizeBuilderAuthentication (line 175) | private BuilderDockerConfiguration customizeBuilderAuthentication(Log ...
    method customizePublishAuthentication (line 183) | private BuilderDockerConfiguration customizePublishAuthentication(Log ...
    method getRegistryAuthentication (line 194) | private DockerRegistryAuthentication getRegistryAuthentication(String ...
    class DockerRegistry (line 218) | public static class DockerRegistry {
      method DockerRegistry (line 230) | public DockerRegistry() {
      method DockerRegistry (line 233) | public DockerRegistry(@Nullable String username, @Nullable String pa...
      method DockerRegistry (line 241) | public DockerRegistry(String token) {
      method getUsername (line 249) | public @Nullable String getUsername() {
      method setUsername (line 253) | void setUsername(@Nullable String username) {
      method getPassword (line 261) | public @Nullable String getPassword() {
      method setPassword (line 265) | void setPassword(@Nullable String password) {
      method getEmail (line 273) | public @Nullable String getEmail() {
      method setEmail (line 277) | void setEmail(@Nullable String email) {
      method getUrl (line 285) | @Nullable String getUrl() {
      method setUrl (line 289) | void setUrl(@Nullable String url) {
      method getToken (line 297) | public @Nullable String getToken() {
      method setToken (line 301) | void setToken(@Nullable String token) {
      method isEmpty (line 305) | boolean isEmpty() {
      method hasTokenAuth (line 310) | boolean hasTokenAuth() {
      method hasUserAuth (line 314) | boolean hasUserAuth() {

FILE: build-plugin/spring-boot-maven-plugin/src/main/java/org/springframework/boot/maven/EnvVariables.java
  class EnvVariables (line 32) | class EnvVariables {
    method EnvVariables (line 36) | EnvVariables(@Nullable Map<String, String> variables) {
    method parseEnvVariables (line 40) | private static Map<String, String> parseEnvVariables(@Nullable Map<Str...
    method getValue (line 53) | private static String getValue(@Nullable String value) {
    method asMap (line 57) | Map<String, String> asMap() {
    method asArray (line 61) | String[] asArray() {

FILE: build-plugin/spring-boot-maven-plugin/src/main/java/org/springframework/boot/maven/Exclude.java
  class Exclude (line 25) | public class Exclude extends FilterableDependency {

FILE: build-plugin/spring-boot-maven-plugin/src/main/java/org/springframework/boot/maven/ExcludeFilter.java
  class ExcludeFilter (line 31) | public class ExcludeFilter extends DependencyFilter {
    method ExcludeFilter (line 33) | public ExcludeFilter(Exclude... excludes) {
    method ExcludeFilter (line 37) | public ExcludeFilter(List<Exclude> excludes) {
    method filter (line 41) | @Override

FILE: build-plugin/spring-boot-maven-plugin/src/main/java/org/springframework/boot/maven/FilterableDependency.java
  class FilterableDependency (line 31) | public abstract class FilterableDependency {
    method getGroupId (line 53) | String getGroupId() {
    method setGroupId (line 57) | void setGroupId(String groupId) {
    method getArtifactId (line 61) | String getArtifactId() {
    method setArtifactId (line 65) | void setArtifactId(String artifactId) {
    method getClassifier (line 69) | @Nullable String getClassifier() {
    method setClassifier (line 73) | void setClassifier(@Nullable String classifier) {
    method set (line 82) | public void set(String property) {

FILE: build-plugin/spring-boot-maven-plugin/src/main/java/org/springframework/boot/maven/Image.java
  class Image (line 49) | public class Image {
    method getName (line 95) | public @Nullable String getName() {
    method setName (line 99) | void setName(@Nullable String name) {
    method getBuilder (line 107) | public @Nullable String getBuilder() {
    method setBuilder (line 111) | void setBuilder(@Nullable String builder) {
    method getTrustBuilder (line 119) | public @Nullable Boolean getTrustBuilder() {
    method setTrustBuilder (line 123) | void setTrustBuilder(@Nullable Boolean trustBuilder) {
    method getRunImage (line 131) | public @Nullable String getRunImage() {
    method setRunImage (line 135) | void setRunImage(@Nullable String runImage) {
    method getEnv (line 143) | public @Nullable Map<String, String> getEnv() {
    method getCleanCache (line 151) | public @Nullable Boolean getCleanCache() {
    method setCleanCache (line 155) | void setCleanCache(@Nullable Boolean cleanCache) {
    method isVerboseLogging (line 163) | public boolean isVerboseLogging() {
    method getPullPolicy (line 171) | public @Nullable PullPolicy getPullPolicy() {
    method setPullPolicy (line 175) | void setPullPolicy(@Nullable PullPolicy pullPolicy) {
    method getPublish (line 183) | public @Nullable Boolean getPublish() {
    method setPublish (line 187) | void setPublish(@Nullable Boolean publish) {
    method getNetwork (line 195) | public @Nullable String getNetwork() {
    method setNetwork (line 199) | public void setNetwork(@Nullable String network) {
    method getCreatedDate (line 207) | public @Nullable String getCreatedDate() {
    method setCreatedDate (line 211) | public void setCreatedDate(@Nullable String createdDate) {
    method getApplicationDirectory (line 219) | public @Nullable String getApplicationDirectory() {
    method setApplicationDirectory (line 223) | public void setApplicationDirectory(@Nullable String applicationDirect...
    method getImagePlatform (line 233) | public @Nullable String getImagePlatform() {
    method setImagePlatform (line 237) | public void setImagePlatform(@Nullable String imagePlatform) {
    method getBuildRequest (line 241) | BuildRequest getBuildRequest(Artifact artifact, Function<Owner, TarArc...
    method getOrDeduceName (line 245) | private ImageReference getOrDeduceName(Artifact artifact) {
    method customize (line 253) | private BuildRequest customize(BuildRequest request) {

FILE: build-plugin/spring-boot-maven-plugin/src/main/java/org/springframework/boot/maven/Include.java
  class Include (line 25) | public class Include extends FilterableDependency {

FILE: build-plugin/spring-boot-maven-plugin/src/main/java/org/springframework/boot/maven/IncludeFilter.java
  class IncludeFilter (line 31) | public class IncludeFilter extends DependencyFilter {
    method IncludeFilter (line 33) | public IncludeFilter(List<Include> includes) {
    method filter (line 37) | @Override

FILE: build-plugin/spring-boot-maven-plugin/src/main/java/org/springframework/boot/maven/JarTypeFilter.java
  class JarTypeFilter (line 35) | class JarTypeFilter extends DependencyFilter {
    method JarTypeFilter (line 40) | JarTypeFilter() {
    method filter (line 44) | @Override

FILE: build-plugin/spring-boot-maven-plugin/src/main/java/org/springframework/boot/maven/JavaCompilerPluginConfiguration.java
  class JavaCompilerPluginConfiguration (line 33) | class JavaCompilerPluginConfiguration {
    method JavaCompilerPluginConfiguration (line 37) | JavaCompilerPluginConfiguration(MavenProject project) {
    method getSourceMajorVersion (line 41) | @Nullable String getSourceMajorVersion() {
    method getTargetMajorVersion (line 51) | @Nullable String getTargetMajorVersion() {
    method getReleaseVersion (line 61) | @Nullable String getReleaseVersion() {
    method getConfigurationValue (line 71) | private @Nullable String getConfigurationValue(String propertyName) {
    method getPropertyValue (line 82) | private @Nullable String getPropertyValue(String propertyName) {
    method getNodeValue (line 89) | private @Nullable String getNodeValue(Xpp3Dom dom, String... childName...
    method majorVersionFor (line 103) | @Contract("!null -> !null")

FILE: build-plugin/spring-boot-maven-plugin/src/main/java/org/springframework/boot/maven/JavaProcessExecutor.java
  class JavaProcessExecutor (line 39) | class JavaProcessExecutor {
    method JavaProcessExecutor (line 49) | JavaProcessExecutor(MavenSession mavenSession, ToolchainManager toolch...
    method JavaProcessExecutor (line 53) | private JavaProcessExecutor(MavenSession mavenSession, ToolchainManage...
    method withRunProcessCustomizer (line 60) | JavaProcessExecutor withRunProcessCustomizer(Consumer<RunProcess> cust...
    method run (line 66) | int run(File workingDirectory, List<String> args, Map<String, String> ...
    method runAsync (line 84) | RunProcess runAsync(File workingDirectory, List<String> args, Map<Stri...
    method hasTerminatedSuccessfully (line 96) | private boolean hasTerminatedSuccessfully(int exitCode) {
    method getJavaExecutable (line 100) | private String getJavaExecutable() {

FILE: build-plugin/spring-boot-maven-plugin/src/main/java/org/springframework/boot/maven/Layers.java
  class Layers (line 29) | public class Layers {
    method isEnabled (line 41) | public boolean isEnabled() {
    method getConfiguration (line 51) | public @Nullable File getConfiguration() {
    method setConfiguration (line 55) | public void setConfiguration(@Nullable File configuration) {
    method getConfigurationName (line 64) | public @Nullable String getConfigurationName() {
    method setConfigurationName (line 68) | public void setConfigurationName(@Nullable String configurationName) {

FILE: build-plugin/spring-boot-maven-plugin/src/main/java/org/springframework/boot/maven/LoggingMainClassTimeoutWarningListener.java
  class LoggingMainClassTimeoutWarningListener (line 31) | class LoggingMainClassTimeoutWarningListener implements MainClassTimeout...
    method LoggingMainClassTimeoutWarningListener (line 35) | LoggingMainClassTimeoutWarningListener(Supplier<Log> log) {
    method handleTimeoutWarning (line 39) | @Override

FILE: build-plugin/spring-boot-maven-plugin/src/main/java/org/springframework/boot/maven/MatchingGroupIdFilter.java
  class MatchingGroupIdFilter (line 33) | public class MatchingGroupIdFilter extends AbstractArtifactFeatureFilter {
    method MatchingGroupIdFilter (line 39) | public MatchingGroupIdFilter(String exclude) {
    method getArtifactFeature (line 43) | @Override

FILE: build-plugin/spring-boot-maven-plugin/src/main/java/org/springframework/boot/maven/MavenBuildOutputTimestamp.java
  class MavenBuildOutputTimestamp (line 41) | class MavenBuildOutputTimestamp {
    method MavenBuildOutputTimestamp (line 53) | MavenBuildOutputTimestamp(@Nullable String timestamp) {
    method toFileTime (line 64) | @Nullable FileTime toFileTime() {
    method toInstant (line 79) | @Nullable Instant toInstant() {
    method isNumeric (line 102) | private static boolean isNumeric(String str) {

FILE: build-plugin/spring-boot-maven-plugin/src/main/java/org/springframework/boot/maven/ProcessAotMojo.java
  class ProcessAotMojo (line 42) | @Mojo(name = "process-aot", defaultPhase = LifecyclePhase.PREPARE_PACKAG...
    method ProcessAotMojo (line 99) | @Inject
    method executeAot (line 104) | @Override
    method getAotArguments (line 119) | private String[] getAotArguments(String applicationClass) {
    method getClassPath (line 131) | private URL[] getClassPath() throws Exception {
    method resolveArguments (line 136) | private RunArguments resolveArguments() {

FILE: build-plugin/spring-boot-maven-plugin/src/main/java/org/springframework/boot/maven/ProcessTestAotMojo.java
  class ProcessTestAotMojo (line 57) | @Mojo(name = "process-test-aot", defaultPhase = LifecyclePhase.PROCESS_T...
    method ProcessTestAotMojo (line 115) | @Inject
    method executeAot (line 121) | @Override
    method getAotArguments (line 143) | private String[] getAotArguments() {
    method getClassPath (line 154) | protected URL[] getClassPath(boolean includeJUnitPlatformLauncher) thr...
    method addJUnitPlatformLauncher (line 165) | private URL[] addJUnitPlatformLauncher(URL[] classPath) throws Excepti...
    method getJUnitPlatformVersion (line 178) | private String getJUnitPlatformVersion() throws MojoExecutionException {
    method resolveArtifact (line 189) | private Set<Artifact> resolveArtifact(Artifact artifact) throws Except...

FILE: build-plugin/spring-boot-maven-plugin/src/main/java/org/springframework/boot/maven/PropertiesMergingResourceTransformer.java
  class PropertiesMergingResourceTransformer (line 41) | public class PropertiesMergingResourceTransformer implements Reproducibl...
    method getData (line 54) | public Properties getData() {
    method canTransformResource (line 58) | @Override
    method processResource (line 63) | @Override
    method processResource (line 70) | @Override
    method process (line 81) | private void process(String name, String value) {
    method hasTransformedResource (line 86) | @Override
    method modifyOutputStream (line 91) | @Override
    method getResource (line 102) | public @Nullable String getResource() {
    method setResource (line 106) | public void setResource(@Nullable String resource) {

FILE: build-plugin/spring-boot-maven-plugin/src/main/java/org/springframework/boot/maven/RepackageMojo.java
  class RepackageMojo (line 55) | @Mojo(name = "repackage", defaultPhase = LifecyclePhase.PACKAGE, require...
    method RepackageMojo (line 148) | @Inject
    method getLayout (line 158) | @Override
    method getLayoutFactory (line 169) | @Override
    method execute (line 174) | @Override
    method repackage (line 187) | private void repackage() throws MojoExecutionException {
    method parseOutputTimestamp (line 205) | private @Nullable FileTime parseOutputTimestamp() throws MojoExecution...
    method getRepackager (line 214) | private Repackager getRepackager(File source) {
    method removeLineBreaks (line 218) | @Contract("!null -> !null")
    method updateArtifact (line 223) | private void updateArtifact(Artifact source, File target, File origina...
    method attachArtifact (line 238) | private void attachArtifact(Artifact source, File target, File origina...

FILE: build-plugin/spring-boot-maven-plugin/src/main/java/org/springframework/boot/maven/RunArguments.java
  class RunArguments (line 31) | class RunArguments {
    method RunArguments (line 37) | RunArguments(@Nullable String arguments) {
    method RunArguments (line 41) | @SuppressWarnings("NullAway") // Maven can't handle nullable arrays
    method RunArguments (line 46) | RunArguments(@Nullable Iterable<@Nullable String> args) {
    method getArgs (line 56) | Deque<String> getArgs() {
    method asArray (line 60) | String[] asArray() {
    method parseArgs (line 64) | static String[] parseArgs(@Nullable String arguments) {

FILE: build-plugin/spring-boot-maven-plugin/src/main/java/org/springframework/boot/maven/RunMojo.java
  class RunMojo (line 45) | @Mojo(name = "run", requiresProject = true, defaultPhase = LifecyclePhas...
    method RunMojo (line 64) | @Inject
    method resolveJvmArguments (line 69) | @Override
    method run (line 78) | @Override
    method isUseTestClasspath (line 87) | @Override
    class RunProcessKiller (line 92) | private static final class RunProcessKiller implements Runnable {
      method RunProcessKiller (line 96) | private RunProcessKiller(RunProcess runProcess) {
      method run (line 100) | @Override

FILE: build-plugin/spring-boot-maven-plugin/src/main/java/org/springframework/boot/maven/SpringApplicationAdminClient.java
  class SpringApplicationAdminClient (line 40) | class SpringApplicationAdminClient {
    method SpringApplicationAdminClient (line 49) | SpringApplicationAdminClient(MBeanServerConnection connection, String ...
    method isReady (line 61) | boolean isReady() throws MojoExecutionException {
    method stop (line 85) | void stop() throws MojoExecutionException, IOException, InstanceNotFou...
    method toObjectName (line 97) | private ObjectName toObjectName(String name) {
    method connect (line 113) | static JMXConnector connect(int port) throws IOException {

FILE: build-plugin/spring-boot-maven-plugin/src/main/java/org/springframework/boot/maven/SpringBootApplicationClassFinder.java
  class SpringBootApplicationClassFinder (line 33) | abstract class SpringBootApplicationClassFinder {
    method findSingleClass (line 37) | static String findSingleClass(File classesDirectory) throws MojoExecut...
    method findSingleClass (line 41) | static String findSingleClass(List<File> classesDirectories) throws Mo...

FILE: build-plugin/spring-boot-maven-plugin/src/main/java/org/springframework/boot/maven/StartMojo.java
  class StartMojo (line 53) | @Mojo(name = "start", requiresProject = true, defaultPhase = LifecyclePh...
    method StartMojo (line 98) | @Inject
    method run (line 103) | @Override
    method resolveApplicationArguments (line 116) | @Override
    method resolveJvmArguments (line 124) | @Override
    method waitForSpringApplication (line 137) | private void waitForSpringApplication() throws MojoFailureException, M...
    method doWaitForSpringApplication (line 159) | private void doWaitForSpringApplication(MBeanServerConnection connection)
    method execute (line 184) | public <T> T execute(long wait, int maxAttempts, Callable<@Nullable T>...
    method isUseTestClasspath (line 207) | @Override
    class CreateJmxConnector (line 212) | private class CreateJmxConnector implements Callable<@Nullable JMXConn...
      method CreateJmxConnector (line 216) | CreateJmxConnector(int port) {
      method call (line 220) | @Override
      method hasCauseWithType (line 235) | private boolean hasCauseWithType(Throwable t, Class<? extends Except...

FILE: build-plugin/spring-boot-maven-plugin/src/main/java/org/springframework/boot/maven/StopMojo.java
  class StopMojo (line 40) | @Mojo(name = "stop", requiresProject = true, defaultPhase = LifecyclePha...
    method execute (line 72) | @Override
    method stop (line 89) | private void stop(MBeanServerConnection connection) throws IOException...

FILE: build-plugin/spring-boot-maven-plugin/src/main/java/org/springframework/boot/maven/SystemPropertyFormatter.java
  class SystemPropertyFormatter (line 27) | final class
Copy disabled (too large) Download .json
Condensed preview — 11593 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (41,782K chars).
[
  {
    "path": ".editorconfig",
    "chars": 100,
    "preview": "root=true\n\n[*.{groovy,java,kt,xml}]\nindent_style = tab\nindent_size = 4\ncontinuation_indent_size = 8\n"
  },
  {
    "path": ".git-blame-ignore-revs",
    "chars": 205,
    "preview": "# .git-blame-ignore-revs\n# Reformat code following spring-javaformat upgrade\ndf5898a1464112f185d295d585740de696934a12\nc4"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/config.yml",
    "chars": 211,
    "preview": "blank_issues_enabled: false\ncontact_links:\n  - name: Community Support\n    url: https://stackoverflow.com/tags/spring-bo"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/issue.md",
    "chars": 1882,
    "preview": "---\nname: General\nabout: Bugs, enhancements, documentation, tasks.\ntitle: ''\nlabels: ''\nassignees: ''\n---\n\n<!--\nThanks f"
  },
  {
    "path": ".github/PULL_REQUEST_TEMPLATE.md",
    "chars": 1257,
    "preview": "<!--\nThanks for contributing to Spring Boot. Please review the following notes before\nsubmitting a pull request.\n\nPlease"
  },
  {
    "path": ".github/actions/await-http-resource/action.yml",
    "chars": 518,
    "preview": "name: Await HTTP Resource\ndescription: 'Waits for an HTTP resource to be available (a HEAD request succeeds)'\ninputs:\n  "
  },
  {
    "path": ".github/actions/create-github-release/action.yml",
    "chars": 1273,
    "preview": "name: Create GitHub Release\ndescription: 'Create the release on GitHub with a changelog'\ninputs:\n  commercial:\n    descr"
  },
  {
    "path": ".github/actions/create-github-release/changelog-generator-commercial.yml",
    "chars": 855,
    "preview": "changelog:\n  sections:\n    - title: \":warning: Attention Required\"\n      labels:\n        - \"for: upgrade-attention\"\n    "
  },
  {
    "path": ".github/actions/create-github-release/changelog-generator-oss.yml",
    "chars": 964,
    "preview": "changelog:\n  sections:\n    - title: \":warning: Attention Required\"\n      labels:\n        - \"for: upgrade-attention\"\n    "
  },
  {
    "path": ".github/actions/prepare-gradle-build/action.yml",
    "chars": 3019,
    "preview": "name: Prepare Gradle Build\ndescription: 'Prepares a Gradle build. Sets up Java and Gradle and configures Gradle properti"
  },
  {
    "path": ".github/actions/print-jvm-thread-dumps/action.yml",
    "chars": 498,
    "preview": "name: Print JVM thread dumps\ndescription: 'Prints a thread dump for all running JVMs'\nruns:\n  using: composite\n  steps:\n"
  },
  {
    "path": ".github/actions/publish-gradle-plugin/action.yml",
    "chars": 1591,
    "preview": "name: Publish Gradle Plugin\ndescription: 'Publishes Spring Boot''s Gradle plugin to the Plugin Portal'\ninputs:\n  build-n"
  },
  {
    "path": ".github/actions/publish-gradle-plugin/artifacts.spec",
    "chars": 396,
    "preview": "{\n  \"files\": [\n    {\n      \"aql\": {\n        \"items.find\": {\n          \"$and\": [\n            {\n              \"@build.name"
  },
  {
    "path": ".github/actions/publish-gradle-plugin/build.gradle",
    "chars": 1180,
    "preview": "/*\n * Copyright 2012-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the L"
  },
  {
    "path": ".github/actions/publish-gradle-plugin/settings.gradle",
    "chars": 624,
    "preview": "/*\n * Copyright 2012-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the L"
  },
  {
    "path": ".github/actions/publish-to-sdkman/action.yml",
    "chars": 1644,
    "preview": "name: Publish to SDKMAN!\ndescription: 'Publishes the release as a new candidate version on SDKMAN!'\ninputs:\n  make-defau"
  },
  {
    "path": ".github/actions/send-notification/action.yml",
    "chars": 1795,
    "preview": "name: Send Notification\ndescription: 'Sends a Google Chat message as a notification of the job''s outcome'\ninputs:\n  bui"
  },
  {
    "path": ".github/actions/sync-to-maven-central/action.yml",
    "chars": 1592,
    "preview": "name: Sync to Maven Central\ndescription: 'Syncs a release to Maven Central and waits for it to be available for use'\ninp"
  },
  {
    "path": ".github/actions/sync-to-maven-central/artifacts.spec",
    "chars": 383,
    "preview": "{\n  \"files\": [\n    {\n      \"aql\": {\n        \"items.find\": {\n          \"$and\": [\n            {\n              \"@build.name"
  },
  {
    "path": ".github/actions/update-homebrew-tap/action.yml",
    "chars": 1561,
    "preview": "name: Update Homebrew Tap\ndescription: Updates the Homebrew Tap for the Spring Boot CLI\ninputs:\n  spring-boot-version:\n "
  },
  {
    "path": ".github/dco.yml",
    "chars": 26,
    "preview": "require:\n  members: false\n"
  },
  {
    "path": ".github/dependabot.yml",
    "chars": 351,
    "preview": "version: 2\nupdates:\n  - package-ecosystem: \"github-actions\"\n    directory: \"/\"\n    schedule:\n      interval: \"weekly\"\n  "
  },
  {
    "path": ".github/scripts/reclaim-docker-diskspace.sh",
    "chars": 1006,
    "preview": "#!/bin/bash\n\necho \"Reclaiming Docker Disk Space\"\necho\n\ndocker image ls --format \"{{.Size}} {{.ID}} {{.Repository}} {{.Ta"
  },
  {
    "path": ".github/workflows/build-and-deploy-snapshot.yml",
    "chars": 3654,
    "preview": "name: Build and Deploy Snapshot\non:\n  workflow_dispatch:\n  push:\n    branches:\n      - 'main'\npermissions:\n  contents: r"
  },
  {
    "path": ".github/workflows/build-pull-request.yml",
    "chars": 699,
    "preview": "name: Build Pull Request\non: pull_request\npermissions:\n  contents: read\njobs:\n  build:\n    name: Build Pull Request\n    "
  },
  {
    "path": ".github/workflows/ci.yml",
    "chars": 2458,
    "preview": "name: CI\non:\n  push:\n    branches:\n      - 'main'\npermissions:\n  contents: read\njobs:\n  ci:\n    name: '${{ matrix.os.nam"
  },
  {
    "path": ".github/workflows/distribute.yml",
    "chars": 2416,
    "preview": "name: Distribute\non:\n  workflow_dispatch:\n    inputs:\n      build-number:\n        description: 'Number of the build to u"
  },
  {
    "path": ".github/workflows/release-milestone.yml",
    "chars": 5094,
    "preview": "name: Release Milestone\non:\n  push:\n    tags:\n      - v4.1.0-M[0-9]\n      - v4.1.0-RC[0-9]\npermissions:\n  contents: read"
  },
  {
    "path": ".github/workflows/release.yml",
    "chars": 7709,
    "preview": "name: Release\non:\n  push:\n    tags:\n      - v4.1.[0-9]+\npermissions:\n  contents: read\nconcurrency:\n  group: ${{ github.w"
  },
  {
    "path": ".github/workflows/run-codeql-analysis.yml",
    "chars": 322,
    "preview": "name: \"Run CodeQL Analysis\"\non:\n  push:\n  pull_request:\n  workflow_dispatch:\npermissions: read-all\njobs:\n  run-analysis:"
  },
  {
    "path": ".github/workflows/run-system-tests.yml",
    "chars": 1722,
    "preview": "name: Run System Tests\non:\n  push:\n    branches:\n      - \"main\"\npermissions:\n  contents: read\njobs:\n  run-system-tests:\n"
  },
  {
    "path": ".github/workflows/trigger-docs-build.yml",
    "chars": 1109,
    "preview": "name: Trigger Docs Build\non:\n  push:\n    branches: 'main'\n    paths: [ 'antora/*' ]\n  workflow_dispatch:\n    inputs:\n   "
  },
  {
    "path": ".github/workflows/verify.yml",
    "chars": 3506,
    "preview": "name: Verify\non:\n  workflow_call:\n    inputs:\n      staging:\n        description: 'Whether the release to verify is in t"
  },
  {
    "path": ".gitignore",
    "chars": 458,
    "preview": "*#\n*.iml\n*.ipr\n*.iws\n*.jar\n*.sw?\n*~\n.#*\n.*.md.html\n.DS_Store\n.attach_pid*\n.classpath\n.factorypath\n.gradle\n.metadata\n.pro"
  },
  {
    "path": ".idea/.gitignore",
    "chars": 189,
    "preview": "# Project name\n.name\n*.xml\n/modules/\n/shelf/\n/workspace.xml\n# Editor-based HTTP Client requests\n/httpRequests/\n# Datasou"
  },
  {
    "path": ".sdkmanrc",
    "chars": 115,
    "preview": "# Enable auto-env through the sdkman_auto_env config\n# Add key=value pairs of SDKs to use below\njava=25.0.2-librca\n"
  },
  {
    "path": "CONTRIBUTING.adoc",
    "chars": 4100,
    "preview": "= Contributing to Spring Boot\n\nSpring Boot is released under the Apache 2.0 license. If you would like to contribute som"
  },
  {
    "path": "LICENSE.txt",
    "chars": 11359,
    "preview": "\n                                 Apache License\n                           Version 2.0, January 2004\n                  "
  },
  {
    "path": "README.adoc",
    "chars": 5279,
    "preview": "= Spring Boot image:https://github.com/spring-projects/spring-boot/actions/workflows/build-and-deploy-snapshot.yml/badge"
  },
  {
    "path": "SUPPORT.adoc",
    "chars": 1002,
    "preview": "= Getting support for Spring Boot\n\n\n\n== GitHub issues\n\nWe choose not to use GitHub issues for general usage questions an"
  },
  {
    "path": "antora/package.json",
    "chars": 619,
    "preview": "{\n  \"scripts\": {\n    \"antora\": \"node npm/antora.js\"\n  },\n  \"dependencies\": {\n    \"@antora/cli\": \"3.2.0-alpha.11\",\n    \"@"
  },
  {
    "path": "build-plugin/spring-boot-antlib/build.gradle",
    "chars": 2793,
    "preview": "/*\n * Copyright 2012-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the L"
  },
  {
    "path": "build-plugin/spring-boot-antlib/src/it/sample/build.xml",
    "chars": 3302,
    "preview": "<?xml version=\"1.0\"?>\n<project name=\"spring-boot-antlib-test\" default=\"antunit\" xmlns:au=\"antlib:org.apache.ant.antunit\""
  },
  {
    "path": "build-plugin/spring-boot-antlib/src/it/sample/ivysettings.xml",
    "chars": 535,
    "preview": "<ivysettings>\n\t<settings defaultResolver=\"chain\" />\n\t<resolvers>\n\t\t<chain name=\"chain\">\n\t\t\t<filesystem name=\"local\" loca"
  },
  {
    "path": "build-plugin/spring-boot-antlib/src/it/sample/src/main/java/org/test/SampleApplication.java",
    "chars": 816,
    "preview": "/*\n * Copyright 2012-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "build-plugin/spring-boot-antlib/src/it/sample/src/main/resources/foo",
    "chars": 4,
    "preview": "FOO\n"
  },
  {
    "path": "build-plugin/spring-boot-antlib/src/main/java/org/springframework/boot/ant/FindMainClass.java",
    "chars": 3247,
    "preview": "/*\n * Copyright 2012-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "build-plugin/spring-boot-antlib/src/main/java/org/springframework/boot/ant/ShareAntlibLoader.java",
    "chars": 1435,
    "preview": "/*\n * Copyright 2012-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "build-plugin/spring-boot-antlib/src/main/java/org/springframework/boot/ant/package-info.java",
    "chars": 789,
    "preview": "/*\n * Copyright 2012-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "build-plugin/spring-boot-antlib/src/main/resources/org/springframework/boot/ant/antlib.xml",
    "chars": 2460,
    "preview": "<?xml version=\"1.0\"?>\n<antlib>\n\n\t<taskdef name=\"findmainclass\" classname=\"org.springframework.boot.ant.FindMainClass\" />"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/.gitignore",
    "chars": 20,
    "preview": "/bin/\n/build/\n/out/\n"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/build.gradle",
    "chars": 5543,
    "preview": "/*\n * Copyright 2012-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the L"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/dockerTest/java/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests.java",
    "chars": 33137,
    "preview": "/*\n * Copyright 2012-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/dockerTest/java/org/springframework/boot/gradle/tasks/bundling/BootBuildImageRegistryIntegrationTests.java",
    "chars": 4071,
    "preview": "/*\n * Copyright 2012-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/dockerTest/resources/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests-buildsImageOnLinuxArmWithImagePlatformLinuxArm.gradle",
    "chars": 925,
    "preview": "/*\n * Copyright 2012-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the L"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/dockerTest/resources/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests-buildsImageWithApplicationDirectory.gradle",
    "chars": 923,
    "preview": "/*\n * Copyright 2012-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the L"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/dockerTest/resources/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests-buildsImageWithBindCaches.gradle",
    "chars": 1203,
    "preview": "/*\n * Copyright 2012-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the L"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/dockerTest/resources/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests-buildsImageWithBinding.gradle",
    "chars": 914,
    "preview": "/*\n * Copyright 2012-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the L"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/dockerTest/resources/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests-buildsImageWithBuildpackFromBuilder.gradle",
    "chars": 869,
    "preview": "/*\n * Copyright 2012-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the L"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/dockerTest/resources/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests-buildsImageWithBuildpackFromDirectory.gradle",
    "chars": 888,
    "preview": "/*\n * Copyright 2012-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the L"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/dockerTest/resources/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests-buildsImageWithBuildpackFromTarGzip.gradle",
    "chars": 882,
    "preview": "/*\n * Copyright 2012-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the L"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/dockerTest/resources/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests-buildsImageWithBuildpacksFromImages.gradle",
    "chars": 879,
    "preview": "/*\n * Copyright 2012-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the L"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/dockerTest/resources/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests-buildsImageWithCommandLineOptions.gradle",
    "chars": 698,
    "preview": "/*\n * Copyright 2012-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the L"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/dockerTest/resources/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests-buildsImageWithCreatedDate.gradle",
    "chars": 853,
    "preview": "/*\n * Copyright 2012-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the L"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/dockerTest/resources/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests-buildsImageWithCurrentCreatedDate.gradle",
    "chars": 836,
    "preview": "/*\n * Copyright 2012-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the L"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/dockerTest/resources/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests-buildsImageWithCustomBuilderAndRunImage.gradle",
    "chars": 902,
    "preview": "/*\n * Copyright 2012-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the L"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/dockerTest/resources/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests-buildsImageWithCustomName.gradle",
    "chars": 854,
    "preview": "/*\n * Copyright 2012-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the L"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/dockerTest/resources/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests-buildsImageWithEmptySecurityOptions.gradle",
    "chars": 837,
    "preview": "/*\n * Copyright 2012-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the L"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/dockerTest/resources/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests-buildsImageWithNetworkModeNone.gradle",
    "chars": 902,
    "preview": "/*\n * Copyright 2012-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the L"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/dockerTest/resources/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests-buildsImageWithPullPolicy.gradle",
    "chars": 954,
    "preview": "/*\n * Copyright 2012-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the L"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/dockerTest/resources/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests-buildsImageWithTag.gradle",
    "chars": 854,
    "preview": "/*\n * Copyright 2012-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the L"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/dockerTest/resources/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests-buildsImageWithTrustBuilder.gradle",
    "chars": 905,
    "preview": "/*\n * Copyright 2012-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the L"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/dockerTest/resources/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests-buildsImageWithVolumeCaches.gradle",
    "chars": 1047,
    "preview": "/*\n * Copyright 2012-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the L"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/dockerTest/resources/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests-buildsImageWithWarPackagingAndJarConfiguration.gradle",
    "chars": 849,
    "preview": "/*\n * Copyright 2012-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the L"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/dockerTest/resources/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests-failsWhenBuildingOnLinuxAmdWithImagePlatformLinuxArm.gradle",
    "chars": 925,
    "preview": "/*\n * Copyright 2012-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the L"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/dockerTest/resources/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests-failsWhenCachesAreConfiguredTwice.gradle",
    "chars": 894,
    "preview": "/*\n * Copyright 2012-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the L"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/dockerTest/resources/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests-failsWithBuilderError.gradle",
    "chars": 856,
    "preview": "/*\n * Copyright 2012-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the L"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/dockerTest/resources/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests-failsWithBuildpackNotInBuilder.gradle",
    "chars": 880,
    "preview": "/*\n * Copyright 2012-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the L"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/dockerTest/resources/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests-failsWithIncompatiblePlatform.gradle",
    "chars": 821,
    "preview": "/*\n * Copyright 2012-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the L"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/dockerTest/resources/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests-failsWithInvalidCreatedDate.gradle",
    "chars": 845,
    "preview": "/*\n * Copyright 2012-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the L"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/dockerTest/resources/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests-failsWithInvalidTag.gradle",
    "chars": 854,
    "preview": "/*\n * Copyright 2012-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the L"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/dockerTest/resources/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests.gradle",
    "chars": 884,
    "preview": "/*\n * Copyright 2012-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the L"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/dockerTest/resources/org/springframework/boot/gradle/tasks/bundling/BootBuildImageRegistryIntegrationTests.gradle",
    "chars": 800,
    "preview": "/*\n * Copyright 2012-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the L"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/antora.yml",
    "chars": 192,
    "preview": "name: boot\nversion: true\next:\n  zip_contents_collector:\n    include:\n    - name: gradle-plugin\n      classifier: catalog"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/local-nav.adoc",
    "chars": 56,
    "preview": "include::gradle-plugin:partial$nav-gradle-plugin.adoc[]\n"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/aot/apply-aot-plugin.gradle",
    "chars": 132,
    "preview": "plugins {\n\tid 'org.springframework.boot' version '{version-spring-boot}'\n\tid 'java'\n}\n\napply plugin: 'org.springframewor"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/aot/apply-aot-plugin.gradle.kts",
    "chars": 130,
    "preview": "plugins {\n\tid(\"org.springframework.boot\") version \"{version-spring-boot}\"\n\tjava\n}\n\napply(plugin = \"org.springframework.b"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/aot/apply-native-image-plugin.gradle",
    "chars": 160,
    "preview": "plugins {\n\tid 'org.springframework.boot' version '{version-spring-boot}'\n\tid 'org.graalvm.buildtools.native' version '{v"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/aot/apply-native-image-plugin.gradle.kts",
    "chars": 158,
    "preview": "plugins {\n\tid(\"org.springframework.boot\") version \"{version-spring-boot}\"\n\tid(\"org.graalvm.buildtools.native\") version \""
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/getting-started/apply-plugin-commercial.gradle",
    "chars": 75,
    "preview": "plugins {\n\tid 'org.springframework.boot' version '{version-spring-boot}'\n}\n"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/getting-started/apply-plugin-commercial.gradle.kts",
    "chars": 76,
    "preview": "plugins {\n\tid(\"org.springframework.boot\") version \"{version-spring-boot}\"\n}\n"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/getting-started/apply-plugin-release.gradle",
    "chars": 75,
    "preview": "plugins {\n\tid 'org.springframework.boot' version '{version-spring-boot}'\n}\n"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/getting-started/apply-plugin-release.gradle.kts",
    "chars": 76,
    "preview": "plugins {\n\tid(\"org.springframework.boot\") version \"{version-spring-boot}\"\n}\n"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/getting-started/apply-plugin-snapshot.gradle",
    "chars": 246,
    "preview": "buildscript {\n\trepositories {\n\t\tmaven {\n\t\t\turl = 'https://repo.spring.io/libs-snapshot'\n\t\t}\n\t}\n\n\tdependencies {\n\t\tclassp"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/getting-started/milestone-settings.gradle",
    "chars": 121,
    "preview": "pluginManagement {\n\trepositories {\n\t\tmaven {\n\t\t\turl = 'https://repo.spring.io/milestone'\n\t\t}\n\t\tgradlePluginPortal()\n\t}\n}"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/getting-started/milestone-settings.gradle.kts",
    "chars": 121,
    "preview": "pluginManagement {\n\trepositories {\n\t\tmaven { url = uri(\"https://repo.spring.io/milestone\") }\n\t\tgradlePluginPortal()\n\t}\n}"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/getting-started/snapshot-settings.gradle",
    "chars": 178,
    "preview": "pluginManagement {\n\trepositories {\n\t\tmaven {\n\t\t\turl = 'https://repo.spring.io/milestone'\n\t\t}\n\t\tmaven {\n\t\t\turl = 'https:/"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/getting-started/snapshot-settings.gradle.kts",
    "chars": 178,
    "preview": "pluginManagement {\n\trepositories {\n\t\tmaven { url = uri(\"https://repo.spring.io/milestone\") }\n\t\tmaven { url = uri(\"https:"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/getting-started/typical-plugins.gradle",
    "chars": 363,
    "preview": "// tag::apply[]\nplugins {\n\tid 'java'\n\tid 'org.springframework.boot' version '{version-spring-boot}'\n}\n\napply plugin: 'io"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/getting-started/typical-plugins.gradle.kts",
    "chars": 371,
    "preview": "// tag::apply[]\nplugins {\n\tjava\n\tid(\"org.springframework.boot\") version \"{version-spring-boot}\"\n}\n\napply(plugin = \"io.sp"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/integrating-with-actuator/build-info-additional.gradle",
    "chars": 237,
    "preview": "plugins {\n\tid 'java'\n\tid 'org.springframework.boot' version '{version-spring-boot}'\n}\n\n// tag::additional[]\nspringBoot {"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/integrating-with-actuator/build-info-additional.gradle.kts",
    "chars": 246,
    "preview": "plugins {\n\tjava\n\tid(\"org.springframework.boot\") version \"{version-spring-boot}\"\n}\n\n// tag::additional[]\nspringBoot {\n\tbu"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/integrating-with-actuator/build-info-basic.gradle",
    "chars": 157,
    "preview": "plugins {\n\tid 'java'\n\tid 'org.springframework.boot' version '{version-spring-boot}'\n}\n\n// tag::build-info[]\nspringBoot {"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/integrating-with-actuator/build-info-basic.gradle.kts",
    "chars": 153,
    "preview": "plugins {\n\tjava\n\tid(\"org.springframework.boot\") version \"{version-spring-boot}\"\n}\n\n// tag::build-info[]\nspringBoot {\n\tbu"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/integrating-with-actuator/build-info-custom-values.gradle",
    "chars": 291,
    "preview": "plugins {\n\tid 'java'\n\tid 'org.springframework.boot' version '{version-spring-boot}'\n}\n\n// tag::custom-values[]\nspringBoo"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/integrating-with-actuator/build-info-custom-values.gradle.kts",
    "chars": 299,
    "preview": "plugins {\n\tjava\n\tid(\"org.springframework.boot\") version \"{version-spring-boot}\"\n}\n\n// tag::custom-values[]\nspringBoot {\n"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/integrating-with-actuator/build-info-exclude-time.gradle",
    "chars": 186,
    "preview": "plugins {\n\tid 'java'\n\tid 'org.springframework.boot' version '{version-spring-boot}'\n}\n\n// tag::exclude-time[]\nspringBoot"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/integrating-with-actuator/build-info-exclude-time.gradle.kts",
    "chars": 190,
    "preview": "plugins {\n\tjava\n\tid(\"org.springframework.boot\") version \"{version-spring-boot}\"\n}\n\n// tag::exclude-time[]\nspringBoot {\n\t"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/managing-dependencies/configure-bom-with-plugins.gradle.kts",
    "chars": 679,
    "preview": "import io.spring.gradle.dependencymanagement.dsl.DependencyManagementExtension\n\n// tag::configure-bom[]\nplugins {\n\tjava\n"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/managing-dependencies/configure-bom.gradle",
    "chars": 529,
    "preview": "plugins {\n\tid 'java'\n\tid 'org.springframework.boot' version '{version-spring-boot}'\n}\n\n// tag::configure-bom[]\napply plu"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/managing-dependencies/configure-bom.gradle.kts",
    "chars": 652,
    "preview": "import io.spring.gradle.dependencymanagement.dsl.DependencyManagementExtension\n\nplugins {\n\tjava\n\tid(\"org.springframework"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/managing-dependencies/configure-platform.gradle",
    "chars": 562,
    "preview": "plugins {\n\tid 'java'\n\tid 'org.springframework.boot' version '{version-spring-boot}'\n}\n\n// tag::configure-platform[]\ndepe"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/managing-dependencies/configure-platform.gradle.kts",
    "chars": 560,
    "preview": "plugins {\n\tjava\n\tid(\"org.springframework.boot\") version \"{version-spring-boot}\"\n}\n\n// tag::configure-platform[]\ndependen"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/managing-dependencies/custom-version-with-platform.gradle",
    "chars": 694,
    "preview": "plugins {\n\tid 'java'\n\tid 'org.springframework.boot' version '{version-spring-boot}'\n}\n\ndependencies {\n\timplementation pl"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/managing-dependencies/custom-version-with-platform.gradle.kts",
    "chars": 668,
    "preview": "plugins {\n\tjava\n\tid(\"org.springframework.boot\") version \"{version-spring-boot}\"\n}\n\ndependencies {\n\timplementation(platfo"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/managing-dependencies/custom-version.gradle",
    "chars": 549,
    "preview": "plugins {\n\tid 'org.springframework.boot' version '{version-spring-boot}'\n}\n\napply plugin: 'io.spring.dependency-manageme"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/managing-dependencies/custom-version.gradle.kts",
    "chars": 730,
    "preview": "import io.spring.gradle.dependencymanagement.dsl.DependencyManagementExtension\n\nplugins {\n\tid(\"org.springframework.boot\""
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/managing-dependencies/depend-on-plugin-commercial.gradle",
    "chars": 87,
    "preview": "plugins {\n\tid 'org.springframework.boot' version '{version-spring-boot}' apply false\n}\n"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/managing-dependencies/depend-on-plugin-commercial.gradle.kts",
    "chars": 88,
    "preview": "plugins {\n\tid(\"org.springframework.boot\") version \"{version-spring-boot}\" apply false\n}\n"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/managing-dependencies/depend-on-plugin-milestone.gradle",
    "chars": 205,
    "preview": "buildscript {\n\trepositories {\n\t\tmaven {\n\t\t\turl = 'https://repo.spring.io/libs-milestone'\n\t\t}\n\t}\n\n\tdependencies {\n\t\tclass"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/managing-dependencies/depend-on-plugin-release.gradle",
    "chars": 87,
    "preview": "plugins {\n\tid 'org.springframework.boot' version '{version-spring-boot}' apply false\n}\n"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/managing-dependencies/depend-on-plugin-release.gradle.kts",
    "chars": 88,
    "preview": "plugins {\n\tid(\"org.springframework.boot\") version \"{version-spring-boot}\" apply false\n}\n"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/managing-dependencies/depend-on-plugin-snapshot.gradle",
    "chars": 204,
    "preview": "buildscript {\n\trepositories {\n\t\tmaven {\n\t\t\turl = 'https://repo.spring.io/libs-snapshot'\n\t\t}\n\t}\n\n\tdependencies {\n\t\tclassp"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/managing-dependencies/dependencies.gradle",
    "chars": 340,
    "preview": "plugins {\n\tid 'java'\n\tid 'org.springframework.boot' version '{version-spring-boot}'\n}\n\napply plugin: 'io.spring.dependen"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/managing-dependencies/dependencies.gradle.kts",
    "chars": 338,
    "preview": "plugins {\n\tjava\n\tid(\"org.springframework.boot\") version \"{version-spring-boot}\"\n}\n\napply(plugin = \"io.spring.dependency-"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/packaging/application-plugin-main-class.gradle",
    "chars": 209,
    "preview": "plugins {\n\tid 'java'\n\tid 'application'\n\tid 'org.springframework.boot' version '{version-spring-boot}'\n}\n\n// tag::main-cl"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/packaging/application-plugin-main-class.gradle.kts",
    "chars": 203,
    "preview": "plugins {\n\tjava\n\tapplication\n\tid(\"org.springframework.boot\") version \"{version-spring-boot}\"\n}\n\n// tag::main-class[]\napp"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/packaging/boot-build-image-bind-caches.gradle",
    "chars": 771,
    "preview": "plugins {\n\tid 'java'\n\tid 'org.springframework.boot' version '{version-spring-boot}'\n}\n\ntasks.named(\"bootJar\") {\n\tmainCla"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/packaging/boot-build-image-bind-caches.gradle.kts",
    "chars": 898,
    "preview": "import org.springframework.boot.gradle.tasks.bundling.BootBuildImage\n\nplugins {\n\tjava\n\tid(\"org.springframework.boot\") ve"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/packaging/boot-build-image-builder.gradle",
    "chars": 477,
    "preview": "plugins {\n\tid 'java'\n\tid 'org.springframework.boot' version '{version-spring-boot}'\n}\n\ntasks.named(\"bootJar\") {\n\tmainCla"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/packaging/boot-build-image-builder.gradle.kts",
    "chars": 697,
    "preview": "import org.springframework.boot.gradle.tasks.bundling.BootJar\nimport org.springframework.boot.gradle.tasks.bundling.Boot"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/packaging/boot-build-image-buildpacks.gradle",
    "chars": 400,
    "preview": "plugins {\n\tid 'java'\n\tid 'org.springframework.boot' version '{version-spring-boot}'\n}\n\n// tag::buildpacks[]\ntasks.named("
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/packaging/boot-build-image-buildpacks.gradle.kts",
    "chars": 527,
    "preview": "import org.springframework.boot.gradle.tasks.bundling.BootBuildImage\n\nplugins {\n\tjava\n\tid(\"org.springframework.boot\") ve"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/packaging/boot-build-image-caches.gradle",
    "chars": 591,
    "preview": "plugins {\n\tid 'java'\n\tid 'org.springframework.boot' version '{version-spring-boot}'\n}\n\ntasks.named(\"bootJar\") {\n\tmainCla"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/packaging/boot-build-image-caches.gradle.kts",
    "chars": 681,
    "preview": "import org.springframework.boot.gradle.tasks.bundling.BootBuildImage\n\nplugins {\n\tjava\n\tid(\"org.springframework.boot\") ve"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/packaging/boot-build-image-docker-auth-token.gradle",
    "chars": 455,
    "preview": "plugins {\n\tid 'java'\n\tid 'org.springframework.boot' version '{version-spring-boot}'\n}\n\ntasks.named(\"bootJar\") {\n\tmainCla"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/packaging/boot-build-image-docker-auth-token.gradle.kts",
    "chars": 643,
    "preview": "import org.springframework.boot.gradle.tasks.bundling.BootJar\nimport org.springframework.boot.gradle.tasks.bundling.Boot"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/packaging/boot-build-image-docker-auth-user.gradle",
    "chars": 780,
    "preview": "plugins {\n\tid 'java'\n\tid 'org.springframework.boot' version '{version-spring-boot}'\n}\n\ntasks.named(\"bootJar\") {\n\tmainCla"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/packaging/boot-build-image-docker-auth-user.gradle.kts",
    "chars": 1064,
    "preview": "import org.springframework.boot.gradle.tasks.bundling.BootJar\nimport org.springframework.boot.gradle.tasks.bundling.Boot"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/packaging/boot-build-image-docker-host-colima.gradle",
    "chars": 442,
    "preview": "plugins {\n\tid 'java'\n\tid 'org.springframework.boot' version '{version-spring-boot}'\n}\n\ntasks.named(\"bootJar\") {\n\tmainCla"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/packaging/boot-build-image-docker-host-colima.gradle.kts",
    "chars": 631,
    "preview": "import org.springframework.boot.gradle.tasks.bundling.BootJar\nimport org.springframework.boot.gradle.tasks.bundling.Boot"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/packaging/boot-build-image-docker-host-podman.gradle",
    "chars": 535,
    "preview": "plugins {\n\tid 'java'\n\tid 'org.springframework.boot' version '{version-spring-boot}'\n}\n\ntasks.named(\"bootJar\") {\n\tmainCla"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/packaging/boot-build-image-docker-host-podman.gradle.kts",
    "chars": 755,
    "preview": "import org.springframework.boot.gradle.tasks.bundling.BootJar\nimport org.springframework.boot.gradle.tasks.bundling.Boot"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/packaging/boot-build-image-docker-host.gradle",
    "chars": 606,
    "preview": "plugins {\n\tid 'java'\n\tid 'org.springframework.boot' version '{version-spring-boot}'\n}\n\ntasks.named(\"bootJar\") {\n\tmainCla"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/packaging/boot-build-image-docker-host.gradle.kts",
    "chars": 858,
    "preview": "import org.springframework.boot.gradle.tasks.bundling.BootJar\nimport org.springframework.boot.gradle.tasks.bundling.Boot"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/packaging/boot-build-image-env-proxy.gradle",
    "chars": 408,
    "preview": "plugins {\n\tid 'java'\n\tid 'org.springframework.boot' version '{version-spring-boot}'\n}\n\n// tag::env[]\ntasks.named(\"bootBu"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/packaging/boot-build-image-env-proxy.gradle.kts",
    "chars": 544,
    "preview": "import org.springframework.boot.gradle.tasks.bundling.BootBuildImage\n\nplugins {\n\tjava\n\tid(\"org.springframework.boot\") ve"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/packaging/boot-build-image-env-runtime.gradle",
    "chars": 515,
    "preview": "plugins {\n\tid 'java'\n\tid 'org.springframework.boot' version '{version-spring-boot}'\n}\n\ntasks.named(\"bootJar\") {\n\tmainCla"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/packaging/boot-build-image-env-runtime.gradle.kts",
    "chars": 579,
    "preview": "import org.springframework.boot.gradle.tasks.bundling.BootBuildImage\n\nplugins {\n\tjava\n\tid(\"org.springframework.boot\") ve"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/packaging/boot-build-image-env.gradle",
    "chars": 332,
    "preview": "plugins {\n\tid 'java'\n\tid 'org.springframework.boot' version '{version-spring-boot}'\n}\n\n// tag::env[]\ntasks.named(\"bootBu"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/packaging/boot-build-image-env.gradle.kts",
    "chars": 463,
    "preview": "import org.springframework.boot.gradle.tasks.bundling.BootBuildImage\n\nplugins {\n\tjava\n\tid(\"org.springframework.boot\") ve"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/packaging/boot-build-image-name.gradle",
    "chars": 318,
    "preview": "plugins {\n\tid 'java'\n\tid 'org.springframework.boot' version '{version-spring-boot}'\n}\n\n// tag::image-name[]\ntasks.named("
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/packaging/boot-build-image-name.gradle.kts",
    "chars": 432,
    "preview": "import org.springframework.boot.gradle.tasks.bundling.BootBuildImage\n\nplugins {\n\tjava\n\tid(\"org.springframework.boot\") ve"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/packaging/boot-build-image-publish.gradle",
    "chars": 494,
    "preview": "plugins {\n\tid 'java'\n\tid 'org.springframework.boot' version '{version-spring-boot}'\n}\n\ntasks.named(\"bootJar\") {\n\tmainCla"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/packaging/boot-build-image-publish.gradle.kts",
    "chars": 688,
    "preview": "import org.springframework.boot.gradle.tasks.bundling.BootJar\nimport org.springframework.boot.gradle.tasks.bundling.Boot"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/packaging/boot-jar-and-jar-classifiers.gradle",
    "chars": 301,
    "preview": "plugins {\n\tid 'java'\n\tid 'org.springframework.boot' version '{version-spring-boot}'\n}\n\n// tag::classifiers[]\ntasks.named"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/packaging/boot-jar-and-jar-classifiers.gradle.kts",
    "chars": 392,
    "preview": "import org.springframework.boot.gradle.tasks.bundling.BootJar\n\nplugins {\n\tjava\n\tid(\"org.springframework.boot\") version \""
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/packaging/boot-jar-layered-custom.gradle",
    "chars": 662,
    "preview": "plugins {\n\tid 'java'\n\tid 'org.springframework.boot' version '{version-spring-boot}'\n}\n\ntasks.named(\"bootJar\") {\n\tmainCla"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/packaging/boot-jar-layered-custom.gradle.kts",
    "chars": 753,
    "preview": "import org.springframework.boot.gradle.tasks.bundling.BootJar\n\nplugins {\n\tjava\n\tid(\"org.springframework.boot\") version \""
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/packaging/boot-jar-layered-disabled.gradle",
    "chars": 256,
    "preview": "plugins {\n\tid 'java'\n\tid 'org.springframework.boot' version '{version-spring-boot}'\n}\n\ntasks.named(\"bootJar\") {\n\tmainCla"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/packaging/boot-jar-layered-disabled.gradle.kts",
    "chars": 339,
    "preview": "import org.springframework.boot.gradle.tasks.bundling.BootJar\n\nplugins {\n\tjava\n\tid(\"org.springframework.boot\") version \""
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/packaging/boot-jar-layered-exclude-tools.gradle",
    "chars": 246,
    "preview": "plugins {\n\tid 'java'\n\tid 'org.springframework.boot' version '{version-spring-boot}'\n}\n\ntasks.named(\"bootJar\") {\n\tmainCla"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/packaging/boot-jar-layered-exclude-tools.gradle.kts",
    "chars": 329,
    "preview": "import org.springframework.boot.gradle.tasks.bundling.BootJar\n\nplugins {\n\tjava\n\tid(\"org.springframework.boot\") version \""
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/packaging/boot-jar-main-class.gradle",
    "chars": 202,
    "preview": "plugins {\n\tid 'java'\n\tid 'org.springframework.boot' version '{version-spring-boot}'\n}\n\n// tag::main-class[]\ntasks.named("
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/packaging/boot-jar-main-class.gradle.kts",
    "chars": 273,
    "preview": "import org.springframework.boot.gradle.tasks.bundling.BootJar\n\nplugins {\n\tjava\n\tid(\"org.springframework.boot\") version \""
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/packaging/boot-jar-manifest-main-class.gradle",
    "chars": 232,
    "preview": "plugins {\n\tid 'java'\n\tid 'org.springframework.boot' version '{version-spring-boot}'\n}\n\n// tag::main-class[]\ntasks.named("
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/packaging/boot-jar-manifest-main-class.gradle.kts",
    "chars": 303,
    "preview": "import org.springframework.boot.gradle.tasks.bundling.BootJar\n\nplugins {\n\tjava\n\tid(\"org.springframework.boot\") version \""
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/packaging/boot-jar-requires-unpack.gradle",
    "chars": 382,
    "preview": "plugins {\n\tid 'java'\n\tid 'org.springframework.boot' version '{version-spring-boot}'\n}\n\nrepositories {\n\tmavenCentral()\n}\n"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/packaging/boot-jar-requires-unpack.gradle.kts",
    "chars": 463,
    "preview": "import org.springframework.boot.gradle.tasks.bundling.BootJar\n\nplugins {\n\tjava\n\tid(\"org.springframework.boot\") version \""
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/packaging/boot-war-include-devtools.gradle",
    "chars": 366,
    "preview": "plugins {\n\tid 'war'\n\tid 'org.springframework.boot' version '{version-spring-boot}'\n}\n\ntasks.named(\"bootWar\") {\n\tmainClas"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/packaging/boot-war-include-devtools.gradle.kts",
    "chars": 453,
    "preview": "import org.springframework.boot.gradle.tasks.bundling.BootWar\n\nplugins {\n\twar\n\tid(\"org.springframework.boot\") version \"{"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/packaging/boot-war-properties-launcher.gradle",
    "chars": 349,
    "preview": "plugins {\n\tid 'war'\n\tid 'org.springframework.boot' version '{version-spring-boot}'\n}\n\ntasks.named(\"bootWar\") {\n\tmainClas"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/packaging/boot-war-properties-launcher.gradle.kts",
    "chars": 432,
    "preview": "import org.springframework.boot.gradle.tasks.bundling.BootWar\n\nplugins {\n\twar\n\tid(\"org.springframework.boot\") version \"{"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/packaging/only-boot-jar.gradle",
    "chars": 238,
    "preview": "plugins {\n\tid 'java'\n\tid 'org.springframework.boot' version '{version-spring-boot}'\n}\n\n// tag::disable-jar[]\ntasks.named"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/packaging/only-boot-jar.gradle.kts",
    "chars": 314,
    "preview": "import org.springframework.boot.gradle.tasks.bundling.BootJar\n\nplugins {\n\tjava\n\tid(\"org.springframework.boot\") version \""
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/packaging/spring-boot-dsl-main-class.gradle",
    "chars": 190,
    "preview": "plugins {\n\tid 'java'\n\tid 'org.springframework.boot' version '{version-spring-boot}'\n}\n\n// tag::main-class[]\nspringBoot {"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/packaging/spring-boot-dsl-main-class.gradle.kts",
    "chars": 189,
    "preview": "plugins {\n\tjava\n\tid(\"org.springframework.boot\") version \"{version-spring-boot}\"\n}\n\n// tag::main-class[]\nspringBoot {\n\tma"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/packaging/war-container-dependency.gradle",
    "chars": 349,
    "preview": "plugins {\n\tid 'war'\n\tid 'org.springframework.boot' version '{version-spring-boot}'\n}\n\napply plugin: 'io.spring.dependenc"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/packaging/war-container-dependency.gradle.kts",
    "chars": 344,
    "preview": "plugins {\n\twar\n\tid(\"org.springframework.boot\") version \"{version-spring-boot}\"\n}\n\napply(plugin = \"io.spring.dependency-m"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/publishing/maven-publish.gradle",
    "chars": 469,
    "preview": "plugins {\n\tid 'java'\n\tid 'maven-publish'\n\tid 'org.springframework.boot' version '{version-spring-boot}'\n}\n\n// tag::publi"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/publishing/maven-publish.gradle.kts",
    "chars": 521,
    "preview": "plugins {\n\tjava\n\t`maven-publish`\n\tid(\"org.springframework.boot\") version \"{version-spring-boot}\"\n}\n\n// tag::publishing[]"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/running/application-plugin-main-class-name.gradle",
    "chars": 210,
    "preview": "plugins {\n\tid 'java'\n\tid 'application'\n\tid 'org.springframework.boot' version '{version-spring-boot}'\n}\n\n// tag::main-cl"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/running/application-plugin-main-class-name.gradle.kts",
    "chars": 203,
    "preview": "plugins {\n\tjava\n\tapplication\n\tid(\"org.springframework.boot\") version \"{version-spring-boot}\"\n}\n\n// tag::main-class[]\napp"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/running/boot-run-disable-optimized-launch.gradle",
    "chars": 265,
    "preview": "plugins {\n\tid 'java'\n\tid 'org.springframework.boot' version '{version-spring-boot}'\n}\n\n// tag::launch[]\ntasks.named(\"boo"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/running/boot-run-disable-optimized-launch.gradle.kts",
    "chars": 360,
    "preview": "import org.springframework.boot.gradle.tasks.run.BootRun\n\nplugins {\n\tjava\n\tid(\"org.springframework.boot\") version \"{vers"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/running/boot-run-main.gradle",
    "chars": 274,
    "preview": "plugins {\n\tid 'java'\n\tid 'org.springframework.boot' version '{version-spring-boot}'\n}\n\n// tag::main[]\ntasks.named(\"bootR"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/running/boot-run-main.gradle.kts",
    "chars": 375,
    "preview": "import org.springframework.boot.gradle.tasks.run.BootRun\n\nplugins {\n\tjava\n\tid(\"org.springframework.boot\") version \"{vers"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/running/boot-run-source-resources.gradle",
    "chars": 291,
    "preview": "plugins {\n\tid 'java'\n\tid 'org.springframework.boot' version '{version-spring-boot}'\n}\n\n// tag::source-resources[]\ntasks."
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/running/boot-run-source-resources.gradle.kts",
    "chars": 387,
    "preview": "import org.springframework.boot.gradle.tasks.run.BootRun\n\nplugins {\n\tjava\n\tid(\"org.springframework.boot\") version \"{vers"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/running/boot-run-system-property.gradle",
    "chars": 361,
    "preview": "plugins {\n\tid 'java'\n\tid 'org.springframework.boot' version '{version}'\n}\n\n// tag::system-property[]\ntasks.named(\"bootRu"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/running/boot-run-system-property.gradle.kts",
    "chars": 457,
    "preview": "import org.springframework.boot.gradle.tasks.run.BootRun\n\nplugins {\n\tjava\n\tid(\"org.springframework.boot\") version \"{vers"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/running/spring-boot-dsl-main-class-name.gradle",
    "chars": 208,
    "preview": "plugins {\n\tid 'java'\n\tid 'application'\n\tid 'org.springframework.boot' version '{version-spring-boot}'\n}\n\n// tag::main-cl"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/examples/running/spring-boot-dsl-main-class-name.gradle.kts",
    "chars": 202,
    "preview": "plugins {\n\tjava\n\tapplication\n\tid(\"org.springframework.boot\") version \"{version-spring-boot}\"\n}\n\n// tag::main-class[]\nspr"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/pages/aot.adoc",
    "chars": 3008,
    "preview": "[[aot]]\n= Ahead-of-Time Processing\n\nSpring AOT is a process that analyzes your code at build-time in order to generate a"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/pages/getting-started.adoc",
    "chars": 4936,
    "preview": "[[getting-started]]\n= Getting Started\n\nTo get started with the plugin it needs to be applied to your project.\n\nifeval::["
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/pages/index.adoc",
    "chars": 548,
    "preview": "[[gradle-plugin]]\n= Gradle Plugin\n\nThe Spring Boot Gradle Plugin provides Spring Boot support in https://gradle.org[Grad"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/pages/integrating-with-actuator.adoc",
    "chars": 3497,
    "preview": "[[integrating-with-actuator]]\n= Integrating with Actuator\n\n\n\n[[integrating-with-actuator.build-info]]\n== Generating Buil"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/pages/introduction.adoc",
    "chars": 546,
    "preview": "[[introduction]]\n= Introduction\n\nThe Spring Boot Gradle Plugin provides Spring Boot support in https://gradle.org[Gradle"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/pages/managing-dependencies.adoc",
    "chars": 8810,
    "preview": "[[managing-dependencies]]\n= Managing Dependencies\n\nTo manage dependencies in your Spring Boot application, you can eithe"
  },
  {
    "path": "build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/pages/packaging-oci-image.adoc",
    "chars": 26660,
    "preview": "[[build-image]]\n= Packaging OCI Images\n\nThe plugin can create an https://github.com/opencontainers/image-spec[OCI image]"
  }
]

// ... and 11393 more files (download for full content)

About this extraction

This page contains the full source code of the spring-projects/spring-boot GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 11593 files (35.9 MB), approximately 10.4M tokens, and a symbol index with 67400 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!