使用 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.