11.profiles
在Spring Boot的pom.xml文件中,可以为不同的环境配置不同的参数和依赖。这种配置方式通常称为“profiles”,它允许你定义不同的设置以适应不同的环境,比如开发、测试和生产环境。通过 profiles 的使用,你可以在构建项目时根据需要激活特定的配置,从而实现不同环境下的定制化配置。Profiles 提供了一种灵活的方式来管理项目的配置和依赖,使得应用能够适应不同的部署环境。
对于Spring Boot项目,您可以通过在pom.xml文件中使用元素来定义不同环境的配置文件。每个元素可以指定一个环境,并在其中设置特定的配置,例如:
<profiles>
<profile>
<id>dev</id>
<properties>
<spring.profiles.active>dev</spring.profiles.active>
</properties>
</profile>
<profile>
<id>prod</id>
<properties>
<spring.profiles.active>prod</spring.profiles.active>
</properties>
</profile>
</profiles>
在这里,我们定义了两个环境:dev和prod。每个profile可以指定特定的属性配置、依赖、插件配置和资源。
使用Maven命令时,您可以通过参数"-P"来激活不同的profile,这允许Spring Boot项目基于不同的profile进行多环境构建。这是实现不同环境隔离的重要方式,使得您可以方便地管理开发、测试和生产环境的配置。
12.pluginRepositories
插件仓库列表
<pluginRepositories>
<pluginRepository>
<id>spring-milestones</id>
<url>https://repo.spring.io/milestone</url>
</pluginRepository>
<pluginRepository>
<id>central</id>
<url>https://repo.maven.apache.org/maven2</url>
</pluginRepository>
</pluginRepositories>
此配置用于指定两个插件仓库,其中spring-milestones
插件仓库位于https://repo.spring.io/milestone
,而central
插件仓库位于https://repo.maven.apache.org/maven2
。这样配置的作用是告诉Maven构建系统在构建过程中从这些仓库中获取插件。
在SpringBoot项目的pom.xml文件中,元素用于配置访问Maven插件的仓库地址。与类似,也包含多个子元素,例如:
spring-milestones Spring Milestones https://repo.spring.io/milestone 这个配置添加了一个Spring Milestones仓库,用于下载Maven插件。它与的区别在于::用于依赖 jars 的仓库
:用于插件 jars 的仓库
一般需要配置的插件仓库包括:
Maven中央仓库:默认可用
Spring Milestones/Snapshot仓库:获取Spring插件
其他第三方库提供的插件仓库
通过,Maven可以从配置的仓库地址下载并使用插件。
对于SpringBoot项目,如果使用了Spring提供的自定义插件,则需要配置对应的Spring仓库地址,才能正确下载这些插件。所以它是启用Maven插件所必需的配置。
13.name
项目名称
在 pom.xml 文件中,<name>
元素用于定义项目的名称。通常这个名称会在构建时使用,例如在构建产物(比如 JAR 文件)的清单中。其主要作用是标识项目的名称,方便在构建和部署过程中进行识别和管理。
示例:
<name>My Awesome Spring Boot App</name>
14.description
项目简单描述
在pom.xml
文件中,<description>
元素用于提供项目的简要描述。这个描述可以包括项目的主要功能、特点或者是项目的概述信息。这样的描述通常会在构建工具或者仓库中展示,以便用户了解项目的基本信息。
示例:
<description>This is an amazing Spring Boot application that showcases various features of Spring framework.</description>
15.packaging
在 Spring Boot 项目的 pom.xml 文件中,<packaging>
元素用于定义项目的打包方式。默认情况下,它会出现在 pom.xml 的顶层元素中,通常设置为 “jar”,用于构建一个可执行的、包含所有依赖的 Fat JAR。
<packaging>jar</packaging>
这样的配置会将 Spring Boot 应用程序打包成一个可以直接执行的 JAR 文件。除了 “jar” 外,另外两种常见的打包方式还包括:
war
:将应用打包为一个 Web 应用的 WAR 文件。ear
:将应用打包为一个 Enterprise Archive (EAR) 文件。
Spring Boot 也支持这两种打包方式,但更常见的是使用 “jar” 进行打包。另外,如果要打成 WAR 包,则需要移除对 spring-boot-starter-tomcat
的依赖,而使用外置的 Tomcat 来运行 WAR 包。
总之,使用 <packaging>
元素指定为 “jar” 是 Spring Boot 项目的标准做法,可以构建出一个自包含、可执行的 JAR 包。
16.application
定义Spring Boot应用入口类名称
在 Spring Boot 项目的 pom.xml 文件中,并没有直接在该文件中定义应用程序的入口类名称。应用程序的入口类通常在项目的 Java 源代码中定义,通常是通过 @SpringBootApplication
注解标记的类。这个类会包含 main
方法,作为 Spring Boot 应用程序的入口点。
示例,在 Java 源代码中定义的入口类:
package com.example.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
在这个示例中,DemoApplication
类带有 @SpringBootApplication
注解,并且包含了 main
方法,因此它作为 Spring Boot 应用程序的入口类。
因此,在 pom.xml 文件中,并没有单独的元素来定义 Spring Boot 应用程序的入口类。
17.url
项目主页的URL, Maven产生的文档用。
在 Maven 的 pom.xml 文件中,<url>
元素用于指定项目主页的 URL。这个 URL 通常是指向项目的网站或者版本控制仓库。在 Maven 产生的文档中,这个 URL 通常会用于提供与项目相关的链接。
示例:
<url>http://example.com/project</url>
这个示例中,<url>
元素将项目主页的 URL 设置为 http://example.com/project。
18.modules
在 Spring Boot 多模块项目的 pom.xml 文件中,<modules>
元素用于定义该项目包含的各个子模块。这个元素出现在多模块项目的顶层父 pom.xml 文件中,包含各个子模块的名称。
示例:
<modules>
<module>spring-boot-module-A</module>
<module>spring-boot-module-B</module>
</modules>
在这个示例中,这个多模块项目包含了两个子模块:spring-boot-module-A
和 spring-boot-module-B
。每个子模块会有自己的 pom.xml 文件。
使用 <modules>
的好处包括:
- 一键构建整个项目。
- 统一依赖管理和版本控制。
- 代码重用和优化项目结构。
Spring Boot 多模块开发是很常见的实践,它有助于按功能或服务拆分工程,提高开发效率和维护性。因此,合理使用 <modules>
管理多模块是 Spring Boot 项目中的重要配置。
到这里关于SpringBoot中pom.xml配置详解 就全部更新完了,
发文不易 感谢各位猿同学三连
文末贴上完整的实例
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.test</groupId>
<artifactId>loon</artifactId>
<version>1.0-SNAPSHOT</version>
<parent>
<artifactId>spring-boot-dependencies</artifactId>
<groupId>org.springframework.boot</groupId>
<version>2.3.3.RELEASE</version>
</parent>
<!--统一编码和JAVA版本-->
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<java.version>1.8</java.version>
</properties>
<dependencies>
<!--MySQL 连接组件-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!--MyBaits-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.2</version>
</dependency>
<!--Druid-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.2.2</version>
</dependency>
<!-- Druid Spring Boot 组件-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.2.2</version>
</dependency>
<!--Spring Boot Aop-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
<!--Spring Validation-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
<!--Spring Boot 测试-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
<!--Junit-->
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<scope>test</scope>
</dependency>
<!--LomBok-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<!--Hutool-->
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.4.7</version>
</dependency>
<!--Spring Boot Web-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--Spring Boot Actuator-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.78</version>
</dependency>
<!--Junit测试-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<profiles>
<profile>
<id>dev</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<profilesActive>dev</profilesActive>
</properties>
</profile>
<profile>
<id>pro</id>
<properties>
<profilesActive>pro</profilesActive>
</properties>
</profile>
</profiles>
</project>