maven配置settings.xml 配置详解
----------------------------------------------------------------------------------------------
maven 配置详解
Maven 是 Java 项目的构建工具,其核心配置由
pom.xml(项目级配置) 和 settings.xml(全局 / 用户级配置) 组成。合理配置 Maven 能高效管理依赖、统一构建流程、优化仓库地址等。以下是详细解析:一、核心配置文件
pom.xml:每个 Maven 项目的根目录下必有,用于描述项目信息、依赖、构建规则等(项目级配置)。settings.xml:全局配置文件,默认位于{Maven安装目录}/conf/settings.xml;用户级配置位于~/.m2/settings.xml(优先级更高),用于配置仓库、代理、镜像等(全局生效)。
二、pom.xml 详解(项目级配置)
pom.xml 是 Maven 项目的核心,主要包含以下标签:1. 基础信息(project 根节点)
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">
<!-- POM 模型版本(固定为 4.0.0) -->
<modelVersion>4.0.0</modelVersion>
<!-- 项目坐标(GAV:唯一标识项目) -->
<groupId>com.example</groupId> <!-- 组织/公司标识(如域名反写) -->
<artifactId>demo-project</artifactId> <!-- 项目名/模块名 -->
<version>1.0.0-SNAPSHOT</version> <!-- 版本(SNAPSHOT:快照版,RELEASE:正式版) -->
<packaging>jar</packaging> <!-- 打包类型(jar/war/pom,默认 jar) -->
<name>Demo Project</name> <!-- 项目名称(可选) -->
<description>A simple Maven project</description> <!-- 项目描述(可选) -->
</project>
2. 依赖管理(dependencies 和 dependencyManagement)
dependencies:声明项目直接依赖的 jar 包,会被自动下载并加入类路径。dependencyManagement:统一管理依赖版本(子模块可继承,避免版本冲突),但不会自动下载依赖,子模块需显式声明groupId和artifactId。
xml
<dependencies>
<!-- 示例:Spring Boot 核心依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.7.0</version> <!-- 版本号 -->
<!-- 可选配置 -->
<scope>compile</scope> <!-- 依赖范围(见下文详解) -->
<optional>false</optional> <!-- 是否可选(true:子模块不会自动继承) -->
<exclusions> <!-- 排除依赖(解决冲突) -->
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<!-- 统一管理版本(适合多模块项目) -->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.7.0</version> <!-- 子模块引用时无需指定版本 -->
</dependency>
</dependencies>
</dependencyManagement>
依赖范围(
scope):控制依赖在不同生命周期(编译 / 测试 / 运行)的可用性:compile(默认):编译、测试、运行都有效(如业务代码依赖)。test:仅测试时有效(如 JUnit)。provided:编译和测试有效,运行时由容器提供(如 Servlet API)。runtime:编译无效,测试和运行有效(如 JDBC 驱动)。system:类似provided,但需显式指定本地 jar 路径(不推荐)。
3. 构建配置(build)
配置项目构建规则,如编译插件、资源文件位置、输出目录等。
xml
<build>
<!-- 最终生成的文件名(默认:${artifactId}-${version}.jar) -->
<finalName>${project.artifactId}-${project.version}</finalName>
<!-- 资源文件配置(默认:src/main/resources 和 src/test/resources) -->
<resources>
<resource>
<directory>src/main/resources</directory>
<!-- 过滤资源文件中的变量(如 ${version} 会被替换) -->
<filtering>true</filtering>
<!-- 包含/排除文件 -->
<includes>
<include>**/*.xml</include>
</includes>
<excludes>
<exclude>**/*.txt</exclude>
</excludes>
</resource>
</resources>
<!-- 插件配置 -->
<plugins>
<!-- 示例:指定 Java 编译版本 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>1.8</source> <!-- 源码版本 -->
<target>1.8</target> <!-- 编译后版本 -->
<encoding>UTF-8</encoding> <!-- 编码 -->
</configuration>
</plugin>
<!-- 示例:Spring Boot 打包插件 -->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.7.0</version>
<executions>
<execution>
<goals>
<goal>repackage</goal> <!-- 重新打包为可执行 jar -->
</goals>
</execution>
</executions>
</plugin>
</plugins>
<!-- 插件管理(类似 dependencyManagement,统一插件版本) -->
<pluginManagement>
<plugins
