From 4dea9c55a402515f264363f7152e9382a2553f69 Mon Sep 17 00:00:00 2001 From: buxue Date: Thu, 22 Jan 2026 11:05:12 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E6=96=87=E4=BB=B6=E8=87=B3?= =?UTF-8?q?=E3=80=8C/=E3=80=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- HELP.md | 16 ++ demo-0.0.1-SNAPSHOT.jar.original | Bin 0 -> 16338 bytes mvnw | 295 +++++++++++++++++++++++++++++++ mvnw.cmd | 189 ++++++++++++++++++++ pom.xml | 78 ++++++++ 5 files changed, 578 insertions(+) create mode 100644 HELP.md create mode 100644 demo-0.0.1-SNAPSHOT.jar.original create mode 100644 mvnw create mode 100644 mvnw.cmd create mode 100644 pom.xml diff --git a/HELP.md b/HELP.md new file mode 100644 index 0000000..3a17d85 --- /dev/null +++ b/HELP.md @@ -0,0 +1,16 @@ +# Getting Started + +### Reference Documentation +For further reference, please consider the following sections: + +* [Official Apache Maven documentation](https://maven.apache.org/guides/index.html) +* [Spring Boot Maven Plugin Reference Guide](https://docs.spring.io/spring-boot/4.0.1/maven-plugin) +* [Create an OCI image](https://docs.spring.io/spring-boot/4.0.1/maven-plugin/build-image.html) + +### Maven Parent overrides + +Due to Maven's design, elements are inherited from the parent POM to the project POM. +While most of the inheritance is fine, it also inherits unwanted elements like `` and `` from the parent. +To prevent this, the project POM contains empty overrides for these elements. +If you manually switch to a different parent and actually want the inheritance, you need to remove those overrides. + diff --git a/demo-0.0.1-SNAPSHOT.jar.original b/demo-0.0.1-SNAPSHOT.jar.original new file mode 100644 index 0000000000000000000000000000000000000000..21a6d510301409883c75f40b2e63726b5d074978 GIT binary patch literal 16338 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 + echo "JAVA_HOME is set to \"$JAVA_HOME\", but \"\$JAVA_HOME/bin/java\" or \"\$JAVA_HOME/bin/javac\" does not exist." >&2 + return 1 + fi + fi + else + JAVACMD="$( + 'set' +e + 'unset' -f command 2>/dev/null + 'command' -v java + )" || : + JAVACCMD="$( + 'set' +e + 'unset' -f command 2>/dev/null + 'command' -v javac + )" || : + + if [ ! -x "${JAVACMD-}" ] || [ ! -x "${JAVACCMD-}" ]; then + echo "The java/javac command does not exist in PATH nor is JAVA_HOME set, so mvnw cannot run." >&2 + return 1 + fi + fi +} + +# hash string like Java String::hashCode +hash_string() { + str="${1:-}" h=0 + while [ -n "$str" ]; do + char="${str%"${str#?}"}" + h=$(((h * 31 + $(LC_CTYPE=C printf %d "'$char")) % 4294967296)) + str="${str#?}" + done + printf %x\\n $h +} + +verbose() { :; } +[ "${MVNW_VERBOSE-}" != true ] || verbose() { printf %s\\n "${1-}"; } + +die() { + printf %s\\n "$1" >&2 + exit 1 +} + +trim() { + # MWRAPPER-139: + # Trims trailing and leading whitespace, carriage returns, tabs, and linefeeds. + # Needed for removing poorly interpreted newline sequences when running in more + # exotic environments such as mingw bash on Windows. + printf "%s" "${1}" | tr -d '[:space:]' +} + +scriptDir="$(dirname "$0")" +scriptName="$(basename "$0")" + +# parse distributionUrl and optional distributionSha256Sum, requires .mvn/wrapper/maven-wrapper.properties +while IFS="=" read -r key value; do + case "${key-}" in + distributionUrl) distributionUrl=$(trim "${value-}") ;; + distributionSha256Sum) distributionSha256Sum=$(trim "${value-}") ;; + esac +done <"$scriptDir/.mvn/wrapper/maven-wrapper.properties" +[ -n "${distributionUrl-}" ] || die "cannot read distributionUrl property in $scriptDir/.mvn/wrapper/maven-wrapper.properties" + +case "${distributionUrl##*/}" in +maven-mvnd-*bin.*) + MVN_CMD=mvnd.sh _MVNW_REPO_PATTERN=/maven/mvnd/ + case "${PROCESSOR_ARCHITECTURE-}${PROCESSOR_ARCHITEW6432-}:$(uname -a)" in + *AMD64:CYGWIN* | *AMD64:MINGW*) distributionPlatform=windows-amd64 ;; + :Darwin*x86_64) distributionPlatform=darwin-amd64 ;; + :Darwin*arm64) distributionPlatform=darwin-aarch64 ;; + :Linux*x86_64*) distributionPlatform=linux-amd64 ;; + *) + echo "Cannot detect native platform for mvnd on $(uname)-$(uname -m), use pure java version" >&2 + distributionPlatform=linux-amd64 + ;; + esac + distributionUrl="${distributionUrl%-bin.*}-$distributionPlatform.zip" + ;; +maven-mvnd-*) MVN_CMD=mvnd.sh _MVNW_REPO_PATTERN=/maven/mvnd/ ;; +*) MVN_CMD="mvn${scriptName#mvnw}" _MVNW_REPO_PATTERN=/org/apache/maven/ ;; +esac + +# apply MVNW_REPOURL and calculate MAVEN_HOME +# maven home pattern: ~/.m2/wrapper/dists/{apache-maven-,maven-mvnd--}/ +[ -z "${MVNW_REPOURL-}" ] || distributionUrl="$MVNW_REPOURL$_MVNW_REPO_PATTERN${distributionUrl#*"$_MVNW_REPO_PATTERN"}" +distributionUrlName="${distributionUrl##*/}" +distributionUrlNameMain="${distributionUrlName%.*}" +distributionUrlNameMain="${distributionUrlNameMain%-bin}" +MAVEN_USER_HOME="${MAVEN_USER_HOME:-${HOME}/.m2}" +MAVEN_HOME="${MAVEN_USER_HOME}/wrapper/dists/${distributionUrlNameMain-}/$(hash_string "$distributionUrl")" + +exec_maven() { + unset MVNW_VERBOSE MVNW_USERNAME MVNW_PASSWORD MVNW_REPOURL || : + exec "$MAVEN_HOME/bin/$MVN_CMD" "$@" || die "cannot exec $MAVEN_HOME/bin/$MVN_CMD" +} + +if [ -d "$MAVEN_HOME" ]; then + verbose "found existing MAVEN_HOME at $MAVEN_HOME" + exec_maven "$@" +fi + +case "${distributionUrl-}" in +*?-bin.zip | *?maven-mvnd-?*-?*.zip) ;; +*) die "distributionUrl is not valid, must match *-bin.zip or maven-mvnd-*.zip, but found '${distributionUrl-}'" ;; +esac + +# prepare tmp dir +if TMP_DOWNLOAD_DIR="$(mktemp -d)" && [ -d "$TMP_DOWNLOAD_DIR" ]; then + clean() { rm -rf -- "$TMP_DOWNLOAD_DIR"; } + trap clean HUP INT TERM EXIT +else + die "cannot create temp dir" +fi + +mkdir -p -- "${MAVEN_HOME%/*}" + +# Download and Install Apache Maven +verbose "Couldn't find MAVEN_HOME, downloading and installing it ..." +verbose "Downloading from: $distributionUrl" +verbose "Downloading to: $TMP_DOWNLOAD_DIR/$distributionUrlName" + +# select .zip or .tar.gz +if ! command -v unzip >/dev/null; then + distributionUrl="${distributionUrl%.zip}.tar.gz" + distributionUrlName="${distributionUrl##*/}" +fi + +# verbose opt +__MVNW_QUIET_WGET=--quiet __MVNW_QUIET_CURL=--silent __MVNW_QUIET_UNZIP=-q __MVNW_QUIET_TAR='' +[ "${MVNW_VERBOSE-}" != true ] || __MVNW_QUIET_WGET='' __MVNW_QUIET_CURL='' __MVNW_QUIET_UNZIP='' __MVNW_QUIET_TAR=v + +# normalize http auth +case "${MVNW_PASSWORD:+has-password}" in +'') MVNW_USERNAME='' MVNW_PASSWORD='' ;; +has-password) [ -n "${MVNW_USERNAME-}" ] || MVNW_USERNAME='' MVNW_PASSWORD='' ;; +esac + +if [ -z "${MVNW_USERNAME-}" ] && command -v wget >/dev/null; then + verbose "Found wget ... using wget" + wget ${__MVNW_QUIET_WGET:+"$__MVNW_QUIET_WGET"} "$distributionUrl" -O "$TMP_DOWNLOAD_DIR/$distributionUrlName" || die "wget: Failed to fetch $distributionUrl" +elif [ -z "${MVNW_USERNAME-}" ] && command -v curl >/dev/null; then + verbose "Found curl ... using curl" + curl ${__MVNW_QUIET_CURL:+"$__MVNW_QUIET_CURL"} -f -L -o "$TMP_DOWNLOAD_DIR/$distributionUrlName" "$distributionUrl" || die "curl: Failed to fetch $distributionUrl" +elif set_java_home; then + verbose "Falling back to use Java to download" + javaSource="$TMP_DOWNLOAD_DIR/Downloader.java" + targetZip="$TMP_DOWNLOAD_DIR/$distributionUrlName" + cat >"$javaSource" <<-END + public class Downloader extends java.net.Authenticator + { + protected java.net.PasswordAuthentication getPasswordAuthentication() + { + return new java.net.PasswordAuthentication( System.getenv( "MVNW_USERNAME" ), System.getenv( "MVNW_PASSWORD" ).toCharArray() ); + } + public static void main( String[] args ) throws Exception + { + setDefault( new Downloader() ); + java.nio.file.Files.copy( java.net.URI.create( args[0] ).toURL().openStream(), java.nio.file.Paths.get( args[1] ).toAbsolutePath().normalize() ); + } + } + END + # For Cygwin/MinGW, switch paths to Windows format before running javac and java + verbose " - Compiling Downloader.java ..." + "$(native_path "$JAVACCMD")" "$(native_path "$javaSource")" || die "Failed to compile Downloader.java" + verbose " - Running Downloader.java ..." + "$(native_path "$JAVACMD")" -cp "$(native_path "$TMP_DOWNLOAD_DIR")" Downloader "$distributionUrl" "$(native_path "$targetZip")" +fi + +# If specified, validate the SHA-256 sum of the Maven distribution zip file +if [ -n "${distributionSha256Sum-}" ]; then + distributionSha256Result=false + if [ "$MVN_CMD" = mvnd.sh ]; then + echo "Checksum validation is not supported for maven-mvnd." >&2 + echo "Please disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties." >&2 + exit 1 + elif command -v sha256sum >/dev/null; then + if echo "$distributionSha256Sum $TMP_DOWNLOAD_DIR/$distributionUrlName" | sha256sum -c - >/dev/null 2>&1; then + distributionSha256Result=true + fi + elif command -v shasum >/dev/null; then + if echo "$distributionSha256Sum $TMP_DOWNLOAD_DIR/$distributionUrlName" | shasum -a 256 -c >/dev/null 2>&1; then + distributionSha256Result=true + fi + else + echo "Checksum validation was requested but neither 'sha256sum' or 'shasum' are available." >&2 + echo "Please install either command, or disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties." >&2 + exit 1 + fi + if [ $distributionSha256Result = false ]; then + echo "Error: Failed to validate Maven distribution SHA-256, your Maven distribution might be compromised." >&2 + echo "If you updated your Maven version, you need to update the specified distributionSha256Sum property." >&2 + exit 1 + fi +fi + +# unzip and move +if command -v unzip >/dev/null; then + unzip ${__MVNW_QUIET_UNZIP:+"$__MVNW_QUIET_UNZIP"} "$TMP_DOWNLOAD_DIR/$distributionUrlName" -d "$TMP_DOWNLOAD_DIR" || die "failed to unzip" +else + tar xzf${__MVNW_QUIET_TAR:+"$__MVNW_QUIET_TAR"} "$TMP_DOWNLOAD_DIR/$distributionUrlName" -C "$TMP_DOWNLOAD_DIR" || die "failed to untar" +fi + +# Find the actual extracted directory name (handles snapshots where filename != directory name) +actualDistributionDir="" + +# First try the expected directory name (for regular distributions) +if [ -d "$TMP_DOWNLOAD_DIR/$distributionUrlNameMain" ]; then + if [ -f "$TMP_DOWNLOAD_DIR/$distributionUrlNameMain/bin/$MVN_CMD" ]; then + actualDistributionDir="$distributionUrlNameMain" + fi +fi + +# If not found, search for any directory with the Maven executable (for snapshots) +if [ -z "$actualDistributionDir" ]; then + # enable globbing to iterate over items + set +f + for dir in "$TMP_DOWNLOAD_DIR"/*; do + if [ -d "$dir" ]; then + if [ -f "$dir/bin/$MVN_CMD" ]; then + actualDistributionDir="$(basename "$dir")" + break + fi + fi + done + set -f +fi + +if [ -z "$actualDistributionDir" ]; then + verbose "Contents of $TMP_DOWNLOAD_DIR:" + verbose "$(ls -la "$TMP_DOWNLOAD_DIR")" + die "Could not find Maven distribution directory in extracted archive" +fi + +verbose "Found extracted Maven distribution directory: $actualDistributionDir" +printf %s\\n "$distributionUrl" >"$TMP_DOWNLOAD_DIR/$actualDistributionDir/mvnw.url" +mv -- "$TMP_DOWNLOAD_DIR/$actualDistributionDir" "$MAVEN_HOME" || [ -d "$MAVEN_HOME" ] || die "fail to move MAVEN_HOME" + +clean || : +exec_maven "$@" diff --git a/mvnw.cmd b/mvnw.cmd new file mode 100644 index 0000000..92450f9 --- /dev/null +++ b/mvnw.cmd @@ -0,0 +1,189 @@ +<# : batch portion +@REM ---------------------------------------------------------------------------- +@REM Licensed to the Apache Software Foundation (ASF) under one +@REM or more contributor license agreements. See the NOTICE file +@REM distributed with this work for additional information +@REM regarding copyright ownership. The ASF licenses this file +@REM to you under the Apache License, Version 2.0 (the +@REM "License"); you may not use this file except in compliance +@REM with the License. You may obtain a copy of the License at +@REM +@REM http://www.apache.org/licenses/LICENSE-2.0 +@REM +@REM Unless required by applicable law or agreed to in writing, +@REM software distributed under the License is distributed on an +@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +@REM KIND, either express or implied. See the License for the +@REM specific language governing permissions and limitations +@REM under the License. +@REM ---------------------------------------------------------------------------- + +@REM ---------------------------------------------------------------------------- +@REM Apache Maven Wrapper startup batch script, version 3.3.4 +@REM +@REM Optional ENV vars +@REM MVNW_REPOURL - repo url base for downloading maven distribution +@REM MVNW_USERNAME/MVNW_PASSWORD - user and password for downloading maven +@REM MVNW_VERBOSE - true: enable verbose log; others: silence the output +@REM ---------------------------------------------------------------------------- + +@IF "%__MVNW_ARG0_NAME__%"=="" (SET __MVNW_ARG0_NAME__=%~nx0) +@SET __MVNW_CMD__= +@SET __MVNW_ERROR__= +@SET __MVNW_PSMODULEP_SAVE=%PSModulePath% +@SET PSModulePath= +@FOR /F "usebackq tokens=1* delims==" %%A IN (`powershell -noprofile "& {$scriptDir='%~dp0'; $script='%__MVNW_ARG0_NAME__%'; icm -ScriptBlock ([Scriptblock]::Create((Get-Content -Raw '%~f0'))) -NoNewScope}"`) DO @( + IF "%%A"=="MVN_CMD" (set __MVNW_CMD__=%%B) ELSE IF "%%B"=="" (echo %%A) ELSE (echo %%A=%%B) +) +@SET PSModulePath=%__MVNW_PSMODULEP_SAVE% +@SET __MVNW_PSMODULEP_SAVE= +@SET __MVNW_ARG0_NAME__= +@SET MVNW_USERNAME= +@SET MVNW_PASSWORD= +@IF NOT "%__MVNW_CMD__%"=="" ("%__MVNW_CMD__%" %*) +@echo Cannot start maven from wrapper >&2 && exit /b 1 +@GOTO :EOF +: end batch / begin powershell #> + +$ErrorActionPreference = "Stop" +if ($env:MVNW_VERBOSE -eq "true") { + $VerbosePreference = "Continue" +} + +# calculate distributionUrl, requires .mvn/wrapper/maven-wrapper.properties +$distributionUrl = (Get-Content -Raw "$scriptDir/.mvn/wrapper/maven-wrapper.properties" | ConvertFrom-StringData).distributionUrl +if (!$distributionUrl) { + Write-Error "cannot read distributionUrl property in $scriptDir/.mvn/wrapper/maven-wrapper.properties" +} + +switch -wildcard -casesensitive ( $($distributionUrl -replace '^.*/','') ) { + "maven-mvnd-*" { + $USE_MVND = $true + $distributionUrl = $distributionUrl -replace '-bin\.[^.]*$',"-windows-amd64.zip" + $MVN_CMD = "mvnd.cmd" + break + } + default { + $USE_MVND = $false + $MVN_CMD = $script -replace '^mvnw','mvn' + break + } +} + +# apply MVNW_REPOURL and calculate MAVEN_HOME +# maven home pattern: ~/.m2/wrapper/dists/{apache-maven-,maven-mvnd--}/ +if ($env:MVNW_REPOURL) { + $MVNW_REPO_PATTERN = if ($USE_MVND -eq $False) { "/org/apache/maven/" } else { "/maven/mvnd/" } + $distributionUrl = "$env:MVNW_REPOURL$MVNW_REPO_PATTERN$($distributionUrl -replace "^.*$MVNW_REPO_PATTERN",'')" +} +$distributionUrlName = $distributionUrl -replace '^.*/','' +$distributionUrlNameMain = $distributionUrlName -replace '\.[^.]*$','' -replace '-bin$','' + +$MAVEN_M2_PATH = "$HOME/.m2" +if ($env:MAVEN_USER_HOME) { + $MAVEN_M2_PATH = "$env:MAVEN_USER_HOME" +} + +if (-not (Test-Path -Path $MAVEN_M2_PATH)) { + New-Item -Path $MAVEN_M2_PATH -ItemType Directory | Out-Null +} + +$MAVEN_WRAPPER_DISTS = $null +if ((Get-Item $MAVEN_M2_PATH).Target[0] -eq $null) { + $MAVEN_WRAPPER_DISTS = "$MAVEN_M2_PATH/wrapper/dists" +} else { + $MAVEN_WRAPPER_DISTS = (Get-Item $MAVEN_M2_PATH).Target[0] + "/wrapper/dists" +} + +$MAVEN_HOME_PARENT = "$MAVEN_WRAPPER_DISTS/$distributionUrlNameMain" +$MAVEN_HOME_NAME = ([System.Security.Cryptography.SHA256]::Create().ComputeHash([byte[]][char[]]$distributionUrl) | ForEach-Object {$_.ToString("x2")}) -join '' +$MAVEN_HOME = "$MAVEN_HOME_PARENT/$MAVEN_HOME_NAME" + +if (Test-Path -Path "$MAVEN_HOME" -PathType Container) { + Write-Verbose "found existing MAVEN_HOME at $MAVEN_HOME" + Write-Output "MVN_CMD=$MAVEN_HOME/bin/$MVN_CMD" + exit $? +} + +if (! $distributionUrlNameMain -or ($distributionUrlName -eq $distributionUrlNameMain)) { + Write-Error "distributionUrl is not valid, must end with *-bin.zip, but found $distributionUrl" +} + +# prepare tmp dir +$TMP_DOWNLOAD_DIR_HOLDER = New-TemporaryFile +$TMP_DOWNLOAD_DIR = New-Item -Itemtype Directory -Path "$TMP_DOWNLOAD_DIR_HOLDER.dir" +$TMP_DOWNLOAD_DIR_HOLDER.Delete() | Out-Null +trap { + if ($TMP_DOWNLOAD_DIR.Exists) { + try { Remove-Item $TMP_DOWNLOAD_DIR -Recurse -Force | Out-Null } + catch { Write-Warning "Cannot remove $TMP_DOWNLOAD_DIR" } + } +} + +New-Item -Itemtype Directory -Path "$MAVEN_HOME_PARENT" -Force | Out-Null + +# Download and Install Apache Maven +Write-Verbose "Couldn't find MAVEN_HOME, downloading and installing it ..." +Write-Verbose "Downloading from: $distributionUrl" +Write-Verbose "Downloading to: $TMP_DOWNLOAD_DIR/$distributionUrlName" + +$webclient = New-Object System.Net.WebClient +if ($env:MVNW_USERNAME -and $env:MVNW_PASSWORD) { + $webclient.Credentials = New-Object System.Net.NetworkCredential($env:MVNW_USERNAME, $env:MVNW_PASSWORD) +} +[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 +$webclient.DownloadFile($distributionUrl, "$TMP_DOWNLOAD_DIR/$distributionUrlName") | Out-Null + +# If specified, validate the SHA-256 sum of the Maven distribution zip file +$distributionSha256Sum = (Get-Content -Raw "$scriptDir/.mvn/wrapper/maven-wrapper.properties" | ConvertFrom-StringData).distributionSha256Sum +if ($distributionSha256Sum) { + if ($USE_MVND) { + Write-Error "Checksum validation is not supported for maven-mvnd. `nPlease disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties." + } + Import-Module $PSHOME\Modules\Microsoft.PowerShell.Utility -Function Get-FileHash + if ((Get-FileHash "$TMP_DOWNLOAD_DIR/$distributionUrlName" -Algorithm SHA256).Hash.ToLower() -ne $distributionSha256Sum) { + Write-Error "Error: Failed to validate Maven distribution SHA-256, your Maven distribution might be compromised. If you updated your Maven version, you need to update the specified distributionSha256Sum property." + } +} + +# unzip and move +Expand-Archive "$TMP_DOWNLOAD_DIR/$distributionUrlName" -DestinationPath "$TMP_DOWNLOAD_DIR" | Out-Null + +# Find the actual extracted directory name (handles snapshots where filename != directory name) +$actualDistributionDir = "" + +# First try the expected directory name (for regular distributions) +$expectedPath = Join-Path "$TMP_DOWNLOAD_DIR" "$distributionUrlNameMain" +$expectedMvnPath = Join-Path "$expectedPath" "bin/$MVN_CMD" +if ((Test-Path -Path $expectedPath -PathType Container) -and (Test-Path -Path $expectedMvnPath -PathType Leaf)) { + $actualDistributionDir = $distributionUrlNameMain +} + +# If not found, search for any directory with the Maven executable (for snapshots) +if (!$actualDistributionDir) { + Get-ChildItem -Path "$TMP_DOWNLOAD_DIR" -Directory | ForEach-Object { + $testPath = Join-Path $_.FullName "bin/$MVN_CMD" + if (Test-Path -Path $testPath -PathType Leaf) { + $actualDistributionDir = $_.Name + } + } +} + +if (!$actualDistributionDir) { + Write-Error "Could not find Maven distribution directory in extracted archive" +} + +Write-Verbose "Found extracted Maven distribution directory: $actualDistributionDir" +Rename-Item -Path "$TMP_DOWNLOAD_DIR/$actualDistributionDir" -NewName $MAVEN_HOME_NAME | Out-Null +try { + Move-Item -Path "$TMP_DOWNLOAD_DIR/$MAVEN_HOME_NAME" -Destination $MAVEN_HOME_PARENT | Out-Null +} catch { + if (! (Test-Path -Path "$MAVEN_HOME" -PathType Container)) { + Write-Error "fail to move MAVEN_HOME" + } +} finally { + try { Remove-Item $TMP_DOWNLOAD_DIR -Recurse -Force | Out-Null } + catch { Write-Warning "Cannot remove $TMP_DOWNLOAD_DIR" } +} + +Write-Output "MVN_CMD=$MAVEN_HOME/bin/$MVN_CMD" diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..dc48fe5 --- /dev/null +++ b/pom.xml @@ -0,0 +1,78 @@ + + + 4.0.0 + + org.springframework.boot + spring-boot-starter-parent + 4.0.1 + + + com.example + demo + 0.0.1-SNAPSHOT + demo + demo + + + + + + + + + + + + + + + 21 + + + + com.hengspire + hengspire-common + 0.0.1-SNAPSHOT + + + + org.springframework.boot + spring-boot-starter-web + + + + org.springframework.boot + spring-boot-starter-test + test + + + org.projectlombok + lombok + true + + + + org.springframework.boot + spring-boot-starter-validation + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + org.projectlombok + lombok + + + + + + + +