程序员scholar 程序员scholar
首页
  • Java 基础

    • JavaSE
    • JavaIO
    • JavaAPI速查
  • Java 高级

    • JUC
    • JVM
    • Java新特性
    • 设计模式
  • Web 开发

    • Servlet
    • Java网络编程
  • Web 标准

    • HTML
    • CSS
    • JavaScript
  • 前端框架

    • Vue2
    • Vue3
    • Vue3 + TS
    • 微信小程序
    • uni-app
  • 工具与库

    • jQuery
    • Ajax
    • Axios
    • Webpack
    • Vuex
    • WebSocket
    • 第三方登录
  • 后端与语言扩展

    • ES6
    • Typescript
    • node.js
  • Element-UI
  • Apache ECharts
  • 数据结构
  • HTTP协议
  • HTTPS协议
  • 计算机网络
  • Linux常用命令
  • Windows常用命令
  • SQL数据库

    • MySQL
    • MySQL速查
  • NoSQL数据库

    • Redis
    • ElasticSearch
  • 数据库

    • MyBatis
    • MyBatis-Plus
  • 消息中间件

    • RabbitMQ
  • 服务器

    • Nginx
  • Spring框架

    • Spring6
    • SpringMVC
    • SpringBoot
    • SpringSecurity
  • SpringCould微服务

    • SpringCloud基础
    • 微服务之DDD架构思想
  • 日常必备

    • 开发常用工具包
    • Hutoll工具包
    • IDEA常用配置
    • 开发笔记
    • 日常记录
    • 项目部署
    • 网站导航
    • 产品学习
    • 英语学习
  • 代码管理

    • Maven
    • Git教程
    • Git小乌龟教程
  • 运维工具

    • Docker
    • Jenkins
    • Kubernetes
  • 算法笔记

    • 算法思想
    • 刷题笔记
  • 面试问题常见

    • 十大经典排序算法
    • 面试常见问题集锦
关于
GitHub (opens new window)
首页
  • Java 基础

    • JavaSE
    • JavaIO
    • JavaAPI速查
  • Java 高级

    • JUC
    • JVM
    • Java新特性
    • 设计模式
  • Web 开发

    • Servlet
    • Java网络编程
  • Web 标准

    • HTML
    • CSS
    • JavaScript
  • 前端框架

    • Vue2
    • Vue3
    • Vue3 + TS
    • 微信小程序
    • uni-app
  • 工具与库

    • jQuery
    • Ajax
    • Axios
    • Webpack
    • Vuex
    • WebSocket
    • 第三方登录
  • 后端与语言扩展

    • ES6
    • Typescript
    • node.js
  • Element-UI
  • Apache ECharts
  • 数据结构
  • HTTP协议
  • HTTPS协议
  • 计算机网络
  • Linux常用命令
  • Windows常用命令
  • SQL数据库

    • MySQL
    • MySQL速查
  • NoSQL数据库

    • Redis
    • ElasticSearch
  • 数据库

    • MyBatis
    • MyBatis-Plus
  • 消息中间件

    • RabbitMQ
  • 服务器

    • Nginx
  • Spring框架

    • Spring6
    • SpringMVC
    • SpringBoot
    • SpringSecurity
  • SpringCould微服务

    • SpringCloud基础
    • 微服务之DDD架构思想
  • 日常必备

    • 开发常用工具包
    • Hutoll工具包
    • IDEA常用配置
    • 开发笔记
    • 日常记录
    • 项目部署
    • 网站导航
    • 产品学习
    • 英语学习
  • 代码管理

    • Maven
    • Git教程
    • Git小乌龟教程
  • 运维工具

    • Docker
    • Jenkins
    • Kubernetes
  • 算法笔记

    • 算法思想
    • 刷题笔记
  • 面试问题常见

    • 十大经典排序算法
    • 面试常见问题集锦
关于
GitHub (opens new window)
npm

(进入注册为作者充电)

  • 依赖管理 - Maven

    • Maven 安装配置
    • Maven 仓库解析
    • Maven 项目构建
    • Maven 依赖管理
    • 手动安装Maven依赖
    • Maven 聚合
    • Maven 继承
    • Maven 属性
    • Maven 版本与测试
    • Maven 资源与多环境配置
      • Maven 资源配置
        • 1. 资源文件配置的基本结构
        • 2. 在配置文件中使用 Maven 属性
        • 3. 在 pom.xml 中定义属性
        • 4. 资源配置的高级用法
        • 5. 资源配置的常见场景
        • 6. 资源配置与打包的注意事项
      • Maven 多环境开发配置
        • 1. 多环境配置的基本格式
        • 2. 在命令行中激活指定环境
        • 3. 多环境配置的实际应用场景
    • Maven 生命周期与插件
    • 本地搭建Maven私服
    • Docker搭建Maven私服
    • Maven 上传中央仓库
    • Maven 依赖排除插件
  • 开发管理 - Git

  • Git小乌龟教程

  • 代码管理
  • 依赖管理 - Maven
scholar
2024-08-20
目录

Maven 资源与多环境配置

# Maven 资源与多环境配置

  • Maven 资源配置
    • 1. 资源文件配置的基本结构
    • 2. 在配置文件中使用 Maven 属性
    • 3. 在 pom.xml 中定义属性
    • 4. 资源配置的高级用法
    • 5. 资源配置的常见场景
    • 6. 资源配置与打包的注意事项
  • Maven 多环境开发配置
    • 1. 多环境配置的基本格式
    • 2. 在命令行中激活指定环境
    • 3. 多环境配置的实际应用场景

# Maven 资源配置

在实际开发中,项目通常需要管理和加载外部配置文件,如 jdbc.properties、静态资源(如图片、CSS、JavaScript 文件)等。Maven 提供了资源配置功能,能够帮助开发者在构建项目时动态处理资源文件的复制、过滤和打包操作。

# 1. 资源文件配置的基本结构

资源文件的配置在 pom.xml 中通过 <resources> 元素进行定义。你可以指定资源文件的路径、包含或排除的文件模式、是否进行属性过滤等。

基本示例:

<build>
    <resources>
        <resource>
            <directory>${project.basedir}/src/main/resources</directory> <!-- 指定资源文件的目录 -->
            <filtering>true</filtering> <!-- 启用属性过滤,使得资源文件中的占位符(如 ${...})可以引用 Maven 属性 -->
            <includes>
                <include>**/*.properties</include> <!-- 包含所有 .properties 文件 -->
                <include>**/*.xml</include> <!-- 包含所有 .xml 文件 -->
            </includes>
            <excludes>
                <exclude>**/test/**</exclude> <!-- 排除 test 目录中的所有文件 -->
            </excludes>
            <targetPath>classes/</targetPath> <!-- 资源被复制到的位置,相对于 target/classes 目录 -->
        </resource>
    </resources>
</build>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

代码解析:

属性 说明
directory 描述存放资源的源目录,该路径相对项目根目录(POM 路径)
filtering 是否启用属性过滤处理。设置为 true 表示支持在资源文件中引用 Maven 属性,如 ${db.url}
includes 包含的文件模式列表,如 **/*.xml 表示所有的 .xml 文件
excludes 排除的文件模式列表,如 **/*.properties 表示排除所有 .properties 文件
targetPath 资源的目标路径,该路径相对于 target/classes 目录

# 2. 在配置文件中使用 Maven 属性

启用属性过滤后,你可以在配置文件中使用 ${property-name} 的格式引用 pom.xml 中定义的属性。例如,配置 jdbc.properties 文件时,你可以将数据库连接信息动态注入:

jdbc.properties 示例:

jdbc.url=${jdbc.url}
jdbc.username=${jdbc.username}
jdbc.password=${jdbc.password}
1
2
3

# 3. 在 pom.xml 中定义属性

为了在资源文件中使用上述占位符,你需要在 pom.xml 中定义这些属性:

<properties>
    <jdbc.url>jdbc:mysql://localhost:3306/mydb</jdbc.url>
    <jdbc.username>root</jdbc.username>
    <jdbc.password>password</jdbc.password>
</properties>
1
2
3
4
5

# 4. 资源配置的高级用法

除了基础的资源文件管理,Maven 还支持多环境配置、灵活的文件包含/排除机制,以及敏感信息的集中管理。

多环境配置示例:

使用 profiles 可以为不同的环境定义不同的资源配置:

<profiles>
    <profile>
        <id>dev</id>
        <build>
            <resources>
                <resource>
                    <directory>src/main/resources/dev</directory> <!-- 开发环境配置 -->
                    <filtering>true</filtering>
                </resource>
            </resources>
        </build>
    </profile>
    <profile>
        <id>prod</id>
        <build>
            <resources>
                <resource>
                    <directory>src/main/resources/prod</directory> <!-- 生产环境配置 -->
                    <filtering>true</filtering>
                </resource>
            </resources>
        </build>
    </profile>
</profiles>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

通过命令行选择配置环境:

mvn clean package -P dev
mvn clean package -P prod
1
2

# 5. 资源配置的常见场景

  • 多环境配置:如开发、测试、生产环境,加载不同的配置文件。
  • 敏感信息管理:通过 Maven 属性管理密码、API 密钥等敏感信息,避免硬编码。
  • 集中配置管理:在 pom.xml 中定义公共属性,减少配置文件的重复内容,提高项目的可维护性。

# 6. 资源配置与打包的注意事项

  • 如果启用了 filtering,确保过滤的文件格式正确,如 .properties 或 .xml 文件。
  • 资源文件的目标路径应合理设置,避免资源文件覆盖或路径混乱。

# Maven 多环境开发配置

在项目开发中,不同的环境(如开发、测试、生产)可能需要不同的配置。Maven 通过 profiles 来实现多环境配置管理,帮助开发者根据不同环境自动切换配置。

# 1. 多环境配置的基本格式

Maven 的多环境配置通过 <profiles> 标签实现,每个环境对应一个 <profile> 标签。常见的配置包括数据库连接信息、服务端口等。

配置示例:

<profiles>
    <!-- 生产环境配置 -->
    <profile>
        <!-- 环境的唯一标识符 -->
        <id>pro_env</id>
        <!-- 环境专用属性 -->
        <properties>
            <jdbc.url>jdbc:mysql://127.1.1.1:3306/prod_db</jdbc.url>
        </properties>
        <!-- 设置为默认环境 -->
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
    </profile>

    <!-- 开发环境配置 -->
    <profile>
        <id>dev_env</id>
        <properties>
            <jdbc.url>jdbc:mysql://127.2.2.2:3306/dev_db</jdbc.url>
        </properties>
    </profile>
</profiles>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

关键点说明:

  • <id>:每个环境的唯一名称,用于标识环境,如 pro_env 表示生产环境,dev_env 表示开发环境。
  • <properties>:定义该环境的专用属性,如数据库连接 URL。属性可以在项目中通过 ${property-name} 的形式引用。
  • <activation>:配置激活条件。通过设置 activeByDefault 为 true,可以将某个环境设置为默认激活的环境。

# 2. 在命令行中激活指定环境

你可以通过 Maven 命令的 -P 参数来指定需要激活的环境:

mvn install -P dev_env
1

上述命令将激活 dev_env 环境,并执行 install 任务。如果不指定环境,Maven 会默认使用带有 activeByDefault=true 的配置。

# 3. 多环境配置的实际应用场景

  • 开发环境:本地开发时使用的配置,例如本地数据库连接。
  • 测试环境:测试阶段使用的配置,通常连接测试数据库或模拟服务。
  • 生产环境:上线后使用的配置,确保项目在生产环境中运行稳定。

多环境配置可以帮助团队在不同环境之间快速切换配置,而无需手动修改配置文件。

编辑此页 (opens new window)
上次更新: 2024/12/28, 18:32:08
Maven 版本与测试
Maven 生命周期与插件

← Maven 版本与测试 Maven 生命周期与插件→

Theme by Vdoing | Copyright © 2019-2025 程序员scholar
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式