commit 101ca8141761d15e866b386f7e84855fb39e9132 Author: Oliver Weyhmueller Date: Sun Jun 30 09:50:42 2024 +0200 chore: initial Commit diff --git a/.forgejo/workflows/release.yaml b/.forgejo/workflows/release.yaml new file mode 100644 index 0000000..a9c21f7 --- /dev/null +++ b/.forgejo/workflows/release.yaml @@ -0,0 +1,234 @@ +--- +name: release + +on: + push: + branches: + - main + +jobs: + release: + name: Release + runs-on: ubuntu-latest + if: ${{ !startsWith(github.event.head_commit.message, 'Release') }} + + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Set up Environment + run: | + apt update + apt install -y zip + mkdir -p /root/.jreleaser + mkdir -p /root/.m2 + touch /root/.jreleaser/config.properties + + - name: maven-settings-xml-action + uses: https://github.com/whelk-io/maven-settings-xml-action@v22 + with: + repositories: > + [ + { + "id": "maven-releases", + "name": "Releases", + "url": "https://nexus.w9r.dev/repository/maven-releases", + "releases": { + "enabled": "true", + "updatePolicy": "always", + "checksumPolicy": "warn" + }, + "snapshots": { + "enabled": "false", + "updatePolicy": "always", + "checksumPolicy": "fail" + } + }, + { + "id": "maven-snapshots", + "name": "Snapshots", + "url": "https://nexus.w9r.dev/repository/maven-snapshots", + "releases": { + "enabled": "false", + "updatePolicy": "always", + "checksumPolicy": "warn" + }, + "snapshots": { + "enabled": "true", + "updatePolicy": "always", + "checksumPolicy": "warn" + } + } + ] + servers: > + [ + { + "id": "maven-group", + "username": "${{ secrets.NEXUS_USERNAME }}", + "password": "${{ secrets.NEXUS_PASSWORD }}" + }, + { + "id": "maven-snapshots", + "username": "${{ secrets.NEXUS_USERNAME }}", + "password": "${{ secrets.NEXUS_PASSWORD }}" + }, + { + "id": "maven-releases", + "username": "${{ secrets.NEXUS_USERNAME }}", + "password": "${{ secrets.NEXUS_PASSWORD }}" + }, + { + "id": "vulnz", + "username": "${{ secrets.VULNZ_USERNAME }}", + "password": "${{ secrets.VULNZ_PASSWORD }}" + } + ] + mirrors: > + [ + { + "id": "maven-group", + "name": "central", + "mirrorOf": "*", + "url": "https://nexus.w9r.dev/repository/maven-group/" + } + ] + plugin_groups: > + [ + "org.sonarsource.scanner.maven" + ] + output_file: /root/.m2/settings.xml + + - name: Determine next version + uses: https://github.com/obfu5c8/action-svu@v1 + id: generate_next_version + with: + type: auto + force-increment: true + no-metadata: false + no-pre-release: false + no-build: false + strip-prefix: true + prefix: '' + suffix: '' + + - name: Install syft + uses: https://github.com/anchore/sbom-action/download-syft@v0 + id: install_syft + with: + syft-version: v1.18.1 + + - name: Set new version + run: | + NEW_VERSION=${{steps.generate_next_version.outputs.version}} + echo NEW_VERSION=$NEW_VERSION >> "$GITHUB_ENV" + echo "New version: $NEW_VERSION" + + - name: Cache Java and Maven software + uses: https://github.com/actions/cache@v4 + with: + path: ~/.sdkman + key: ${{ runner.os }}-sdkman + restore-keys: | + ${{ runner.os }}-sdkman + env: + ACTIONS_STEP_DEBUG: true + + - name: Cache local Maven repository + uses: https://github.com/actions/cache@v4 + with: + path: ~/.m2/repository + key: ${{ runner.os }}-maven + restore-keys: | + ${{ runner.os }}-maven + env: + ACTIONS_STEP_DEBUG: true + + - name: Install Java & Maven + uses: https://github.com/sdkman/sdkman-action@main + id: sdkman + + - name: Set Version + env: + MAVEN_USERNAME: ${{ secrets.NEXUS_USERNAME }} + MAVEN_CENTRAL_TOKEN: ${{ secrets.NEXUS_PASSWORD }} + MAVEN_GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }} + run: | + export GPG_TTY=$(tty) + git config user.name "${{ github.event.head_commit.committer.name }}" + git config user.email "${{ github.event.head_commit.committer.email }}" + mvn -B --file pom.xml versions:set -DnewVersion=${{ env.NEW_VERSION }} + + - name: Run JReleaser (Changelog) + uses: https://w9r.dev/actions/release-action@main + with: + arguments: changelog --debug + setup-java: false + continue-on-error: true + env: + JRELEASER_OUTPUT_DIRECTORY: target + JRELEASER_PROJECT_VERSION: ${{ env.NEW_VERSION }} + JRELEASER_GITEA_TOKEN: ${{ secrets.JRELEASER_GITEA_TOKEN }} + JRELEASER_GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }} + JRELEASER_GPG_PUBLIC_KEY: ${{ secrets.GPG_PUBLIC_KEY }} + JRELEASER_GPG_SECRET_KEY: ${{ secrets.GPG_PRIVATE_KEY }} + + - name: Commit and push changes + run: | + git config user.name "${{ github.event.head_commit.committer.name }}" + git config user.email "${{ github.event.head_commit.committer.email }}" + git add pom.xml CHANGELOG.md + git commit -a -m "Release ${{ env.NEW_VERSION }}" + git push + - name: Build package and populate staging area for deployment + run: | + mvn -B --file pom.xml package + mvn --file pom.xml -Ppublication + + + - name: Run JReleaser (Assemble) + uses: https://w9r.dev/actions/release-action@main + with: + arguments: assemble --debug + setup-java: false + continue-on-error: true + env: + JRELEASER_OUTPUT_DIRECTORY: target + JRELEASER_PROJECT_VERSION: ${{ env.NEW_VERSION }} + JRELEASER_GITEA_TOKEN: ${{ secrets.JRELEASER_GITEA_TOKEN }} + JRELEASER_GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }} + JRELEASER_GPG_PUBLIC_KEY: ${{ secrets.GPG_PUBLIC_KEY }} + JRELEASER_GPG_SECRET_KEY: ${{ secrets.GPG_PRIVATE_KEY }} + + - name: Run JReleaser (Release) + uses: https://w9r.dev/actions/release-action@main + with: + arguments: release --debug + setup-java: false + env: + JRELEASER_OUTPUT_DIRECTORY: target + JRELEASER_PROJECT_VERSION: ${{ env.NEW_VERSION }} + JRELEASER_GITEA_TOKEN: ${{ secrets.JRELEASER_GITEA_TOKEN }} + JRELEASER_GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }} + JRELEASER_GPG_PUBLIC_KEY: ${{ secrets.GPG_PUBLIC_KEY }} + JRELEASER_GPG_SECRET_KEY: ${{ secrets.GPG_PRIVATE_KEY }} + JRELEASER_ARTIFACTORY_USERNAME: ${{ secrets.NEXUS_USERNAME }} + JRELEASER_ARTIFACTORY_TOKEN: ${{ secrets.NEXUS_PASSWORD }} + + + # Persist logs + + - name: JReleaser release trace + if: always() + uses: https://gitea.com/actions/upload-artifact@v3 + with: + name: jreleaser-trace + path: target/jreleaser/trace.log + + - name: JReleaser release properties + if: always() + uses: https://gitea.com/actions/upload-artifact@v3 + with: + name: jreleaser-properties + path: target/jreleaser/output.properties diff --git a/.forgejo/workflows/sonarqube.yaml b/.forgejo/workflows/sonarqube.yaml new file mode 100644 index 0000000..318936f --- /dev/null +++ b/.forgejo/workflows/sonarqube.yaml @@ -0,0 +1,142 @@ +--- +on: + push: + branches: + - main + pull_request: + types: [opened, synchronize, reopened] + +name: SonarQube Scan +jobs: + sonarqube: + name: SonarQube Trigger + runs-on: ubuntu-latest + steps: + - name: Checking out + uses: actions/checkout@v4 + with: + fetch-depth: 0 + - name: Set up Environment + run: | + apt update + apt install -y zip + mkdir -p /root/.jreleaser + mkdir -p /root/.m2 + touch /root/.jreleaser/config.properties + + - name: Install syft + uses: https://github.com/anchore/sbom-action/download-syft@v0 + id: install_syft + with: + syft-version: v1.18.1 + + - name: maven-settings-xml-action + uses: https://github.com/whelk-io/maven-settings-xml-action@v22 + with: + repositories: > + [ + { + "id": "maven-releases", + "name": "Releases", + "url": "https://nexus.w9r.dev/repository/maven-releases", + "releases": { + "enabled": "true", + "updatePolicy": "always", + "checksumPolicy": "warn" + }, + "snapshots": { + "enabled": "false", + "updatePolicy": "always", + "checksumPolicy": "fail" + } + }, + { + "id": "maven-snapshots", + "name": "Snapshots", + "url": "https://nexus.w9r.dev/repository/maven-snapshots", + "releases": { + "enabled": "false", + "updatePolicy": "always", + "checksumPolicy": "warn" + }, + "snapshots": { + "enabled": "true", + "updatePolicy": "always", + "checksumPolicy": "warn" + } + } + ] + servers: > + [ + { + "id": "maven-group", + "username": "${{ secrets.NEXUS_USERNAME }}", + "password": "${{ secrets.NEXUS_PASSWORD }}" + }, + { + "id": "maven-snapshots", + "username": "${{ secrets.NEXUS_USERNAME }}", + "password": "${{ secrets.NEXUS_PASSWORD }}" + }, + { + "id": "maven-releases", + "username": "${{ secrets.NEXUS_USERNAME }}", + "password": "${{ secrets.NEXUS_PASSWORD }}" + }, + { + "id": "vulnz", + "username": "${{ secrets.VULNZ_USERNAME }}", + "password": "${{ secrets.VULNZ_PASSWORD }}" + } + ] + mirrors: > + [ + { + "id": "maven-group", + "name": "central", + "mirrorOf": "*", + "url": "https://nexus.w9r.dev/repository/maven-group/" + } + ] + plugin_groups: > + [ + "org.sonarsource.scanner.maven" + ] + output_file: /root/.m2/settings.xml + + - name: Cache Java and Maven software + uses: https://github.com/actions/cache@v4 + with: + path: ~/.sdkman + key: ${{ runner.os }}-sdkman + restore-keys: | + ${{ runner.os }}-sdkman + env: + ACTIONS_STEP_DEBUG: true + + - name: Cache SonarQube packages + uses: https://github.com/actions/cache@v4 + with: + path: ~/.sonar/cache + key: ${{ runner.os }}-sonar + restore-keys: ${{ runner.os }}-sonar + + - name: Cache local Maven repository + uses: https://github.com/actions/cache@v4 + with: + path: ~/.m2/repository + key: ${{ runner.os }}-maven + restore-keys: | + ${{ runner.os }}-maven + env: + ACTIONS_STEP_DEBUG: true + + - name: Install Java & Maven + uses: https://github.com/sdkman/sdkman-action@main + id: sdkman + + - name: SonarQube Scan + env: + SONAR_TOKEN: ${{ secrets.SONARQUBE_TOKEN }} + SONAR_HOST_URL: ${{ vars.SONARQUBE_HOST }} + run: mvn -B verify org.sonarsource.scanner.maven:sonar-maven-plugin:sonar diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..766d5e3 --- /dev/null +++ b/.gitignore @@ -0,0 +1,19 @@ +### Maven template +target/ +pom.xml.tag +pom.xml.releaseBackup +pom.xml.versionsBackup +pom.xml.next +release.properties +dependency-reduced-pom.xml +buildNumber.properties +.mvn/timing.properties +# https://github.com/takari/maven-wrapper#usage-without-binary-jar +.mvn/wrapper/maven-wrapper.jar + +# Eclipse m2e generated files +# Eclipse Core +.project +# JDT-specific (Eclipse Java Development Tools) +.classpath + diff --git a/.sdkmanrc b/.sdkmanrc new file mode 100644 index 0000000..cea8def --- /dev/null +++ b/.sdkmanrc @@ -0,0 +1,2 @@ +java=21.0.5-tem +maven=3.9.9 diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..8aa2645 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) [year] [fullname] + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..92b68e0 --- /dev/null +++ b/README.md @@ -0,0 +1,8 @@ +# Spring Boot Starter + +This project defines a common baseline for multiple Spring Boot projects in order to keep them up-to-date. This Project +handles: + +- Plugins used in the build process +- Basic Spring Boot Web dependencies +- Common dependencies for observability diff --git a/jreleaser.yml b/jreleaser.yml new file mode 100644 index 0000000..2889b92 --- /dev/null +++ b/jreleaser.yml @@ -0,0 +1,184 @@ +--- +project: + versionPattern: SEMVER + snapshot: + pattern: .*-SNAPSHOT + label: early-access + fullChangelog: true + description: Spring Boot Starter + longDescription: | + Spring Boot Starter for w9r projects + authors: + - Oliver Weyhmüller + tags: + - java + maintainers: + - 'oliver' + stereotype: NONE + license: MIT + inceptionYear: 2025 + links: + homepage: https://w9r.dev/pom/spring-boot-starter + documentation: https://w9r.dev/pom/spring-boot-starter/src/branch/main/README.md + license: https://spdx.org/licenses/MIT.html + vcsBrowser: https://w9r.dev/pom/spring-boot-starter + languages: + java: + groupId: dev.w9r.pom + artifactId: spring-boot-starter + version: "21" +signing: + active: ALWAYS + armored: true + verify: true + mode: MEMORY + files: true + artifacts: true + checksums: true + +assemble: + archive: + pom: + active: ALWAYS + exported: true + stereotype: NONE + platform: + replacements: + osx-x86_64: mac + aarch_64: aarch64 + x86_64: amd64 + linux_musl: alpine + archiveName: '{{projectName}}-{{projectVersion}}' + distributionType: JAVA_BINARY + formats: + - ZIP + - TAR_GZ + + fileSets: + - input: . # A set of files and directory to include. + includes: + - 'LICENSE' + - 'README.md' + - 'CHANGELOG.md' + - 'pom.xml' + +catalog: + sbom: + syft: + active: ALWAYS + distributions: true + files: true + pack: + enabled: false + name: '{{projectName}}-{{projectVersion}}-sboms' + formats: + - SPDX_JSON + - CYCLONEDX_JSON + - SYFT_JSON + - GITHUB_JSON + - TABLE + - TEXT +release: + gitea: + enabled: true + connectTimeout: 20 + readTimeout: 60 + owner: pom + name: dependencies + host: w9r.dev + username: releasebot + apiEndpoint: https://w9r.dev + tagName: "{{projectVersion}}" + overwrite: true + update: + enabled: false + sections: + - ASSETS + skipTag: false + skipRelease: false + sign: true + branch: main + uploadAssets: ALWAYS + files: true + artifacts: true + checksums: true + signatures: true + catalogs: true + draft: false + prerelease: + enabled: false + pattern: .*-SNAPSHOT + commitAuthor: + name: ReleaseBot + email: releasebot@w9r.dev + milestone: + close: true + name: '{{tagName}}' + issues: + enabled: true + comment: '🎉 This issue has been resolved in `{{tagName}}` ([Release Notes]({{releaseNotesUrl}}))' + applyMilestone: ALWAYS + label: + name: released + color: '#FF0000' + description: Issue has been released + issueTrackerUrl: https://w9r.dev/pom/spring-boot-starter/issues + changelog: + enabled: true + sort: DESC + links: true + skipMergeCommits: false + formatted: ALWAYS + preset: 'conventional-commits' + categoryTitleFormat: '### {{categoryTitle}}' + contributorsTitleFormat: '### Contributors' + content: | + {{changelogChanges}} + {{changelogContributors}} + append: + enabled: true + title: '## [{{tagName}}]' + target: 'CHANGELOG.md' + content: | + {{changelogTitle}} + {{changelogChanges}} + contributors: + enabled: false + + format: '- {{contributorName}} ({{contributorUsernameAsLink}})' + hide: + uncategorized: false + contributors: + - 'ReleaseBot' + - 'RenovateBot' + labelers: + - label: 'issue' + title: 'regex:fix:' + body: 'Fixes: ' + order: 1 + replacers: + - search: '\[chore\]\s' + replace: '' + - search: '/CVE-(\d{4})-(\d+)/g' + replace: 'https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-$1-$2' + +distributions: + pom: + artifacts: + - path: pom.xml +deploy: + maven: + artifactory: + pom: + active: ALWAYS + url: https://nexus.w9r.dev/repository/maven-releases + snapshotSupported: true + authorization: Basic + sign: false + checksums: true + sourceJar: false + javadocJar: false + verifyPom: true + applyMavenCentralRules: false + stagingRepositories: + - target/staging-deploy diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..7f33d85 --- /dev/null +++ b/pom.xml @@ -0,0 +1,659 @@ + + + 4.0.0 + dev.w9r.pom + spring-boot-starter + 0.0.1 + pom + spring-boot-starter + A POM consisting of general dependencies and build settings + https://w9r.dev/pom/spring-boot-starter + + + MIT + https://www.apache.org/licenses/LICENSE-2.0 + + + + + oliver + Oliver Weyhmüller + oliver@weyhmueller.de + + + + + https://w9r.dev/pom/spring-boot-starter + scm:git:https://w9r.dev/pom/spring-boot-starter + scm:git:https://w9r.dev/pom/spring-boot-starter + HEAD + + + + 21 + 1.9.25 + + ${java.version} + ${java.version} + UTF-8 + UTF-8 + @ + ${java.version} + + 3.4.1 + 2024.0.0 + + 3.13.0 + 3.1.2 + 2.9.1 + 5.0.0.4389 + 0.8.12 + 10.17.0 + 3.6.0 + 11.1.1 + 4.8.6.6 + 4.8.6 + 1.13.0 + + + + maven-releases + https://nexus.w9r.dev/repository/maven-releases + Releases + + true + always + warn + + + false + + + + maven-snapshots + https://nexus.w9r.dev/repository/maven-snapshots + Snapshots + + false + + + true + always + warn + + + + + + + dev.w9r.pom + dependencies + 0.1.0 + pom + import + + + org.springframework.cloud + spring-cloud-dependencies + ${spring-cloud.version} + pom + import + + + org.springframework.boot + spring-boot-dependencies + ${spring-boot.version} + pom + import + + + + + + dev.w9r.pom + dependencies + 0.1.0 + pom + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.boot + spring-boot-starter-actuator + + + org.springframework.boot + spring-boot-starter-cache + + + io.micrometer + micrometer-tracing-bridge-otel + + + io.zipkin.reporter2 + zipkin-reporter-brave + + + + org.springframework.boot + spring-boot-devtools + runtime + true + + + io.micrometer + micrometer-registry-prometheus + runtime + + + org.springframework.boot + spring-boot-configuration-processor + true + + + org.springframework.boot + spring-boot-starter-test + test + + + com.github.loki4j + loki-logback-appender + 1.4.0 + + + + + + + ${basedir}/src/main/resources + true + + **/application*.yml + **/application*.yaml + **/application*.properties + + + + ${basedir}/src/main/resources + + **/application*.yml + **/application*.yaml + **/application*.properties + + + + + + org.apache.maven.plugins + maven-deploy-plugin + ${plugin.maven-deploy.version} + + + org.jetbrains.kotlin + kotlin-maven-plugin + ${kotlin.version} + + ${java.version} + true + + + + compile + compile + + compile + + + + test-compile + test-compile + + test-compile + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.11.0 + + true + + + + org.apache.maven.plugins + maven-failsafe-plugin + 3.0.0 + + + + integration-test + verify + + + + + ${project.build.outputDirectory} + + + + org.apache.maven.plugins + maven-jar-plugin + 3.3.0 + + + + ${start-class} + true + + + + + + org.apache.maven.plugins + maven-war-plugin + 3.3.2 + + + + ${start-class} + true + + + + + + org.apache.maven.plugins + maven-resources-plugin + 3.3.1 + + ${project.build.sourceEncoding} + + ${resource.delimiter} + + false + + + + org.graalvm.buildtools + native-maven-plugin + 0.9.22 + true + + + io.github.git-commit-id + git-commit-id-maven-plugin + 9.0.0 + + + + revision + + + + + true + true + ${project.build.outputDirectory}/git.properties + + + + org.cyclonedx + cyclonedx-maven-plugin + ${cyclonedx-maven-plugin.version} + + + generate-resources + + makeAggregateBom + + + application + ${project.build.outputDirectory}/META-INF/sbom + json + application.cdx + + + + + + org.springframework.boot + spring-boot-maven-plugin + ${spring-boot.version} + + + repackage + + repackage + + + + + + + https://cr.w9r.dev/ + ${docker.registry.username} + ${docker.registry.password} + + + + + cr.w9r.dev/spring-boot/${project.artifactId}:${project.version} + true + + ${spring-boot.run.main-class} + + + + org.apache.maven.plugins + maven-checkstyle-plugin + ${plugin.checkstyle.version} + + + com.puppycrawl.tools + checkstyle + ${checkstyle.version} + + + + true + false + false + warning + ${project.build.directory}/checkstyle-result.xml + https://checkstyle.w9r.dev/checkstyle.xml + + + + com.github.spotbugs + spotbugs-maven-plugin + ${plugin.spotbugs.version} + + + + com.github.spotbugs + spotbugs + ${spotbugs.version} + + + + + + com.h3xstream.findsecbugs + findsecbugs-plugin + ${findsecbugs.version} + + + + + + org.owasp + dependency-check-maven + ${plugin.dependency-check.version} + + https://vulnz.w9r.de/nvd/nvdcve-{0}.json.gz + vulnz + HTML,XML,CSV,JSON,JUNIT,GITLAB + + + + + check + + + + + + org.jacoco + jacoco-maven-plugin + ${plugin.jacoco.version} + + + prepare-agent + + prepare-agent + + + + report + + report + + + + + + org.sonarsource.scanner.maven + sonar-maven-plugin + ${plugin.sonar.version} + + + org.apache.maven.plugins + maven-shade-plugin + 3.6.0 + + true + true + + + *:* + + META-INF/*.SF + META-INF/*.DSA + META-INF/*.RSA + + + + + + + org.springframework.boot + spring-boot-maven-plugin + ${spring-boot.version} + + + + + package + + shade + + + + + META-INF/spring.handlers + + + META-INF/spring.schemas + + + META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports + + + META-INF/spring/org.springframework.boot.actuate.autoconfigure.web.ManagementContextConfiguration.imports + + + META-INF/spring.factories + + + + ${start-class} + + true + + + + + + + + + + + + native + + + + + org.apache.maven.plugins + maven-jar-plugin + + + + true + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + dashaun/builder:tiny + + true + + + + + + process-aot + + process-aot + + + + + + org.graalvm.buildtools + native-maven-plugin + + ${project.build.outputDirectory} + 22.3 + + + + add-reachability-metadata + + add-reachability-metadata + + + + + + + + + + nativeTest + + + org.junit.platform + junit-platform-launcher + test + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + process-test-aot + + process-test-aot + + + + + + org.graalvm.buildtools + native-maven-plugin + + ${project.build.outputDirectory} + 22.3 + + + + native-test + + test + + + + + + + + + skipShadeAndCycloneDX + + + + org.apache.maven.plugins + maven-shade-plugin + + true + + + + org.cyclonedx + cyclonedx-maven-plugin + + true + + + + + + + publication + + local::file:./target/staging-deploy + + + deploy + + + org.apache.maven.plugins + maven-javadoc-plugin + + + attach-javadocs + + jar + + + true + + + + + + org.apache.maven.plugins + maven-source-plugin + + + attach-sources + + jar + + + true + + + + + + + + +