# autoconfig-plus-maven-plugin
**Repository Path**: Mr_Yuaniajia/autoconfig-plus-maven-plugin
## Basic Information
- **Project Name**: autoconfig-plus-maven-plugin
- **Description**: Autoconfig Plus 是一个增强版的 Maven 插件,基于阿里巴巴的 autoconfig-maven-plugin 开发。该插件在原有功能基础上增加了从远程服务器获取配置的能力,使得项目在构建过程中能够自动拉取远程配置并应用到应用程序中。
- **Primary Language**: Java
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 2
- **Forks**: 1
- **Created**: 2025-08-27
- **Last Updated**: 2025-12-02
## Categories & Tags
**Categories**: Uncategorized
**Tags**: Maven, plugin
## README
# Autoconfig Plus Maven Plugin
## 项目简介
Autoconfig Plus 是一个增强版的 Maven 插件,基于阿里巴巴的 `autoconfig-maven-plugin` 开发。该插件在原有功能基础上增加了从远程服务器获取配置的能力,使得项目在构建过程中能够自动拉取远程配置并应用到应用程序中。
主要功能:
- 支持从远程 URL 获取配置信息
- 自动生成 `antx.properties` 配置文件
- 无缝集成阿里巴巴的 autoconfig 插件功能
- 在 Maven package 阶段自动执行配置替换
## 使用方式
### 1. 添加插件依赖
在项目的 `pom.xml` 中添加以下插件配置:
```xml
com.funnylife.maven.plugin
autoconfig-plus-maven-plugin
1.0.0
package
autoconfig-plus
http://your-config-server/config
UTF-8
true
false
rewriteLocal-properties
generate-resources
autoconfig-plus
http://your-config-server/config
${project.basedir}/src/main/resources
```
### 2. 配置参数说明
- 仅提供本插件新增参数说明,`autoconfig-maven-plugin` 插件参数说明参考 [3.3](#3.3常用配置参数) 部分说明
| 参数名 | 是否必需 | 默认值 | 说明 |
|---------------------|----------|--------|--------------------------|
| `remoteConfigUrl` | 是 | 无 | 远程配置获取的 URL 地址 |
### 3. Alibaba Autoconfig Maven Plugin 完整用法
#### 3.1 模板配置文件
Autoconfig 使用模板文件来定义需要替换的配置项。模板文件通常以 `.tpl` 或 `.vm` 结尾,放置在 `src/main/resources/META-INF/autoconf` 目录下。
示例模板文件 `application.properties.tpl`:
```properties
# 数据库配置
jdbc.url=@{database.url}
jdbc.username=@{database.username}
jdbc.password=@{database.password}
# Redis配置
redis.host=@{redis.host}
redis.port=@{redis.port}
redis.password=@{redis.password}
# 应用配置
app.name=@{app.name}
app.version=@{app.version}
```
#### 3.2 自动配置描述符文件
在 `src/main/resources/META-INF/autoconf` 目录下创建 `auto-config.xml` 文件,用于描述配置项:
```xml
```
#### 3.3 常用配置参数 {#3.3常用配置参数}
| 参数名 | 说明 |
|-----------------------|-------------------------------------|
| `dest` | 要配置的目标包文件或目录 |
| `explodedDirectory` | 解压包的目标目录 |
| `exploding` | 是否将包解压到目录 |
| `charset` | 控制台字符编码 |
| `strict` | 严格模式,配置项缺失时是否报错 |
| `interactive` | 交互模式开关 |
| `skip` | 是否跳过自动配置 |
| `type` | 包类型: war, jar, ear 等 |
| `userProperties` | 用户属性文件 |
| `descriptors` | 包含/排除描述符文件,如 conf/auto-config.xml |
| `packages` | 包含/排除包文件,如 target/*.war |
### 4. 远程配置接口要求
远程配置服务需要提供一个 RESTful 接口,返回格式为 JSON 的键值对,例如:
```json
{
"app.name": "my-application",
"database.url": "jdbc:mysql://localhost:3306/mydb",
"redis.host": "localhost",
"redis.port": "6379"
}
```
### 5. 执行流程
1. 插件在 Maven package 阶段执行
2. 从 `remoteConfigUrl` 拉取配置信息
3. 默认将配置信息写入项目根目录的 `antx.properties` 文件
4. 调用官方 `autoconfig-maven-plugin` 执行配置替换
5. 完成构建过程
### 6. 使用示例
```bash
# 执行 Maven 构建,自动应用远程配置
mvn clean package
# 跳过 autoconfig 插件执行
mvn clean package -Dautoconfig.skip=true
```
## 注意事项
- 确保远程配置服务在构建时可访问
- 插件会在项目根目录生成 `antx.properties` 文件,注意不要提交到版本控制系统
- 如果需要自定义`antx.properties`文件位置,可以通过 `userProperties` 参数指定输出文件夹
- 本插件已经包含 `autoconfig-maven-plugin` 插件,无需再引入该插件相应依赖