应使用properties-maven-plugin在initialize阶段读取${user.home}/.m2/myapp-dev.properties等外部配置文件,再通过maven-antrun-plugin复用属性执行任务,或通过settings.xml定义全局非敏感属性。

让Maven插件在构建过程中读取项目外的配置文件(如开发机上的数据库密码、测试环境URL),而不是把敏感信息硬编码进pom.xml或提交到Git仓库,是安全合规的基本要求。
用 properties-maven-plugin 加载外部 .properties 文件
第一步:确认你的 Maven 项目已启用 properties-maven-plugin 插件。该插件不内置,必须显式声明。
第二步:在 pom.xml 的 <build><plugins></plugins></build> 块中添加如下配置:
第三步:确保 【文件路径必须可被 Maven 进程读取】——比如 Windows 上写成 C:/Users/YourName/.m2/myapp-dev.properties 可能因反斜杠转义失败;统一用正斜杠或使用 ${user.home} 是更稳妥的选择。
第四步:创建该外部文件,内容格式为标准 Java properties(每行 key=value,无空格):
db.url=jdbc:mysql://localhost:3306/test
db.username=admin
db.password=secret123
让 maven-antrun-plugin 执行带外部属性的 Ant 任务
如果你需要在构建中执行复杂逻辑(比如复制配置、生成模板),且依赖外部属性值,可用 ant-run 插件配合已加载的属性。
方法一:复用上一步加载的属性
在同一个 pom.xml 的 <build><plugins></plugins></build> 中追加:
注意:这里 ${db.url} 能生效,前提是 properties-maven-plugin 已在 initialize 阶段完成加载——否则变量为空,且不会报错,只会静默跳过。
通过 settings.xml 定义全局属性供所有插件读取
适用于团队共用的非敏感配置(如私有镜像地址、通用构建参数),且希望对所有本地项目生效。
第一步:打开用户级 settings.xml(通常位于 ${user.home}/.m2/settings.xml)。
第二步:在 <settings></settings> 根节点内添加 <properties></properties> 块(不在 <profiles></profiles> 内):
第三步:在任意项目的 pom.xml 中,直接引用 ${company.nexus.url} 即可——无需额外插件,Maven 启动时自动注入。
这一步操作起来很简单,直接把文件拖进去就行。但【不要在 settings.xml 中写密码或密钥】——该文件默认权限宽松,容易被其他进程或脚本读取。











