maven插件之AutoConfig踩坑之路

AutoConfig是一款在构建时刻工作的工具,与技术框架无关,与运行时配置互补。本文介绍了其引入POM、配置插件、创建文件结构的步骤,并详细讲述了在IDEA中运行时因文件清理导致的问题及解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

AutoConfig插件是什么?

AutoConfig是一种类似于Maven Filtering的build时刻的工具。这意味着该机制与应用所采用的技术、框架完全无关,对应用完全透明,具有良好的通用性。同时,AutoConfig与运行时的配置技术并不冲突。它可以和运行时替换的placeholders以及中心配置服务器完美并存,互为补充。

AutoConfig书写placeholder的方法和Maven Filtering机制完全相同。换言之,Maven Filtering的配置文件模板可以不加修改地用在AutoConfig中。

使用步骤

引入POM文件

<build>
   <pluginManagement>
       <plugins>
           <plugin>
               <groupId>com.alibaba.citrus.tool</groupId>
               <artifactId>autoconfig-maven-plugin</artifactId>
               <version>${autoconfig-maven-plugin.version}</version>
           </plugin>
       </plugins>
   </pluginManagement>
</build>

在pom.xml中设定AutoConfig plugin

<plugin>
    <groupId>com.alibaba.citrus.tool</groupId>
    <artifactId>autoconfig-maven-plugin</artifactId>
    <executions>
        <execution>
            <phase>package</phase>
            <goals>
                <goal>autoconfig</goal>
            </goals>
        </execution>
    </executions>
</plugin>

创建文件结构

纯jar包项目,在resources资源包下META-INF目录下创建autoconf目录,再在这个目录下创建一个很重要的配置文件auto-config.xml,这个文件定义properties和property的默认值和验证规则,和生成配置文件的指令。

<?xml version="1.0" encoding="UTF-8"?>
<config>
	<group name="分组名称">
		<property name="property1" defaultValue="默认值" description="描述" required="true"/>
	</group>
	<script>
		<generate template="需要配置的模版名,相对路径" destfile="不指定,生成的目标文件和模版文件名相同" charset="模版字符编码"/>
	</script>
</config>

配置模版样例

property1=${property1}

踩坑记录

在idea上运行时,AutoConfig默认每次都会删除target/classes/META-INF/autoconf下除auto-config.xml文件外的其他配置(com.taobao.pandora.boot.autoconf.autoConfigure 33行),如果你的配置模版放在这个文件夹里会被删除从而导致出现java.lang.reflect.InvocationTargetException异常, Could not find template file,如果遇到这种情况有两种方法解决。
1,就是不让它删除文件,在idea启动参数中增加-Dautoconfig.clean.metaInf=false。
2,就是把你的配置模版放到autoconf问价夹外的地方。

参考链接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值