使用 Maven 執行您的應用程式

該外掛包含一個 `run` 目標,可用於從命令列啟動應用程式,如以下示例所示

$ mvn spring-boot:run

應用程式引數可以使用 `arguments` 引數指定,詳情請參閱使用應用程式引數

應用程式在單獨的程序中執行,在命令列上設定屬性不會影響應用程式。如果需要指定一些 JVM 引數(例如用於除錯目的),可以使用 `jvmArguments` 引數,詳情請參閱除錯應用程式。還有對系統屬性環境變數的顯式支援。

由於啟用配置檔案非常常見,因此有一個專門的 `profiles` 屬性,它提供了 `Dspring-boot.run.jvmArguments="-Dspring.profiles.active=dev"` 的快捷方式,詳情請參閱指定活動配置檔案

Spring Boot `devtools` 是一個模組,用於在開發 Spring Boot 應用程式時改善開發體驗。要啟用它,只需將以下依賴項新增到您的專案中

<dependencies>
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-devtools</artifactId>
		<optional>true</optional>
	</dependency>
</dependencies>

當 `devtools` 執行時,它會檢測到重新編譯應用程式時的更改並自動重新整理它。這不僅適用於資源,也適用於程式碼。它還提供了一個 LiveReload 伺服器,以便在發生更改時自動觸發瀏覽器重新整理。

Devtools 還可以配置為僅在靜態資源更改時重新整理瀏覽器(並忽略程式碼中的任何更改)。只需在您的專案中包含以下屬性

spring.devtools.remote.restart.enabled=false

在 `devtools` 之前,該外掛預設支援資源的即時重新整理,現在已停用,以支援上述解決方案。您可以隨時透過配置您的專案來恢復它

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<configuration>
					<addResources>true</addResources>
				</configuration>
			</plugin>
		</plugins>
	</build>

當啟用 `addResources` 時,任何 `src/main/resources` 目錄都將在您執行應用程式時新增到應用程式類路徑中,並且類輸出中發現的任何重複項都將被刪除。這允許資源的即時重新整理,這在開發 Web 應用程式時非常有用。例如,您可以處理 HTML、CSS 或 JavaScript 檔案,並立即檢視更改,而無需重新編譯應用程式。它也是一種幫助前端開發人員工作而無需下載和安裝 Java IDE 的有用方法。

使用此功能的副作用是構建時資源的過濾將不起作用。

為了與 `repackage` 目標保持一致,`run` 目標以這樣一種方式構建類路徑:外掛配置中排除的任何依賴項也從類路徑中排除。有關更多詳細資訊,請參閱專用示例

有時執行應用程式的測試變體很有用。例如,如果您想在開發時使用 Testcontainers 或使用一些測試存根。為此,請使用 `test-run` 目標,它具有與 `run` 許多相同的功能和配置選項。

`spring-boot:run`

org.springframework.boot:spring-boot-maven-plugin:4.0.0

就地執行應用程式。

所需引數

名稱 型別 預設值

classesDirectory

檔案

${project.build.outputDirectory}

可選引數

名稱 型別 預設值

addResources

布林值

additionalClasspathElements

String[]

agents

File[]

arguments

String[]

commandlineArguments

字串

environmentVariables

Map

excludeGroupIds

字串

excludes

List

includes

List

jvmArguments

字串

mainClass

字串

noverify

布林值

optimizedLaunch

布林值

true

profiles

String[]

skip

布林值

systemPropertyVariables

Map

useTestClasspath

布林值

workingDirectory

檔案

引數詳情

`addResources`

直接將 Maven 資源新增到類路徑中,這允許資源的即時就地編輯。從 `target/classes` 中刪除重複資源,以防止在呼叫 `ClassLoader.getResources()` 時它們出現兩次。請考慮將 `spring-boot-devtools` 新增到您的專案中,因為它提供了此功能以及更多功能。

名稱

addResources

型別

布林值

預設值

使用者屬性

spring-boot.run.addResources

1.0.0

`additionalClasspathElements`

應新增到類路徑的額外類路徑元素。一個元素可以是包含類和資源的目錄或一個 jar 檔案。

名稱

additionalClasspathElements

型別

java.lang.String[]

預設值

使用者屬性

spring-boot.run.additional-classpath-elements

3.2.0

`agents`

代理 jar 的路徑。

名稱

agents

型別

java.io.File[]

預設值

使用者屬性

spring-boot.run.agents

2.2.0

`arguments`

應傳遞給應用程式的引數。

名稱

arguments

型別

java.lang.String[]

預設值

使用者屬性

1.0.0

`classesDirectory`

包含應用於執行應用程式的類和資原始檔的目錄。

名稱

classesDirectory

型別

java.io.File

預設值

${project.build.outputDirectory}

使用者屬性

1.0.0

`commandlineArguments`

應傳遞給應用程式的命令列引數。使用空格分隔多個引數,並確保將多個值用引號括起來。指定時,優先於 `#arguments`。

名稱

commandlineArguments

型別

java.lang.String

預設值

使用者屬性

spring-boot.run.arguments

2.2.3

`environmentVariables`

應與用於執行應用程式的派生程序關聯的環境變數列表。

名稱

environmentVariables

型別

java.util.Map

預設值

使用者屬性

2.1.0

`excludeGroupIds`

要排除的 groupId 名稱的逗號分隔列表(精確匹配)。

名稱

excludeGroupIds

型別

java.lang.String

預設值

使用者屬性

spring-boot.excludeGroupIds

1.1.0

`excludes`

要排除的 artifact 定義集合。Exclude 元素定義了強制的 groupIdartifactId 元件以及可選的 classifier 元件。當配置為屬性時,值應以逗號分隔,元件以冒號分隔:groupId:artifactId,groupId:artifactId:classifier

名稱

excludes

型別

java.util.List

預設值

使用者屬性

spring-boot.excludes

1.1.0

`includes`

要包含的 artifact 定義集合。Include 元素定義了強制的 groupIdartifactId 元件以及可選的 classifier 元件。當配置為屬性時,值應以逗號分隔,元件以冒號分隔:groupId:artifactId,groupId:artifactId:classifier

名稱

includes

型別

java.util.List

預設值

使用者屬性

spring-boot.includes

1.2.0

`jvmArguments`

應與用於執行應用程式的派生程序關聯的 JVM 引數。在命令列上,請務必將多個值用引號括起來。

名稱

jvmArguments

型別

java.lang.String

預設值

使用者屬性

spring-boot.run.jvmArguments

1.1.0

`mainClass`

主類的名稱。如果未指定,將使用找到的第一個包含“main”方法的已編譯類。

名稱

mainClass

型別

java.lang.String

預設值

使用者屬性

spring-boot.run.main-class

1.0.0

`noverify`

指示代理需要 -noverify 的標誌。

名稱

noverify

型別

布林值

預設值

使用者屬性

spring-boot.run.noverify

1.0.0

`optimizedLaunch`

JVM 的啟動是否應該最佳化。

名稱

optimizedLaunch

型別

布林值

預設值

true

使用者屬性

spring-boot.run.optimizedLaunch

2.2.0

`profiles`

要啟用的 Spring 配置檔案。指定“spring.profiles.active”引數的便捷快捷方式。在命令列上,使用逗號分隔多個配置檔案。

名稱

profiles

型別

java.lang.String[]

預設值

使用者屬性

spring-boot.run.profiles

1.3.0

`skip`

跳過執行。

名稱

skip

型別

布林值

預設值

使用者屬性

spring-boot.run.skip

1.3.2

`systemPropertyVariables`

要傳遞給程序的 JVM 系統屬性列表。

名稱

systemPropertyVariables

型別

java.util.Map

預設值

使用者屬性

2.1.0

`useTestClasspath`

在執行時包含測試類路徑的標誌。

名稱

useTestClasspath

型別

布林值

預設值

使用者屬性

spring-boot.run.useTestClasspath

1.3.0

`workingDirectory`

應用程式當前的工作目錄。如果未指定,將使用 basedir。

名稱

workingDirectory

型別

java.io.File

預設值

使用者屬性

spring-boot.run.workingDirectory

1.5.0

`spring-boot:test-run`

org.springframework.boot:spring-boot-maven-plugin:4.0.0

使用測試執行時類路徑就地執行應用程式。用於啟動應用程式的主類確定如下:如果已配置主類,則使用該主類。然後,如果測試類目錄中存在主類,則使用該主類。然後,如果類目錄中存在主類,則使用該主類。

所需引數

名稱 型別 預設值

classesDirectory

檔案

${project.build.outputDirectory}

testClassesDirectory

檔案

${project.build.testOutputDirectory}

可選引數

名稱 型別 預設值

addResources

布林值

additionalClasspathElements

String[]

agents

File[]

arguments

String[]

commandlineArguments

字串

environmentVariables

Map

excludeGroupIds

字串

excludes

List

includes

List

jvmArguments

字串

mainClass

字串

noverify

布林值

optimizedLaunch

布林值

true

profiles

String[]

skip

布林值

systemPropertyVariables

Map

workingDirectory

檔案

引數詳情

`addResources`

直接將 Maven 資源新增到類路徑中,這允許資源的即時就地編輯。從 `target/classes` 中刪除重複資源,以防止在呼叫 `ClassLoader.getResources()` 時它們出現兩次。請考慮將 `spring-boot-devtools` 新增到您的專案中,因為它提供了此功能以及更多功能。

名稱

addResources

型別

布林值

預設值

使用者屬性

spring-boot.run.addResources

1.0.0

`additionalClasspathElements`

應新增到類路徑的額外類路徑元素。一個元素可以是包含類和資源的目錄或一個 jar 檔案。

名稱

additionalClasspathElements

型別

java.lang.String[]

預設值

使用者屬性

spring-boot.run.additional-classpath-elements

3.2.0

`agents`

代理 jar 的路徑。

名稱

agents

型別

java.io.File[]

預設值

使用者屬性

spring-boot.run.agents

2.2.0

`arguments`

應傳遞給應用程式的引數。

名稱

arguments

型別

java.lang.String[]

預設值

使用者屬性

1.0.0

`classesDirectory`

包含應用於執行應用程式的類和資原始檔的目錄。

名稱

classesDirectory

型別

java.io.File

預設值

${project.build.outputDirectory}

使用者屬性

1.0.0

`commandlineArguments`

應傳遞給應用程式的命令列引數。使用空格分隔多個引數,並確保將多個值用引號括起來。指定時,優先於 `#arguments`。

名稱

commandlineArguments

型別

java.lang.String

預設值

使用者屬性

spring-boot.run.arguments

2.2.3

`environmentVariables`

應與用於執行應用程式的派生程序關聯的環境變數列表。

名稱

environmentVariables

型別

java.util.Map

預設值

使用者屬性

2.1.0

`excludeGroupIds`

要排除的 groupId 名稱的逗號分隔列表(精確匹配)。

名稱

excludeGroupIds

型別

java.lang.String

預設值

使用者屬性

spring-boot.excludeGroupIds

1.1.0

`excludes`

要排除的 artifact 定義集合。Exclude 元素定義了強制的 groupIdartifactId 元件以及可選的 classifier 元件。當配置為屬性時,值應以逗號分隔,元件以冒號分隔:groupId:artifactId,groupId:artifactId:classifier

名稱

excludes

型別

java.util.List

預設值

使用者屬性

spring-boot.excludes

1.1.0

`includes`

要包含的 artifact 定義集合。Include 元素定義了強制的 groupIdartifactId 元件以及可選的 classifier 元件。當配置為屬性時,值應以逗號分隔,元件以冒號分隔:groupId:artifactId,groupId:artifactId:classifier

名稱

includes

型別

java.util.List

預設值

使用者屬性

spring-boot.includes

1.2.0

`jvmArguments`

應與用於執行應用程式的派生程序關聯的 JVM 引數。在命令列上,請務必將多個值用引號括起來。

名稱

jvmArguments

型別

java.lang.String

預設值

使用者屬性

spring-boot.run.jvmArguments

1.1.0

`mainClass`

主類的名稱。如果未指定,將使用找到的第一個包含“main”方法的已編譯類。

名稱

mainClass

型別

java.lang.String

預設值

使用者屬性

spring-boot.run.main-class

1.0.0

`noverify`

指示代理需要 -noverify 的標誌。

名稱

noverify

型別

布林值

預設值

使用者屬性

spring-boot.run.noverify

1.0.0

`optimizedLaunch`

JVM 的啟動是否應該最佳化。

名稱

optimizedLaunch

型別

布林值

預設值

true

使用者屬性

spring-boot.test-run.optimizedLaunch

`profiles`

要啟用的 Spring 配置檔案。指定“spring.profiles.active”引數的便捷快捷方式。在命令列上,使用逗號分隔多個配置檔案。

名稱

profiles

型別

java.lang.String[]

預設值

使用者屬性

spring-boot.run.profiles

1.3.0

`skip`

跳過執行。

名稱

skip

型別

布林值

預設值

使用者屬性

spring-boot.run.skip

1.3.2

`systemPropertyVariables`

要傳遞給程序的 JVM 系統屬性列表。

名稱

systemPropertyVariables

型別

java.util.Map

預設值

使用者屬性

2.1.0

`testClassesDirectory`

包含應用於執行應用程式的測試類和資原始檔的目錄。

名稱

testClassesDirectory

型別

java.io.File

預設值

${project.build.testOutputDirectory}

使用者屬性

`workingDirectory`

應用程式當前的工作目錄。如果未指定,將使用 basedir。

名稱

workingDirectory

型別

java.io.File

預設值

使用者屬性

spring-boot.run.workingDirectory

1.5.0

示例

除錯應用程式

`run` 和 `test-run` 目標在單獨的程序中執行您的應用程式。如果需要除錯它,您應該新增必要的 JVM 引數以啟用遠端除錯。以下配置將暫停程序,直到偵錯程式連線到埠 5005

<project>
	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<configuration>
					<jvmArguments>
						-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=*:5005
					</jvmArguments>
				</configuration>
			</plugin>
		</plugins>
	</build>
</project>

這些引數也可以在命令列上指定

$ mvn spring-boot:run -Dspring-boot.run.jvmArguments=-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=*:5005

使用系統屬性

系統屬性可以使用 `systemPropertyVariables` 屬性指定。以下示例將 `property1` 設定為 `test`,將 `property2` 設定為 42

<project>
	<build>
		<properties>
			<my.value>42</my.value>
		</properties>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<configuration>
					<systemPropertyVariables>
						<property1>test</property1>
						<property2>${my.value}</property2>
					</systemPropertyVariables>
				</configuration>
			</plugin>
		</plugins>
	</build>
</project>

如果值為**空**或**未定義**(即 `<my-property/`>),則系統屬性將設定為空字串作為值。Maven 會修剪 pom 中指定的值,因此無法透過此機制指定需要以空格開頭或結尾的系統屬性:考慮使用 `jvmArguments` 代替。

任何字串型別的 Maven 變數都可以作為系統屬性傳遞。任何嘗試傳遞任何其他 Maven 變數型別(例如 `List` 或 `URL` 變數)都將導致變量表達式按字面意義傳遞(未經評估)。

`jvmArguments` 引數優先於使用上述機制定義的系統屬性。在以下示例中,`property1` 的值為 `overridden`

$ mvn spring-boot:run -Dspring-boot.run.jvmArguments="-Dproperty1=overridden"

使用環境變數

環境變數可以使用 `environmentVariables` 屬性指定。以下示例設定了“ENV1”、“ENV2”、“ENV3”、“ENV4”環境變數

<project>
	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<configuration>
					<environmentVariables>
						<ENV1>5000</ENV1>
						<ENV2>Some Text</ENV2>
						<ENV3/>
						<ENV4></ENV4>
					</environmentVariables>
				</configuration>
			</plugin>
		</plugins>
	</build>
</project>

如果值為**空**或**未定義**(即 `<MY_ENV/`>),則環境變數將設定為空字串作為值。Maven 會修剪 pom 中指定的值,因此無法指定需要以空格開頭或結尾的環境變數。

任何字串型別的 Maven 變數都可以作為系統屬性傳遞。任何嘗試傳遞任何其他 Maven 變數型別(例如 `List` 或 `URL` 變數)都將導致變量表達式按字面意義傳遞(未經評估)。

以這種方式定義的環境變數優先於現有值。

使用應用程式引數

應用程式引數可以使用 `arguments` 屬性指定。以下示例設定了兩個引數:`property1` 和 `property2=42`

<project>
	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<configuration>
					<arguments>
						<argument>property1</argument>
						<argument>property2=${my.value}</argument>
					</arguments>
				</configuration>
			</plugin>
		</plugins>
	</build>
</project>

在命令列上,引數與 `jvmArguments` 的方式相同,用空格分隔。如果引數包含空格,請務必用引號括起來。在以下示例中,有兩個引數可用:`property1` 和 `property2=Hello World`

$ mvn spring-boot:run -Dspring-boot.run.arguments="property1 'property2=Hello World'"

指定活動配置檔案

特定應用程式要使用的活動配置檔案可以使用 `profiles` 引數指定。

以下配置啟用 `local` 和 `dev` 配置檔案

<project>
	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<configuration>
					<profiles>
						<profile>local</profile>
						<profile>dev</profile>
					</profiles>
				</configuration>
			</plugin>
		</plugins>
	</build>
</project>

要啟用的配置檔案也可以在命令列上指定,請務必用逗號分隔,如以下示例所示

$ mvn spring-boot:run -Dspring-boot.run.profiles=local,dev
© . This site is unofficial and not affiliated with VMware.